From cb002400b9edb3f04032de389923eab6ef176a1a Mon Sep 17 00:00:00 2001 From: James Graham Date: Tue, 19 Sep 2017 21:35:06 +0100 Subject: [PATCH 01/56] Bug 1402002 - Update web-platform-tests to revision b88862e6e574c2116f8efea0e982f6776a3c4b22, a=testonly MozReview-Commit-ID: FlhL7aMvsiY --HG-- rename : testing/web-platform/tests/clipboard/OWNERS => testing/web-platform/tests/clipboard-apis/OWNERS rename : testing/web-platform/tests/css-font-display/font-display-ref.html => testing/web-platform/tests/css-fonts/font-display/font-display-ref.html rename : testing/web-platform/tests/css-font-display/font-display.html => testing/web-platform/tests/css-fonts/font-display/font-display.html rename : testing/web-platform/tests/css/css-logical-properties-1/OWNERS => testing/web-platform/tests/css/css-logical-1/OWNERS rename : testing/web-platform/tests/css/css-logical-props-1/cascading-001-ref.html => testing/web-platform/tests/css/css-logical-1/cascading-001-ref.html rename : testing/web-platform/tests/css/css-logical-props-1/cascading-001.html => testing/web-platform/tests/css/css-logical-1/cascading-001.html rename : testing/web-platform/tests/css/css-logical-properties-1/logicalprops-block-size-vlr.html => testing/web-platform/tests/css/css-logical-1/logicalprops-block-size-vlr.html rename : testing/web-platform/tests/css/css-logical-properties-1/logicalprops-block-size.html => testing/web-platform/tests/css/css-logical-1/logicalprops-block-size.html rename : testing/web-platform/tests/css/css-logical-properties-1/logicalprops-inline-size-vlr.html => testing/web-platform/tests/css/css-logical-1/logicalprops-inline-size-vlr.html rename : testing/web-platform/tests/css/css-logical-properties-1/logicalprops-inline-size.html => testing/web-platform/tests/css/css-logical-1/logicalprops-inline-size.html rename : testing/web-platform/tests/css/css-logical-properties-1/resources/style-check.js => testing/web-platform/tests/css/css-logical-1/resources/style-check.js rename : testing/web-platform/tests/payment-request/payment-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html => testing/web-platform/tests/feature-policy/payment-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html rename : testing/web-platform/tests/payment-request/payment-allowed-by-feature-policy-attribute.https.sub.html => testing/web-platform/tests/feature-policy/payment-allowed-by-feature-policy-attribute.https.sub.html rename : testing/web-platform/tests/payment-request/payment-allowed-by-feature-policy.https.sub.html => testing/web-platform/tests/feature-policy/payment-allowed-by-feature-policy.https.sub.html rename : testing/web-platform/tests/payment-request/payment-allowed-by-feature-policy.https.sub.html.headers => testing/web-platform/tests/feature-policy/payment-allowed-by-feature-policy.https.sub.html.headers rename : testing/web-platform/tests/payment-request/payment-default-feature-policy.https.sub.html => testing/web-platform/tests/feature-policy/payment-default-feature-policy.https.sub.html rename : testing/web-platform/tests/payment-request/payment-disabled-by-feature-policy.https.sub.html => testing/web-platform/tests/feature-policy/payment-disabled-by-feature-policy.https.sub.html rename : testing/web-platform/tests/payment-request/payment-disabled-by-feature-policy.https.sub.html.headers => testing/web-platform/tests/feature-policy/payment-disabled-by-feature-policy.https.sub.html.headers rename : testing/web-platform/tests/payment-request/payment-request-update-event-constructor.http.html => testing/web-platform/tests/payment-request/PaymentRequestUpdateEvent/constructor.http.html rename : testing/web-platform/tests/payment-request/payment-request-update-event-updatewith-method.https.html => testing/web-platform/tests/payment-request/PaymentRequestUpdateEvent/updatewith-method.https.html --- testing/web-platform/meta/MANIFEST.json | 4930 +++++++++--- testing/web-platform/meta/mozilla-sync | 4 +- testing/web-platform/moz.build | 12 - .../2dcontext/tools/current-work-canvas.xhtml | 7021 ++++++++++------- .../tests/2dcontext/tools/gentestutils.py | 310 +- .../tests/2dcontext/tools/name2dir.yaml | 24 +- .../tests/2dcontext/tools/spec.yaml | 4 +- .../tests/2dcontext/tools/specextract.py | 41 +- testing/web-platform/tests/FileAPI/OWNERS | 1 - testing/web-platform/tests/README.md | 4 + ...-basic-cors-safelisted-request-headers.htm | 32 + ...basic-cors-safelisted-response-headers.htm | 31 + ...cess-control-basic-get-fail-non-simple.htm | 31 + ...-with-non-cors-safelisted-content-type.htm | 2 +- ...-control-preflight-async-method-denied.htm | 38 + ...-control-preflight-async-not-supported.htm | 37 + ...access-control-preflight-headers-async.htm | 35 + ...ontrol-preflight-request-header-sorted.htm | 28 + ...ntrol-preflight-request-headers-origin.htm | 29 + ...l-preflight-request-invalid-status-400.htm | 28 + ...flight-request-must-not-contain-cookie.htm | 57 + ...s-control-preflight-sync-header-denied.htm | 39 + ...s-control-preflight-sync-method-denied.htm | 38 + ...s-control-preflight-sync-not-supported.htm | 38 + ...ccess-control-recursive-failed-request.htm | 38 + ...access-control-response-with-body-sync.htm | 25 + .../access-control-response-with-body.htm | 29 + ...-control-response-with-exposed-headers.htm | 38 + ...rol-sandboxed-iframe-allow-origin-null.htm | 32 + .../access-control-sandboxed-iframe-allow.htm | 32 + ...ndboxed-iframe-denied-without-wildcard.htm | 43 + ...access-control-sandboxed-iframe-denied.htm | 41 + .../allow-lists-starting-with-comma.htm | 30 +- .../resources/access-control-allow-lists.py | 6 +- .../access-control-allow-with-body.py | 15 + ...l-basic-cors-safelisted-request-headers.py | 14 + ...ontrol-basic-whitelist-response-headers.py | 19 + .../resources/access-control-cookie.py | 16 + ...control-preflight-request-header-sorted.py | 18 + ...ontrol-preflight-request-headers-origin.py | 12 + ...eflight-request-must-not-contain-cookie.py | 12 + .../access-control-sandboxed-iframe.html | 24 + .../tests/accelerometer/idlharness.https.html | 50 +- .../tests/ambient-light/idlharness.https.html | 46 +- testing/web-platform/tests/auxclick/OWNERS | 1 - .../content-security-policy.https.window.js | 20 + .../credentials-in-url.https.window.js | 32 + .../dangling-markup.https.window.js | 17 + ...ontent-and-allowed-schemes.https.window.js | 80 + .../port-blocking.https.window.js | 35 + .../tests/background-fetch/resources/sw.js | 1 + .../tests/background-fetch/resources/utils.js | 26 + .../{clipboard => clipboard-apis}/OWNERS | 0 ...bject-src-applet-archive-codebase.sub.html | 41 - ...plet-archive-codebase.sub.html.sub.headers | 6 - .../object-src-applet-archive.sub.html | 41 - ...ct-src-applet-archive.sub.html.sub.headers | 6 - .../object-src-applet-code-codebase.sub.html | 41 - ...-applet-code-codebase.sub.html.sub.headers | 6 - .../object-src-applet-code.sub.html | 41 - ...bject-src-applet-code.sub.html.sub.headers | 6 - testing/web-platform/tests/core-aam/OWNERS | 2 + testing/web-platform/tests/core-aam/README.md | 59 + .../tests/core-aam/alert-manual.html | 96 + .../tests/core-aam/alertdialog-manual.html | 84 + .../tests/core-aam/application-manual.html | 90 + .../core-aam/aria-atomic_false-manual.html | 86 + .../core-aam/aria-atomic_true-manual.html | 122 + .../aria-autocomplete_both_new-manual.html | 70 + .../aria-autocomplete_inline_new-manual.html | 70 + .../aria-autocomplete_list_new-manual.html | 70 + .../core-aam/aria-busy_false-manual.html | 72 + .../tests/core-aam/aria-busy_true-manual.html | 72 + ...aria-checked_false_on_checkbox-manual.html | 86 + ...checked_false_on_menuitemradio-manual.html | 100 + .../core-aam/aria-checked_mixed-manual.html | 92 + .../aria-checked_true_on_checkbox-manual.html | 86 + ...-checked_true_on_menuitemradio-manual.html | 100 + .../core-aam/aria-colcount_new-manual.html | 98 + .../core-aam/aria-colindex_new-manual.html | 88 + .../core-aam/aria-colspan_new-manual.html | 88 + .../tests/core-aam/aria-controls-manual.html | 101 + ...th_non-false_allowed_value_new-manual.html | 78 + ...nt_with_unrecognized_value_new-manual.html | 78 + .../core-aam/aria-describedby-manual.html | 115 + .../core-aam/aria-details_new-manual.html | 88 + .../core-aam/aria-disabled_false-manual.html | 72 + .../core-aam/aria-disabled_true-manual.html | 90 + .../core-aam/aria-dropeffect_copy-manual.html | 72 + .../aria-dropeffect_execute-manual.html | 72 + .../core-aam/aria-dropeffect_link-manual.html | 72 + .../core-aam/aria-dropeffect_move-manual.html | 72 + .../core-aam/aria-dropeffect_none-manual.html | 56 + .../aria-dropeffect_popup-manual.html | 72 + .../core-aam/aria-errormessage-manual.html | 97 + .../core-aam/aria-expanded_false-manual.html | 78 + .../core-aam/aria-expanded_true-manual.html | 78 + .../tests/core-aam/aria-flowto-manual.html | 97 + .../core-aam/aria-grabbed_false-manual.html | 72 + .../core-aam/aria-grabbed_true-manual.html | 72 + .../aria-haspopup_dialog_new-manual.html | 86 + .../core-aam/aria-haspopup_false-manual.html | 56 + .../aria-haspopup_listbox_new-manual.html | 86 + .../aria-haspopup_menu_new-manual.html | 86 + .../aria-haspopup_tree_new-manual.html | 86 + .../core-aam/aria-haspopup_true-manual.html | 86 + .../core-aam/aria-hidden_true-manual.html | 72 + .../core-aam/aria-invalid_false-manual.html | 72 + .../core-aam/aria-invalid_grammar-manual.html | 84 + .../aria-invalid_spelling-manual.html | 84 + .../core-aam/aria-invalid_true-manual.html | 84 + ...nvalid_with_unrecognized_value-manual.html | 84 + .../aria-keyshortcuts_new-manual.html | 64 + .../tests/core-aam/aria-label-manual.html | 72 + .../core-aam/aria-labelledby-manual.html | 121 + .../aria-level_on_heading_new-manual.html | 78 + .../aria-level_on_non-heading-manual.html | 80 + .../core-aam/aria-live_assertive-manual.html | 110 + .../tests/core-aam/aria-live_off-manual.html | 110 + .../core-aam/aria-live_polite-manual.html | 110 + .../core-aam/aria-modal_false_new-manual.html | 81 + .../core-aam/aria-modal_true_new-manual.html | 81 + .../core-aam/aria-multiline_false-manual.html | 68 + .../core-aam/aria-multiline_true-manual.html | 76 + .../aria-multiselectable_false-manual.html | 66 + .../aria-multiselectable_true-manual.html | 74 + .../aria-orientation_horizontal-manual.html | 84 + ...aria-orientation_undefined_new-manual.html | 62 + .../aria-orientation_vertical-manual.html | 84 + ...s_may_need_manual_verification-manual.html | 143 + .../core-aam/aria-placeholder_new-manual.html | 72 + .../tests/core-aam/aria-posinset-manual.html | 80 + .../core-aam/aria-pressed_false-manual.html | 72 + .../core-aam/aria-pressed_mixed-manual.html | 72 + .../core-aam/aria-pressed_true-manual.html | 72 + .../core-aam/aria-readonly_false-manual.html | 80 + ...is_unspecified_on_gridcell_new-manual.html | 82 + ...aria-readonly_true_on_checkbox-manual.html | 78 + ...ia-readonly_true_on_radiogroup-manual.html | 90 + .../aria-readonly_true_on_textbox-manual.html | 78 + .../tests/core-aam/aria-relevant-manual.html | 110 + .../core-aam/aria-required_true-manual.html | 74 + ...y_or_whitespace_characters_new-manual.html | 56 + .../aria-roledescription_new-manual.html | 72 + .../core-aam/aria-rowcount_new-manual.html | 98 + .../core-aam/aria-rowindex_new-manual.html | 98 + .../core-aam/aria-rowspan_new-manual.html | 88 + .../core-aam/aria-selected_false-manual.html | 88 + .../core-aam/aria-selected_true-manual.html | 88 + .../core-aam/aria-setsize_-1-manual.html | 81 + .../tests/core-aam/aria-setsize_3-manual.html | 81 + .../core-aam/aria-sort_ascending-manual.html | 82 + .../core-aam/aria-sort_descending-manual.html | 82 + .../tests/core-aam/aria-sort_none-manual.html | 60 + .../core-aam/aria-sort_other-manual.html | 82 + .../tests/core-aam/aria-valuemax-manual.html | 72 + .../tests/core-aam/aria-valuemin-manual.html | 72 + .../tests/core-aam/aria-valuenow-manual.html | 78 + .../tests/core-aam/aria-valuetext-manual.html | 78 + .../tests/core-aam/article-manual.html | 110 + .../tests/core-aam/banner_new-manual.html | 114 + ..._with_aria-haspopup_dialog_new-manual.html | 90 + ...on_with_aria-haspopup_true_new-manual.html | 90 + ...aria-pressed_and_aria-haspopup-manual.html | 84 + ...defined_value_for_aria-pressed-manual.html | 92 + .../tests/core-aam/cell_new-manual.html | 114 + .../tests/core-aam/checkbox-manual.html | 84 + .../tests/core-aam/columnheader-manual.html | 102 + .../tests/core-aam/combobox-manual.html | 112 + .../core-aam/complementary_new-manual.html | 114 + .../core-aam/contentinfo_new-manual.html | 114 + .../tests/core-aam/definition-manual.html | 96 + .../tests/core-aam/dialog-manual.html | 84 + .../tests/core-aam/directory-manual.html | 84 + .../tests/core-aam/document-manual.html | 92 + .../tests/core-aam/feed_new-manual.html | 106 + .../tests/core-aam/figure_new-manual.html | 104 + .../tests/core-aam/form_new-manual.html | 108 + .../tests/core-aam/grid-manual.html | 165 + .../tests/core-aam/gridcell-manual.html | 120 + .../tests/core-aam/group-manual.html | 84 + .../tests/core-aam/heading-manual.html | 96 + .../tests/core-aam/img-manual.html | 98 + .../tests/core-aam/link-manual.html | 116 + .../tests/core-aam/list-manual.html | 94 + ..._owned_by_or_child_of_combobox-manual.html | 112 + ..._owned_by_or_child_of_combobox-manual.html | 115 + .../tests/core-aam/listitem-manual.html | 106 + .../tests/core-aam/log-manual.html | 138 + .../tests/core-aam/main_new-manual.html | 108 + .../tests/core-aam/marquee-manual.html | 128 + .../tests/core-aam/math-manual.html | 90 + .../tests/core-aam/menu-manual.html | 106 + .../tests/core-aam/menubar-manual.html | 106 + ...not_owned_by_or_child_of_group-manual.html | 86 + ...tem_owned_by_or_child_of_group-manual.html | 89 + .../core-aam/menuitemcheckbox-manual.html | 100 + .../tests/core-aam/menuitemradio-manual.html | 106 + .../tests/core-aam/navigation_new-manual.html | 108 + .../tests/core-aam/none_new-manual.html | 72 + .../tests/core-aam/note-manual.html | 90 + .../option_inside_combobox-manual.html | 90 + .../option_not_inside_combobox-manual.html | 90 + .../tests/core-aam/presentation-manual.html | 72 + .../tests/core-aam/progressbar-manual.html | 110 + .../tests/core-aam/radio-manual.html | 96 + .../tests/core-aam/radiogroup-manual.html | 86 + ...on_with_an_accessible_name_new-manual.html | 114 + ...without_an_accessible_name_new-manual.html | 84 + .../core-aam/row_inside_treegrid-manual.html | 100 + .../row_not_inside_treegrid-manual.html | 100 + .../tests/core-aam/rowgroup-manual.html | 81 + .../tests/core-aam/rowheader-manual.html | 102 + .../tests/core-aam/scrollbar-manual.html | 104 + .../tests/core-aam/search_new-manual.html | 108 + .../tests/core-aam/searchbox_new-manual.html | 110 + .../separator_focusable_new-manual.html | 104 + .../separator_non-focusable-manual.html | 84 + .../tests/core-aam/slider-manual.html | 104 + .../tests/core-aam/spinbutton-manual.html | 104 + .../tests/core-aam/status-manual.html | 134 + .../tests/core-aam/switch_new-manual.html | 116 + .../tests/core-aam/tab-manual.html | 86 + .../tests/core-aam/table_new-manual.html | 153 + .../tests/core-aam/tablist-manual.html | 112 + .../tests/core-aam/tabpanel-manual.html | 84 + .../tests/core-aam/term_new-manual.html | 96 + ...x_when_aria-multiline_is_false-manual.html | 104 + ...ox_when_aria-multiline_is_true-manual.html | 104 + .../tests/core-aam/timer-manual.html | 132 + .../tests/core-aam/toolbar-manual.html | 84 + .../tests/core-aam/tooltip-manual.html | 84 + .../tests/core-aam/tree-manual.html | 106 + .../tests/core-aam/treegrid-manual.html | 120 + .../tests/core-aam/treeitem-manual.html | 86 + .../font-display}/font-display-ref.html | 0 .../font-display}/font-display.html | 0 .../resources/slow-ahem-loading.py | 2 +- .../css-paint-api/background-image-alpha.html | 4 +- .../tests/css-paint-api/paint-arguments.html | 2 +- .../paint-function-arguments.html | 2 +- .../parse-input-arguments-016.html | 4 +- .../parse-input-arguments-017.html | 4 +- .../parse-input-arguments-019.html | 47 + .../parse-input-arguments-020.html | 46 + .../parse-input-arguments-021.html | 49 + .../parse-input-arguments-022.html | 47 + .../attribute-value-selector-001-ref.xht | 4 +- .../attribute-value-selector-001.xht | 4 +- .../attribute-value-selector-002.xht | 8 +- .../attribute-value-selector-003.xht | 4 +- .../tests/css/CSS2/syntax/core-syntax-001.xht | 1 + .../tests/css/CSS2/syntax/core-syntax-002.xht | 1 + .../tests/css/CSS2/syntax/core-syntax-003.xht | 1 + .../tests/css/CSS2/syntax/core-syntax-004.xht | 1 + .../tests/css/CSS2/syntax/core-syntax-006.xht | 1 + .../tests/css/CSS2/syntax/core-syntax-007.xht | 1 + .../tests/css/CSS2/syntax/core-syntax-008.xht | 3 +- .../tests/css/CSS2/syntax/core-syntax-009.xht | 1 + ...rid-alignment-implies-size-change-001.html | 41 + ...rid-alignment-implies-size-change-002.html | 41 + ...rid-alignment-implies-size-change-003.html | 41 + ...rid-alignment-implies-size-change-004.html | 41 + ...rid-alignment-implies-size-change-005.html | 41 + ...rid-alignment-implies-size-change-006.html | 41 + ...rid-alignment-implies-size-change-007.html | 41 + ...rid-alignment-implies-size-change-008.html | 41 + ...rid-alignment-implies-size-change-009.html | 41 + ...rid-alignment-implies-size-change-010.html | 41 + ...rid-alignment-implies-size-change-011.html | 41 + ...rid-alignment-implies-size-change-012.html | 41 + ...rid-alignment-implies-size-change-013.html | 41 + ...rid-alignment-implies-size-change-014.html | 41 + ...rid-alignment-implies-size-change-015.html | 41 + ...rid-alignment-implies-size-change-016.html | 41 + ...rid-alignment-implies-size-change-017.html | 41 + ...rid-alignment-implies-size-change-018.html | 41 + ...rid-alignment-implies-size-change-019.html | 41 + ...rid-alignment-implies-size-change-020.html | 41 + ...rid-alignment-implies-size-change-021.html | 41 + ...rid-alignment-implies-size-change-022.html | 41 + ...rid-alignment-implies-size-change-023.html | 41 + ...rid-alignment-implies-size-change-024.html | 41 + ...rid-alignment-implies-size-change-025.html | 41 + ...rid-alignment-implies-size-change-026.html | 41 + ...rid-alignment-implies-size-change-027.html | 41 + ...rid-alignment-implies-size-change-028.html | 42 + ...rid-alignment-implies-size-change-029.html | 41 + ...rid-alignment-implies-size-change-030.html | 41 + ...rid-alignment-implies-size-change-031.html | 41 + ...rid-alignment-implies-size-change-032.html | 41 + ...rid-alignment-implies-size-change-033.html | 41 + ...rid-alignment-implies-size-change-034.html | 41 + ...rid-alignment-implies-size-change-035.html | 41 + ...rid-alignment-implies-size-change-036.html | 41 + .../grid-content-distribution-001.html | 1 + .../grid-content-distribution-002.html | 1 + .../grid-content-distribution-003.html | 1 + .../grid-content-distribution-004.html | 1 + .../grid-content-distribution-005.html | 1 + .../grid-content-distribution-006.html | 1 + .../grid-content-distribution-007.html | 1 + .../grid-content-distribution-008.html | 1 + .../grid-content-distribution-009.html | 1 + .../grid-content-distribution-010.html | 1 + .../grid-content-distribution-011.html | 1 + .../grid-content-distribution-012.html | 1 + .../grid-content-distribution-013.html | 1 + .../grid-content-distribution-014.html | 1 + .../grid-content-distribution-015.html | 1 + .../grid-content-distribution-016.html | 1 + .../grid-content-distribution-017.html | 1 + .../grid-content-distribution-019.html | 1 + .../grid-content-distribution-020.html | 1 + .../grid-content-distribution-021.html | 1 + .../grid-content-distribution-022.html | 1 + .../grid-content-distribution-023.html | 1 + .../grid-content-distribution-024.html | 1 + .../grid-content-distribution-025.html | 1 + ...istribution-with-collapsed-tracks-001.html | 4 +- ...istribution-with-collapsed-tracks-002.html | 3 +- ...istribution-with-collapsed-tracks-003.html | 3 +- ...istribution-with-collapsed-tracks-004.html | 3 +- ...istribution-with-collapsed-tracks-005.html | 3 +- ...istribution-with-collapsed-tracks-006.html | 3 +- ...istribution-with-collapsed-tracks-007.html | 3 +- ...istribution-with-collapsed-tracks-008.html | 3 +- ...istribution-with-collapsed-tracks-009.html | 3 +- ...istribution-with-collapsed-tracks-010.html | 3 +- ...istribution-with-collapsed-tracks-011.html | 3 +- ...istribution-with-collapsed-tracks-012.html | 3 +- ...istribution-with-collapsed-tracks-013.html | 3 +- ...istribution-with-collapsed-tracks-014.html | 3 +- ...istribution-with-collapsed-tracks-015.html | 3 +- ...istribution-with-collapsed-tracks-016.html | 3 +- ...istribution-with-collapsed-tracks-017.html | 3 +- ...istribution-with-collapsed-tracks-018.html | 3 +- ...istribution-with-collapsed-tracks-019.html | 3 +- ...istribution-with-collapsed-tracks-020.html | 3 +- ...istribution-with-collapsed-tracks-021.html | 3 +- ...istribution-with-collapsed-tracks-022.html | 3 +- ...istribution-with-collapsed-tracks-023.html | 3 +- ...istribution-with-collapsed-tracks-024.html | 3 +- .../grid-self-alignment-stretch-001.html | 1 + .../grid-self-alignment-stretch-002.html | 1 + .../grid-self-alignment-stretch-003.html | 1 + .../grid-self-alignment-stretch-004.html | 1 + .../grid-self-alignment-stretch-005.html | 1 + .../grid-self-alignment-stretch-006.html | 1 + .../grid-self-alignment-stretch-007.html | 1 + .../grid-self-alignment-stretch-008.html | 1 + .../grid-self-alignment-stretch-009.html | 1 + .../grid-self-alignment-stretch-010.html | 1 + .../grid-self-alignment-stretch-011.html | 1 + .../grid-self-alignment-stretch-012.html | 1 + .../grid-self-alignment-stretch-013.html | 1 + .../grid-self-alignment-stretch-014.html | 1 + .../grid-self-alignment-stretch-015.html | 1 + .../grid-self-alignment-stretch-016.html | 1 + ...elf-alignment-stretch-vertical-lr-001.html | 1 + ...elf-alignment-stretch-vertical-lr-002.html | 1 + ...elf-alignment-stretch-vertical-lr-003.html | 1 + ...elf-alignment-stretch-vertical-lr-004.html | 1 + ...elf-alignment-stretch-vertical-lr-005.html | 1 + ...elf-alignment-stretch-vertical-lr-006.html | 1 + ...elf-alignment-stretch-vertical-lr-007.html | 1 + ...elf-alignment-stretch-vertical-lr-008.html | 1 + ...elf-alignment-stretch-vertical-lr-009.html | 1 + ...elf-alignment-stretch-vertical-lr-010.html | 1 + ...elf-alignment-stretch-vertical-lr-011.html | 1 + ...elf-alignment-stretch-vertical-lr-012.html | 1 + ...elf-alignment-stretch-vertical-lr-013.html | 1 + ...elf-alignment-stretch-vertical-lr-014.html | 1 + ...elf-alignment-stretch-vertical-lr-015.html | 1 + ...elf-alignment-stretch-vertical-lr-016.html | 1 + ...elf-alignment-stretch-vertical-rl-001.html | 1 + ...elf-alignment-stretch-vertical-rl-002.html | 1 + ...elf-alignment-stretch-vertical-rl-003.html | 1 + ...elf-alignment-stretch-vertical-rl-004.html | 1 + ...elf-alignment-stretch-vertical-rl-005.html | 1 + ...elf-alignment-stretch-vertical-rl-006.html | 1 + ...elf-alignment-stretch-vertical-rl-007.html | 1 + ...elf-alignment-stretch-vertical-rl-008.html | 1 + ...elf-alignment-stretch-vertical-rl-009.html | 1 + ...elf-alignment-stretch-vertical-rl-010.html | 1 + ...elf-alignment-stretch-vertical-rl-011.html | 1 + ...elf-alignment-stretch-vertical-rl-012.html | 1 + ...elf-alignment-stretch-vertical-rl-013.html | 1 + ...elf-alignment-stretch-vertical-rl-014.html | 1 + ...elf-alignment-stretch-vertical-rl-015.html | 1 + ...elf-alignment-stretch-vertical-rl-016.html | 2 + ...f-baseline-changes-grid-area-size-001.html | 1 + ...f-baseline-changes-grid-area-size-002.html | 1 + ...f-baseline-changes-grid-area-size-003.html | 1 + ...f-baseline-changes-grid-area-size-004.html | 1 + ...f-baseline-changes-grid-area-size-005.html | 1 + ...f-baseline-changes-grid-area-size-006.html | 1 + ...f-baseline-changes-grid-area-size-007.html | 1 + ...f-baseline-changes-grid-area-size-008.html | 1 + ...f-baseline-changes-grid-area-size-009.html | 1 + ...f-baseline-changes-grid-area-size-010.html | 1 + ...f-baseline-changes-grid-area-size-011.html | 1 + ...f-baseline-changes-grid-area-size-012.html | 1 + .../grid-definition/grid-shorthand-001.html | 37 + .../grid-minimum-size-grid-items-006.html | 2 +- .../grid-minimum-size-grid-items-007.html | 10 +- .../grid-minimum-size-grid-items-008.html | 2 +- .../grid-minimum-size-grid-items-009.html | 9 +- .../grid-minimum-size-grid-items-021.html | 14 +- .../grid-items/support/100x50-green.png | Bin 15130 -> 0 bytes .../grid-items/support/25x50-green.png | Bin 0 -> 99 bytes .../grid-items/support/50x100-green.png | Bin 15180 -> 0 bytes .../grid-items/support/50x25-green.png | Bin 0 -> 100 bytes .../css/css-grid-1/support/style-change.js | 5 + .../OWNERS | 0 .../cascading-001-ref.html | 0 .../cascading-001.html | 0 .../logicalprops-block-size-vlr.html | 0 .../logicalprops-block-size.html | 0 .../logicalprops-inline-size-vlr.html | 0 .../logicalprops-inline-size.html | 0 .../logicalprops-quirklength.html | 2 +- .../resources/style-check.js | 0 .../fixed-layout-calc-width-001.html | 35 + ...-layout-excess-width-distribution-001.html | 43 + .../css-tables-3/support/check-layout-th.js | 190 + .../css-text-3/white-space/pre-wrap-001.html | 24 + .../css-text-3/white-space/pre-wrap-002.html | 25 + .../css-text-3/white-space/pre-wrap-003.html | 25 + .../css-text-3/white-space/pre-wrap-004.html | 25 + .../css-text-3/white-space/pre-wrap-005.html | 25 + .../css-text-3/white-space/pre-wrap-006.html | 25 + .../css-text-3/white-space/pre-wrap-007.html | 26 + .../css-text-3/white-space/pre-wrap-008.html | 27 + .../css-text-3/white-space/pre-wrap-009.html | 27 + .../css-text-3/white-space/pre-wrap-010.html | 27 + .../css-text-3/white-space/pre-wrap-011.html | 27 + .../css-text-3/white-space/pre-wrap-012.html | 26 + .../css-text-3/white-space/pre-wrap-013.html | 26 + .../css-text-3/white-space/pre-wrap-014.html | 27 + .../reference/pre-wrap-001-ref.html | 16 + .../reference/textarea-pre-wrap-001-ref.html | 33 + .../white-space/textarea-pre-wrap-001.html | 35 + .../white-space/textarea-pre-wrap-002.html | 36 + .../white-space/textarea-pre-wrap-003.html | 36 + .../white-space/textarea-pre-wrap-004.html | 36 + .../white-space/textarea-pre-wrap-005.html | 36 + .../white-space/textarea-pre-wrap-006.html | 36 + .../white-space/textarea-pre-wrap-007.html | 37 + .../white-space/textarea-pre-wrap-008.html | 38 + .../white-space/textarea-pre-wrap-009.html | 38 + .../white-space/textarea-pre-wrap-010.html | 38 + .../white-space/textarea-pre-wrap-011.html | 38 + .../white-space/textarea-pre-wrap-012.html | 37 + .../white-space/textarea-pre-wrap-013.html | 37 + .../white-space/textarea-pre-wrap-014.html | 38 + .../css/css-transitions-1/events-001.html | 330 +- .../css/css-transitions-1/events-002.html | 167 +- .../css/css-transitions-1/events-003.html | 163 +- .../css/css-transitions-1/events-004.html | 189 +- .../css/css-transitions-1/events-005.html | 191 +- .../css/css-transitions-1/events-006.html | 173 +- .../css/css-transitions-1/events-007.html | 98 +- .../css/css-transitions-1/support/helper.js | 103 + .../tests/css/css-ui-3/caret-color-020.html | 9 +- .../tests/css/css-ui-3/text-overflow-006.html | 15 +- .../tests/css/css-ui-3/text-overflow-023.html | 35 + .../absolute-length-units-001.html | 43 + .../vh_not_refreshing_on_chrome-ref.html | 17 +- ...h_not_refreshing_on_chrome_iframe-ref.html | 7 +- .../vh_not_refreshing_on_chrome_iframe.html | 12 +- .../vh_not_refreshing_on_chrome.html | 17 +- .../web-platform/tests/css/geometry-1/OWNERS | 1 - .../tests/css/geometry-1/spec-examples.html | 92 + .../tests/css/work-in-progress/opera/OWNERS | 2 +- testing/web-platform/tests/cssom-view/OWNERS | 1 - .../tests/cssom-view/elementFromPosition.html | 2 +- .../tests/cssom-view/interfaces.html | 67 + .../scrollBoundaryBehavior-manual.html | 151 + .../tests/cssom-view/scrollintoview.html | 112 + .../tests/cssom-view/ttwf-scrollintoview.html | 32 - testing/web-platform/tests/cssom/OWNERS | 1 - .../web-platform/tests/cssom/interfaces.html | 227 +- .../tests/cssom/support/xmlss-pi.xhtml | 1 + testing/web-platform/tests/docs/OWNERS | 1 - .../web-platform/tests/docs/introduction.md | 2 +- testing/web-platform/tests/dom/OWNERS | 1 - .../tests/dom/nodes/Node-cloneNode.html | 1 - ...edia-default-feature-policy.https.sub.html | 21 + .../web-platform/tests/feature-policy/OWNERS | 1 + .../tests/feature-policy/README.md | 8 +- ...-attribute-redirect-on-load.https.sub.html | 0 ...by-feature-policy-attribute.https.sub.html | 0 ...t-allowed-by-feature-policy.https.sub.html | 0 ...d-by-feature-policy.https.sub.html.headers | 0 ...ment-default-feature-policy.https.sub.html | 0 ...-disabled-by-feature-policy.https.sub.html | 0 ...d-by-feature-policy.https.sub.html.headers | 0 .../feature-policy/resources/featurepolicy.js | 100 +- testing/web-platform/tests/fetch/OWNERS | 1 + .../tests/fetch/api/cors/cors-expose-star.js | 17 +- .../fetch/api/cors/cors-preflight-star.any.js | 8 +- .../api/response/response-cancel-stream.html | 16 +- .../tests/gamepad/idlharness-manual.html | 4 +- .../tests/gamepad/idlharness.html | 4 +- ...{idlharness.html => idlharness.https.html} | 22 +- .../tests/gyroscope/idlharness.https.html | 46 +- .../tests/hr-time/timeOrigin.html | 5 +- .../hr-time/window-worker-time-origin.html | 36 - .../window-worker-timeOrigin.window.js | 30 + testing/web-platform/tests/html/OWNERS | 1 - .../named-objects.html | 8 +- .../dom-tree-accessors/nameditem-03.html | 100 +- .../dom-tree-accessors/nameditem-08.html | 13 +- .../tests/html/dom/historical.html | 33 + .../tests/html/dom/interfaces.html | 1 - .../collections/htmlallcollection.html | 95 +- .../the-style-element/style_type.html | 71 + .../the-style-element/style_type_change.html | 39 + .../mime-types/canPlayType.html | 5 +- .../track/track-element/track-cue-order.html | 83 + .../the-dialog-element/dialog-showModal.html | 55 + .../tests/html/semantics/interfaces.js | 2 +- .../script-language-type.html | 18 - .../script-languages-01.html | 24 - .../script-type-and-language-empty.html | 48 + ....html => script-type-and-language-js.html} | 3 +- .../script-type-and-language-with-params.html | 41 + .../pseudo-classes/checked-type-change.html | 24 + .../indeterminate-type-change.html | 24 + .../inrange-outofrange-type-change.html | 43 + .../idle-callbacks/callback-suspended.html | 2 +- .../the-navigator-object/content.html | 136 - .../the-navigator-object/content/001.xhtml | 16 - .../the-navigator-object/content/002.xhtml | 19 - .../the-navigator-object/content/003.xhtml | 18 - .../the-navigator-object/content/004.xhtml | 18 - .../the-navigator-object/content/005.xhtml | 18 - .../the-navigator-object/content/006.xhtml | 18 - .../the-navigator-object/historical.window.js | 10 + .../navigator-pluginarray.html | 19 + .../the-navigator-object/protocol/001.xhtml | 17 - .../the-navigator-object/protocol/002.xhtml | 19 - .../the-navigator-object/protocol/003.xhtml | 18 - .../the-navigator-object/protocol/004.xhtml | 18 - .../the-navigator-object/protocol/005.xhtml | 18 - .../the-navigator-object/protocol/006.xhtml | 19 - .../tests/innerText/getter-tests.js | 7 + .../input-events-cut-paste-manual.html | 83 + .../input-events-exec-command.html | 86 + ...input-events-get-target-ranges-manual.html | 76 + .../input-events-typing-data-manual.html | 38 - .../input-events-typing-manual.html | 60 + .../tests/interfaces/cssom-view.idl | 184 + .../web-platform/tests/interfaces/cssom.idl | 327 +- .../tests/interfaces/geometry.idl | 8 +- .../web-platform/tests/interfaces/html.idl | 5 - .../tests/interfaces/payment-handler.idl | 55 + .../tests/interfaces/payment-request.idl | 114 + testing/web-platform/tests/lint.whitelist | 3 +- .../web-platform/tests/longtask-timing/OWNERS | 2 + .../tests/magnetometer/idlharness.https.html | 53 +- .../mediacapture-streams/GUM-api.https.html | 9 +- .../mediacapture-streams/GUM-deny.https.html | 18 +- .../GUM-empty-option-param.https.html | 23 +- .../GUM-impossible-constraint.https.html | 18 +- .../GUM-optional-constraint.https.html | 16 +- .../GUM-trivial-constraint.https.html | 16 +- .../GUM-unknownkey-option-param.https.html | 34 +- ...tream-MediaElement-preload-none.https.html | 28 +- ...iaStream-MediaElement-srcObject.https.html | 56 +- .../MediaStream-add-audio-track.https.html | 5 +- .../MediaStream-audio-only.https.html | 3 +- ...ream-default-feature-policy.https.sub.html | 61 + .../MediaStream-finished-add.https.html | 5 +- .../MediaStream-gettrackid.https.html | 7 +- .../MediaStream-id-manual.https.html | 15 +- .../MediaStream-idl.https.html | 50 +- .../MediaStream-removetrack.https.html | 5 +- .../MediaStream-video-only.https.html | 3 +- ...ement-disabled-audio-is-silence.https.html | 4 +- ...Element-disabled-video-is-black.https.html | 52 +- .../MediaStreamTrack-end-manual.https.html | 3 +- .../MediaStreamTrack-id.https.html | 4 +- .../MediaStreamTrack-init.https.html | 28 +- .../conformance-requirements/.gitkeep | 0 .../converting-html-to-other-formats/.gitkeep | 0 .../json/.gitkeep | 0 .../tests/microdata/dependencies/.gitkeep | 0 .../microdata/encoding-microdata/.gitkeep | 0 .../associating-names-with-items/.gitkeep | 0 .../encoding-microdata/items/.gitkeep | 0 .../microdata-and-other-namespaces/.gitkeep | 0 .../names-the-itemprop-attribute/.gitkeep | 0 .../original-id.json | 1 - .../the-microdata-model/.gitkeep | 0 .../encoding-microdata/values/.gitkeep | 0 .../tests/microdata/iana/.gitkeep | 0 .../tests/microdata/introduction/.gitkeep | 0 .../global-identifiers-for-items/.gitkeep | 0 .../microdata/introduction/overview/.gitkeep | 0 .../.gitkeep | 0 .../introduction/the-basic-syntax/.gitkeep | 0 .../introduction/typed-items/.gitkeep | 0 .../using-the-microdata-dom-api/.gitkeep | 0 .../tests/microdata/terminology/.gitkeep | 0 .../orientation-sensor/idlharness.https.html | 55 +- .../web-platform/tests/paint-timing/OWNERS | 2 + .../tests/paint-timing/basetest.html | 46 + .../first-contentful-bg-image.html | 41 + .../paint-timing/first-contentful-canvas.html | 41 + .../paint-timing/first-contentful-image.html | 40 + .../paint-timing/first-contentful-paint.html | 66 + .../paint-timing/first-contentful-svg.html | 40 + .../paint-timing/first-paint-bg-color.html | 37 + .../tests/paint-timing/first-paint-only.html | 40 + .../tests/paint-timing/resources/circle.svg | 3 + .../tests/paint-timing/resources/circles.png | Bin 0 -> 2479 bytes .../web-platform/tests/payment-handler/OWNERS | 2 + .../payment-handler/interfaces.https.any.js | 20 + .../web-platform/tests/payment-request/OWNERS | 4 + .../constructor.http.html} | 0 .../constructor.https.html} | 1 + ...plicate-shipping-options-manual.https.html | 89 + .../updatewith-method.https.html} | 0 .../algorithms-manual.https.html | 180 + ...emoving-allowpaymentrequest.https.sub.html | 28 +- ...-allowpaymentrequest-timing.https.sub.html | 7 +- ...setting-allowpaymentrequest.https.sub.html | 2 +- .../change-shipping-option-manual.https.html | 86 + .../payment-request/interfaces.https.html | 151 +- .../payment-request-constructor.https.html | 122 +- ...quest-ctor-currency-code-checks.https.html | 6 +- .../payment-request-id-attribute.https.html | 1 + ...shippingaddresschange-attribute.https.html | 5 + ...nshippingoptionchange-attribute.https.html | 5 + ...quest-shippingAddress-attribute.https.html | 28 + ...equest-shippingOption-attribute.https.html | 100 + ...-request-shippingType-attribute.https.html | 5 + .../payment-request-show-method.https.html | 10 + .../payment-response/helpers.js | 56 + ...hippingAddress-attribute-manual.https.html | 2 + .../rejects_if_not_active.https.html | 156 + .../payment-request/resources/page1.html | 1 + .../payment-request/resources/page2.html | 1 + ...shipping-address-changed-manual.https.html | 77 + .../user-abort-algorithm-manual.https.html | 62 + .../performance-timeline/po-observe.html | 3 +- ...tionConnection_onmessage_receiving-ua.html | 4 +- testing/web-platform/tests/quirks-mode/OWNERS | 2 +- .../tests/resources/idlharness.js | 24 +- .../idlharness/IdlArray/is_json_type.html | 10 + .../IdlInterface/test_to_json_operation.html | 18 +- .../resources/test/tests/idlharness/helper.js | 1 + .../tests/resources/testharnessreport.js | 13 + .../fetch-frame-resource.https.html | 7 +- .../extendable-event-async-waituntil.js | 21 +- .../resources/registration-tests.js | 460 -- .../skip-waiting-installed-worker.js | 22 +- .../brand-checks.dedicatedworker.html | 11 + .../readable-byte-streams/brand-checks.html | 10 + .../readable-byte-streams/brand-checks.js | 194 + .../brand-checks.serviceworker.https.html | 12 + .../brand-checks.sharedworker.html | 11 + .../tests/streams/resources/test-utils.js | 1 + .../tests/tools/ci/ci_stability.sh | 2 +- .../wptrunner/wptrunner/browsers/sauce.py | 2 +- .../tools/wptrunner/wptrunner/environment.py | 2 +- .../tests/tools/wptrunner/wptrunner/font.py | 110 + .../wptrunner/wptrunner/wptcommandline.py | 5 + .../tools/wptrunner/wptrunner/wptrunner.py | 8 +- testing/web-platform/tests/uievents/OWNERS | 1 + testing/web-platform/tests/url/OWNERS | 1 - .../web-platform/tests/url/urltestdata.json | 57 + ...wport-attribute-event-handlers-manual.html | 75 + .../tests/wai-aria/tools/make_tests.pl | 4 +- .../tests/state/get_element_attribute.py | 1 - .../tests/webdriver/tests/support/fixtures.py | 2 +- ...RTCConfiguration-iceCandidatePoolSize.html | 14 +- .../RTCPeerConnection-createAnswer.html | 4 +- .../tests/webrtc/RTCPeerConnection-helper.js | 28 +- ...Connection-setLocalDescription-answer.html | 8 +- ...rConnection-setLocalDescription-offer.html | 2 +- ...nnection-setLocalDescription-pranswer.html | 8 +- ...nnection-setLocalDescription-rollback.html | 2 +- ...RTCPeerConnection-setLocalDescription.html | 2 +- ...onnection-setRemoteDescription-answer.html | 4 +- ...Connection-setRemoteDescription-offer.html | 8 +- ...nection-setRemoteDescription-pranswer.html | 2 +- ...nection-setRemoteDescription-rollback.html | 2 +- ...TCPeerConnection-setRemoteDescription.html | 2 +- .../webrtc/RTCSctpTransport-constructor.html | 2 +- testing/web-platform/tests/websockets/OWNERS | 1 - .../tests/websockets/constructor/010.html | 13 +- .../tests/websockets/constructor/011.html | 12 +- .../tests/webstorage/storage_enumerate.html | 27 + .../web-platform/tests/webvr/idlharness.html | 10 +- testing/web-platform/tests/webvtt/OWNERS | 1 - .../parsing/cue-text-parsing/dat/entities.dat | 2 +- .../cue-text-parsing/tests/entities.html | 2 +- testing/web-platform/tests/workers/OWNERS | 1 - .../workers/worker-performance.worker.js | 128 + 702 files changed, 33236 insertions(+), 7704 deletions(-) create mode 100644 testing/web-platform/tests/XMLHttpRequest/access-control-basic-cors-safelisted-request-headers.htm create mode 100644 testing/web-platform/tests/XMLHttpRequest/access-control-basic-cors-safelisted-response-headers.htm create mode 100644 testing/web-platform/tests/XMLHttpRequest/access-control-basic-get-fail-non-simple.htm create mode 100644 testing/web-platform/tests/XMLHttpRequest/access-control-preflight-async-method-denied.htm create mode 100644 testing/web-platform/tests/XMLHttpRequest/access-control-preflight-async-not-supported.htm create mode 100644 testing/web-platform/tests/XMLHttpRequest/access-control-preflight-headers-async.htm create mode 100644 testing/web-platform/tests/XMLHttpRequest/access-control-preflight-request-header-sorted.htm create mode 100644 testing/web-platform/tests/XMLHttpRequest/access-control-preflight-request-headers-origin.htm create mode 100644 testing/web-platform/tests/XMLHttpRequest/access-control-preflight-request-invalid-status-400.htm create mode 100644 testing/web-platform/tests/XMLHttpRequest/access-control-preflight-request-must-not-contain-cookie.htm create mode 100644 testing/web-platform/tests/XMLHttpRequest/access-control-preflight-sync-header-denied.htm create mode 100644 testing/web-platform/tests/XMLHttpRequest/access-control-preflight-sync-method-denied.htm create mode 100644 testing/web-platform/tests/XMLHttpRequest/access-control-preflight-sync-not-supported.htm create mode 100644 testing/web-platform/tests/XMLHttpRequest/access-control-recursive-failed-request.htm create mode 100644 testing/web-platform/tests/XMLHttpRequest/access-control-response-with-body-sync.htm create mode 100644 testing/web-platform/tests/XMLHttpRequest/access-control-response-with-body.htm create mode 100644 testing/web-platform/tests/XMLHttpRequest/access-control-response-with-exposed-headers.htm create mode 100644 testing/web-platform/tests/XMLHttpRequest/access-control-sandboxed-iframe-allow-origin-null.htm create mode 100644 testing/web-platform/tests/XMLHttpRequest/access-control-sandboxed-iframe-allow.htm create mode 100644 testing/web-platform/tests/XMLHttpRequest/access-control-sandboxed-iframe-denied-without-wildcard.htm create mode 100644 testing/web-platform/tests/XMLHttpRequest/access-control-sandboxed-iframe-denied.htm create mode 100644 testing/web-platform/tests/XMLHttpRequest/resources/access-control-allow-with-body.py create mode 100644 testing/web-platform/tests/XMLHttpRequest/resources/access-control-basic-cors-safelisted-request-headers.py create mode 100644 testing/web-platform/tests/XMLHttpRequest/resources/access-control-basic-whitelist-response-headers.py create mode 100644 testing/web-platform/tests/XMLHttpRequest/resources/access-control-cookie.py create mode 100644 testing/web-platform/tests/XMLHttpRequest/resources/access-control-preflight-request-header-sorted.py create mode 100644 testing/web-platform/tests/XMLHttpRequest/resources/access-control-preflight-request-headers-origin.py create mode 100644 testing/web-platform/tests/XMLHttpRequest/resources/access-control-preflight-request-must-not-contain-cookie.py create mode 100644 testing/web-platform/tests/XMLHttpRequest/resources/access-control-sandboxed-iframe.html delete mode 100644 testing/web-platform/tests/auxclick/OWNERS create mode 100644 testing/web-platform/tests/background-fetch/content-security-policy.https.window.js create mode 100644 testing/web-platform/tests/background-fetch/credentials-in-url.https.window.js create mode 100644 testing/web-platform/tests/background-fetch/dangling-markup.https.window.js create mode 100644 testing/web-platform/tests/background-fetch/mixed-content-and-allowed-schemes.https.window.js create mode 100644 testing/web-platform/tests/background-fetch/port-blocking.https.window.js create mode 100644 testing/web-platform/tests/background-fetch/resources/sw.js create mode 100644 testing/web-platform/tests/background-fetch/resources/utils.js rename testing/web-platform/tests/{clipboard => clipboard-apis}/OWNERS (100%) delete mode 100644 testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-archive-codebase.sub.html delete mode 100644 testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-archive-codebase.sub.html.sub.headers delete mode 100644 testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-archive.sub.html delete mode 100644 testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-archive.sub.html.sub.headers delete mode 100644 testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-code-codebase.sub.html delete mode 100644 testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-code-codebase.sub.html.sub.headers delete mode 100644 testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-code.sub.html delete mode 100644 testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-code.sub.html.sub.headers create mode 100644 testing/web-platform/tests/core-aam/OWNERS create mode 100644 testing/web-platform/tests/core-aam/README.md create mode 100644 testing/web-platform/tests/core-aam/alert-manual.html create mode 100644 testing/web-platform/tests/core-aam/alertdialog-manual.html create mode 100644 testing/web-platform/tests/core-aam/application-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-atomic_false-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-atomic_true-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-autocomplete_both_new-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-autocomplete_inline_new-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-autocomplete_list_new-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-busy_false-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-busy_true-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-checked_false_on_checkbox-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-checked_false_on_menuitemradio-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-checked_mixed-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-checked_true_on_checkbox-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-checked_true_on_menuitemradio-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-colcount_new-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-colindex_new-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-colspan_new-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-controls-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-current_with_non-false_allowed_value_new-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-current_with_unrecognized_value_new-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-describedby-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-details_new-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-disabled_false-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-disabled_true-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-dropeffect_copy-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-dropeffect_execute-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-dropeffect_link-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-dropeffect_move-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-dropeffect_none-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-dropeffect_popup-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-errormessage-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-expanded_false-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-expanded_true-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-flowto-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-grabbed_false-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-grabbed_true-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-haspopup_dialog_new-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-haspopup_false-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-haspopup_listbox_new-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-haspopup_menu_new-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-haspopup_tree_new-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-haspopup_true-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-hidden_true-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-invalid_false-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-invalid_grammar-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-invalid_spelling-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-invalid_true-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-invalid_with_unrecognized_value-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-keyshortcuts_new-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-label-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-labelledby-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-level_on_heading_new-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-level_on_non-heading-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-live_assertive-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-live_off-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-live_polite-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-modal_false_new-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-modal_true_new-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-multiline_false-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-multiline_true-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-multiselectable_false-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-multiselectable_true-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-orientation_horizontal-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-orientation_undefined_new-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-orientation_vertical-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-owns_may_need_manual_verification-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-placeholder_new-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-posinset-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-pressed_false-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-pressed_mixed-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-pressed_true-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-readonly_false-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-readonly_is_unspecified_on_gridcell_new-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-readonly_true_on_checkbox-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-readonly_true_on_radiogroup-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-readonly_true_on_textbox-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-relevant-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-required_true-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-roledescription_is_empty_or_whitespace_characters_new-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-roledescription_new-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-rowcount_new-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-rowindex_new-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-rowspan_new-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-selected_false-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-selected_true-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-setsize_-1-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-setsize_3-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-sort_ascending-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-sort_descending-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-sort_none-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-sort_other-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-valuemax-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-valuemin-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-valuenow-manual.html create mode 100644 testing/web-platform/tests/core-aam/aria-valuetext-manual.html create mode 100644 testing/web-platform/tests/core-aam/article-manual.html create mode 100644 testing/web-platform/tests/core-aam/banner_new-manual.html create mode 100644 testing/web-platform/tests/core-aam/button_with_aria-haspopup_dialog_new-manual.html create mode 100644 testing/web-platform/tests/core-aam/button_with_aria-haspopup_true_new-manual.html create mode 100644 testing/web-platform/tests/core-aam/button_with_default_values_for_aria-pressed_and_aria-haspopup-manual.html create mode 100644 testing/web-platform/tests/core-aam/button_with_defined_value_for_aria-pressed-manual.html create mode 100644 testing/web-platform/tests/core-aam/cell_new-manual.html create mode 100644 testing/web-platform/tests/core-aam/checkbox-manual.html create mode 100644 testing/web-platform/tests/core-aam/columnheader-manual.html create mode 100644 testing/web-platform/tests/core-aam/combobox-manual.html create mode 100644 testing/web-platform/tests/core-aam/complementary_new-manual.html create mode 100644 testing/web-platform/tests/core-aam/contentinfo_new-manual.html create mode 100644 testing/web-platform/tests/core-aam/definition-manual.html create mode 100644 testing/web-platform/tests/core-aam/dialog-manual.html create mode 100644 testing/web-platform/tests/core-aam/directory-manual.html create mode 100644 testing/web-platform/tests/core-aam/document-manual.html create mode 100644 testing/web-platform/tests/core-aam/feed_new-manual.html create mode 100644 testing/web-platform/tests/core-aam/figure_new-manual.html create mode 100644 testing/web-platform/tests/core-aam/form_new-manual.html create mode 100644 testing/web-platform/tests/core-aam/grid-manual.html create mode 100644 testing/web-platform/tests/core-aam/gridcell-manual.html create mode 100644 testing/web-platform/tests/core-aam/group-manual.html create mode 100644 testing/web-platform/tests/core-aam/heading-manual.html create mode 100644 testing/web-platform/tests/core-aam/img-manual.html create mode 100644 testing/web-platform/tests/core-aam/link-manual.html create mode 100644 testing/web-platform/tests/core-aam/list-manual.html create mode 100644 testing/web-platform/tests/core-aam/listbox_not_owned_by_or_child_of_combobox-manual.html create mode 100644 testing/web-platform/tests/core-aam/listbox_owned_by_or_child_of_combobox-manual.html create mode 100644 testing/web-platform/tests/core-aam/listitem-manual.html create mode 100644 testing/web-platform/tests/core-aam/log-manual.html create mode 100644 testing/web-platform/tests/core-aam/main_new-manual.html create mode 100644 testing/web-platform/tests/core-aam/marquee-manual.html create mode 100644 testing/web-platform/tests/core-aam/math-manual.html create mode 100644 testing/web-platform/tests/core-aam/menu-manual.html create mode 100644 testing/web-platform/tests/core-aam/menubar-manual.html create mode 100644 testing/web-platform/tests/core-aam/menuitem_not_owned_by_or_child_of_group-manual.html create mode 100644 testing/web-platform/tests/core-aam/menuitem_owned_by_or_child_of_group-manual.html create mode 100644 testing/web-platform/tests/core-aam/menuitemcheckbox-manual.html create mode 100644 testing/web-platform/tests/core-aam/menuitemradio-manual.html create mode 100644 testing/web-platform/tests/core-aam/navigation_new-manual.html create mode 100644 testing/web-platform/tests/core-aam/none_new-manual.html create mode 100644 testing/web-platform/tests/core-aam/note-manual.html create mode 100644 testing/web-platform/tests/core-aam/option_inside_combobox-manual.html create mode 100644 testing/web-platform/tests/core-aam/option_not_inside_combobox-manual.html create mode 100644 testing/web-platform/tests/core-aam/presentation-manual.html create mode 100644 testing/web-platform/tests/core-aam/progressbar-manual.html create mode 100644 testing/web-platform/tests/core-aam/radio-manual.html create mode 100644 testing/web-platform/tests/core-aam/radiogroup-manual.html create mode 100644 testing/web-platform/tests/core-aam/region_with_an_accessible_name_new-manual.html create mode 100644 testing/web-platform/tests/core-aam/region_without_an_accessible_name_new-manual.html create mode 100644 testing/web-platform/tests/core-aam/row_inside_treegrid-manual.html create mode 100644 testing/web-platform/tests/core-aam/row_not_inside_treegrid-manual.html create mode 100644 testing/web-platform/tests/core-aam/rowgroup-manual.html create mode 100644 testing/web-platform/tests/core-aam/rowheader-manual.html create mode 100644 testing/web-platform/tests/core-aam/scrollbar-manual.html create mode 100644 testing/web-platform/tests/core-aam/search_new-manual.html create mode 100644 testing/web-platform/tests/core-aam/searchbox_new-manual.html create mode 100644 testing/web-platform/tests/core-aam/separator_focusable_new-manual.html create mode 100644 testing/web-platform/tests/core-aam/separator_non-focusable-manual.html create mode 100644 testing/web-platform/tests/core-aam/slider-manual.html create mode 100644 testing/web-platform/tests/core-aam/spinbutton-manual.html create mode 100644 testing/web-platform/tests/core-aam/status-manual.html create mode 100644 testing/web-platform/tests/core-aam/switch_new-manual.html create mode 100644 testing/web-platform/tests/core-aam/tab-manual.html create mode 100644 testing/web-platform/tests/core-aam/table_new-manual.html create mode 100644 testing/web-platform/tests/core-aam/tablist-manual.html create mode 100644 testing/web-platform/tests/core-aam/tabpanel-manual.html create mode 100644 testing/web-platform/tests/core-aam/term_new-manual.html create mode 100644 testing/web-platform/tests/core-aam/textbox_when_aria-multiline_is_false-manual.html create mode 100644 testing/web-platform/tests/core-aam/textbox_when_aria-multiline_is_true-manual.html create mode 100644 testing/web-platform/tests/core-aam/timer-manual.html create mode 100644 testing/web-platform/tests/core-aam/toolbar-manual.html create mode 100644 testing/web-platform/tests/core-aam/tooltip-manual.html create mode 100644 testing/web-platform/tests/core-aam/tree-manual.html create mode 100644 testing/web-platform/tests/core-aam/treegrid-manual.html create mode 100644 testing/web-platform/tests/core-aam/treeitem-manual.html rename testing/web-platform/tests/{css-font-display => css-fonts/font-display}/font-display-ref.html (100%) rename testing/web-platform/tests/{css-font-display => css-fonts/font-display}/font-display.html (100%) rename testing/web-platform/tests/{css-font-display => css-fonts/font-display}/resources/slow-ahem-loading.py (80%) create mode 100644 testing/web-platform/tests/css-paint-api/parse-input-arguments-019.html create mode 100644 testing/web-platform/tests/css-paint-api/parse-input-arguments-020.html create mode 100644 testing/web-platform/tests/css-paint-api/parse-input-arguments-021.html create mode 100644 testing/web-platform/tests/css-paint-api/parse-input-arguments-022.html create mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-001.html create mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-002.html create mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-003.html create mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-004.html create mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-005.html create mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-006.html create mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-007.html create mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-008.html create mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-009.html create mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-010.html create mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-011.html create mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-012.html create mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-013.html create mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-014.html create mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-015.html create mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-016.html create mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-017.html create mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-018.html create mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-019.html create mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-020.html create mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-021.html create mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-022.html create mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-023.html create mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-024.html create mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-025.html create mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-026.html create mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-027.html create mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-028.html create mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-029.html create mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-030.html create mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-031.html create mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-032.html create mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-033.html create mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-034.html create mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-035.html create mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-036.html create mode 100644 testing/web-platform/tests/css/css-grid-1/grid-definition/grid-shorthand-001.html delete mode 100644 testing/web-platform/tests/css/css-grid-1/grid-items/support/100x50-green.png create mode 100644 testing/web-platform/tests/css/css-grid-1/grid-items/support/25x50-green.png delete mode 100644 testing/web-platform/tests/css/css-grid-1/grid-items/support/50x100-green.png create mode 100644 testing/web-platform/tests/css/css-grid-1/grid-items/support/50x25-green.png create mode 100644 testing/web-platform/tests/css/css-grid-1/support/style-change.js rename testing/web-platform/tests/css/{css-logical-properties-1 => css-logical-1}/OWNERS (100%) rename testing/web-platform/tests/css/{css-logical-props-1 => css-logical-1}/cascading-001-ref.html (100%) rename testing/web-platform/tests/css/{css-logical-props-1 => css-logical-1}/cascading-001.html (100%) rename testing/web-platform/tests/css/{css-logical-properties-1 => css-logical-1}/logicalprops-block-size-vlr.html (100%) rename testing/web-platform/tests/css/{css-logical-properties-1 => css-logical-1}/logicalprops-block-size.html (100%) rename testing/web-platform/tests/css/{css-logical-properties-1 => css-logical-1}/logicalprops-inline-size-vlr.html (100%) rename testing/web-platform/tests/css/{css-logical-properties-1 => css-logical-1}/logicalprops-inline-size.html (100%) rename testing/web-platform/tests/css/{css-logical-properties-1 => css-logical-1}/logicalprops-quirklength.html (86%) rename testing/web-platform/tests/css/{css-logical-properties-1 => css-logical-1}/resources/style-check.js (100%) create mode 100644 testing/web-platform/tests/css/css-tables-3/fixed-layout-calc-width-001.html create mode 100644 testing/web-platform/tests/css/css-tables-3/fixed-layout-excess-width-distribution-001.html create mode 100644 testing/web-platform/tests/css/css-tables-3/support/check-layout-th.js create mode 100644 testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-001.html create mode 100644 testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-002.html create mode 100644 testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-003.html create mode 100644 testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-004.html create mode 100644 testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-005.html create mode 100644 testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-006.html create mode 100644 testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-007.html create mode 100644 testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-008.html create mode 100644 testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-009.html create mode 100644 testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-010.html create mode 100644 testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-011.html create mode 100644 testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-012.html create mode 100644 testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-013.html create mode 100644 testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-014.html create mode 100644 testing/web-platform/tests/css/css-text-3/white-space/reference/pre-wrap-001-ref.html create mode 100644 testing/web-platform/tests/css/css-text-3/white-space/reference/textarea-pre-wrap-001-ref.html create mode 100644 testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-001.html create mode 100644 testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-002.html create mode 100644 testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-003.html create mode 100644 testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-004.html create mode 100644 testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-005.html create mode 100644 testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-006.html create mode 100644 testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-007.html create mode 100644 testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-008.html create mode 100644 testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-009.html create mode 100644 testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-010.html create mode 100644 testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-011.html create mode 100644 testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-012.html create mode 100644 testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-013.html create mode 100644 testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-014.html create mode 100644 testing/web-platform/tests/css/css-ui-3/text-overflow-023.html create mode 100644 testing/web-platform/tests/css/css-values-3/absolute-length-units-001.html create mode 100644 testing/web-platform/tests/css/geometry-1/spec-examples.html create mode 100644 testing/web-platform/tests/cssom-view/interfaces.html create mode 100644 testing/web-platform/tests/cssom-view/scrollBoundaryBehavior-manual.html create mode 100644 testing/web-platform/tests/cssom-view/scrollintoview.html delete mode 100644 testing/web-platform/tests/cssom-view/ttwf-scrollintoview.html create mode 100644 testing/web-platform/tests/cssom/support/xmlss-pi.xhtml create mode 100644 testing/web-platform/tests/encrypted-media/encrypted-media-default-feature-policy.https.sub.html create mode 100644 testing/web-platform/tests/feature-policy/OWNERS rename testing/web-platform/tests/{payment-request => feature-policy}/payment-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html (100%) rename testing/web-platform/tests/{payment-request => feature-policy}/payment-allowed-by-feature-policy-attribute.https.sub.html (100%) rename testing/web-platform/tests/{payment-request => feature-policy}/payment-allowed-by-feature-policy.https.sub.html (100%) rename testing/web-platform/tests/{payment-request => feature-policy}/payment-allowed-by-feature-policy.https.sub.html.headers (100%) rename testing/web-platform/tests/{payment-request => feature-policy}/payment-default-feature-policy.https.sub.html (100%) rename testing/web-platform/tests/{payment-request => feature-policy}/payment-disabled-by-feature-policy.https.sub.html (100%) rename testing/web-platform/tests/{payment-request => feature-policy}/payment-disabled-by-feature-policy.https.sub.html.headers (100%) rename testing/web-platform/tests/generic-sensor/{idlharness.html => idlharness.https.html} (82%) delete mode 100644 testing/web-platform/tests/hr-time/window-worker-time-origin.html create mode 100644 testing/web-platform/tests/hr-time/window-worker-timeOrigin.window.js create mode 100644 testing/web-platform/tests/html/dom/historical.html create mode 100644 testing/web-platform/tests/html/semantics/document-metadata/the-style-element/style_type.html create mode 100644 testing/web-platform/tests/html/semantics/document-metadata/the-style-element/style_type_change.html create mode 100644 testing/web-platform/tests/html/semantics/embedded-content/media-elements/track/track-element/track-cue-order.html delete mode 100644 testing/web-platform/tests/html/semantics/scripting-1/the-script-element/script-language-type.html delete mode 100644 testing/web-platform/tests/html/semantics/scripting-1/the-script-element/script-languages-01.html create mode 100644 testing/web-platform/tests/html/semantics/scripting-1/the-script-element/script-type-and-language-empty.html rename testing/web-platform/tests/html/semantics/scripting-1/the-script-element/{script-languages-02.html => script-type-and-language-js.html} (95%) create mode 100644 testing/web-platform/tests/html/semantics/scripting-1/the-script-element/script-type-and-language-with-params.html create mode 100644 testing/web-platform/tests/html/semantics/selectors/pseudo-classes/checked-type-change.html create mode 100644 testing/web-platform/tests/html/semantics/selectors/pseudo-classes/indeterminate-type-change.html create mode 100644 testing/web-platform/tests/html/semantics/selectors/pseudo-classes/inrange-outofrange-type-change.html delete mode 100644 testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content.html delete mode 100644 testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content/001.xhtml delete mode 100644 testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content/002.xhtml delete mode 100644 testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content/003.xhtml delete mode 100644 testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content/004.xhtml delete mode 100644 testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content/005.xhtml delete mode 100644 testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content/006.xhtml create mode 100644 testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/historical.window.js delete mode 100644 testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/001.xhtml delete mode 100644 testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/002.xhtml delete mode 100644 testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/003.xhtml delete mode 100644 testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/004.xhtml delete mode 100644 testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/005.xhtml delete mode 100644 testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/006.xhtml create mode 100644 testing/web-platform/tests/input-events/input-events-cut-paste-manual.html create mode 100644 testing/web-platform/tests/input-events/input-events-exec-command.html create mode 100644 testing/web-platform/tests/input-events/input-events-get-target-ranges-manual.html delete mode 100644 testing/web-platform/tests/input-events/input-events-typing-data-manual.html create mode 100644 testing/web-platform/tests/input-events/input-events-typing-manual.html create mode 100644 testing/web-platform/tests/interfaces/cssom-view.idl create mode 100644 testing/web-platform/tests/interfaces/payment-handler.idl create mode 100644 testing/web-platform/tests/interfaces/payment-request.idl create mode 100644 testing/web-platform/tests/longtask-timing/OWNERS create mode 100644 testing/web-platform/tests/mediacapture-streams/MediaStream-default-feature-policy.https.sub.html delete mode 100644 testing/web-platform/tests/microdata/conformance-requirements/.gitkeep delete mode 100644 testing/web-platform/tests/microdata/converting-html-to-other-formats/.gitkeep delete mode 100644 testing/web-platform/tests/microdata/converting-html-to-other-formats/json/.gitkeep delete mode 100644 testing/web-platform/tests/microdata/dependencies/.gitkeep delete mode 100644 testing/web-platform/tests/microdata/encoding-microdata/.gitkeep delete mode 100644 testing/web-platform/tests/microdata/encoding-microdata/associating-names-with-items/.gitkeep delete mode 100644 testing/web-platform/tests/microdata/encoding-microdata/items/.gitkeep delete mode 100644 testing/web-platform/tests/microdata/encoding-microdata/microdata-and-other-namespaces/.gitkeep delete mode 100644 testing/web-platform/tests/microdata/encoding-microdata/names-the-itemprop-attribute/.gitkeep delete mode 100644 testing/web-platform/tests/microdata/encoding-microdata/names-the-itemprop-attribute/original-id.json delete mode 100644 testing/web-platform/tests/microdata/encoding-microdata/the-microdata-model/.gitkeep delete mode 100644 testing/web-platform/tests/microdata/encoding-microdata/values/.gitkeep delete mode 100644 testing/web-platform/tests/microdata/iana/.gitkeep delete mode 100644 testing/web-platform/tests/microdata/introduction/.gitkeep delete mode 100644 testing/web-platform/tests/microdata/introduction/global-identifiers-for-items/.gitkeep delete mode 100644 testing/web-platform/tests/microdata/introduction/overview/.gitkeep delete mode 100644 testing/web-platform/tests/microdata/introduction/selecting-names-when-defining-vocabularies/.gitkeep delete mode 100644 testing/web-platform/tests/microdata/introduction/the-basic-syntax/.gitkeep delete mode 100644 testing/web-platform/tests/microdata/introduction/typed-items/.gitkeep delete mode 100644 testing/web-platform/tests/microdata/introduction/using-the-microdata-dom-api/.gitkeep delete mode 100644 testing/web-platform/tests/microdata/terminology/.gitkeep create mode 100644 testing/web-platform/tests/paint-timing/OWNERS create mode 100644 testing/web-platform/tests/paint-timing/basetest.html create mode 100644 testing/web-platform/tests/paint-timing/first-contentful-bg-image.html create mode 100644 testing/web-platform/tests/paint-timing/first-contentful-canvas.html create mode 100644 testing/web-platform/tests/paint-timing/first-contentful-image.html create mode 100644 testing/web-platform/tests/paint-timing/first-contentful-paint.html create mode 100644 testing/web-platform/tests/paint-timing/first-contentful-svg.html create mode 100644 testing/web-platform/tests/paint-timing/first-paint-bg-color.html create mode 100644 testing/web-platform/tests/paint-timing/first-paint-only.html create mode 100644 testing/web-platform/tests/paint-timing/resources/circle.svg create mode 100644 testing/web-platform/tests/paint-timing/resources/circles.png create mode 100644 testing/web-platform/tests/payment-handler/OWNERS create mode 100644 testing/web-platform/tests/payment-handler/interfaces.https.any.js rename testing/web-platform/tests/payment-request/{payment-request-update-event-constructor.http.html => PaymentRequestUpdateEvent/constructor.http.html} (100%) rename testing/web-platform/tests/payment-request/{payment-request-update-event-constructor.https.html => PaymentRequestUpdateEvent/constructor.https.html} (97%) create mode 100644 testing/web-platform/tests/payment-request/PaymentRequestUpdateEvent/updateWith-duplicate-shipping-options-manual.https.html rename testing/web-platform/tests/payment-request/{payment-request-update-event-updatewith-method.https.html => PaymentRequestUpdateEvent/updatewith-method.https.html} (100%) create mode 100644 testing/web-platform/tests/payment-request/algorithms-manual.https.html create mode 100644 testing/web-platform/tests/payment-request/change-shipping-option-manual.https.html create mode 100644 testing/web-platform/tests/payment-request/payment-request-shippingAddress-attribute.https.html create mode 100644 testing/web-platform/tests/payment-request/payment-request-shippingOption-attribute.https.html create mode 100644 testing/web-platform/tests/payment-request/rejects_if_not_active.https.html create mode 100644 testing/web-platform/tests/payment-request/resources/page1.html create mode 100644 testing/web-platform/tests/payment-request/resources/page2.html create mode 100644 testing/web-platform/tests/payment-request/shipping-address-changed-manual.https.html create mode 100644 testing/web-platform/tests/payment-request/user-abort-algorithm-manual.https.html delete mode 100644 testing/web-platform/tests/service-workers/service-worker/resources/registration-tests.js create mode 100644 testing/web-platform/tests/streams/readable-byte-streams/brand-checks.dedicatedworker.html create mode 100644 testing/web-platform/tests/streams/readable-byte-streams/brand-checks.html create mode 100644 testing/web-platform/tests/streams/readable-byte-streams/brand-checks.js create mode 100644 testing/web-platform/tests/streams/readable-byte-streams/brand-checks.serviceworker.https.html create mode 100644 testing/web-platform/tests/streams/readable-byte-streams/brand-checks.sharedworker.html create mode 100644 testing/web-platform/tests/tools/wptrunner/wptrunner/font.py create mode 100644 testing/web-platform/tests/viewport/viewport-attribute-event-handlers-manual.html create mode 100644 testing/web-platform/tests/workers/worker-performance.worker.js diff --git a/testing/web-platform/meta/MANIFEST.json b/testing/web-platform/meta/MANIFEST.json index fc5d4a2e52c3..3d4940886517 100644 --- a/testing/web-platform/meta/MANIFEST.json +++ b/testing/web-platform/meta/MANIFEST.json @@ -307,6 +307,1038 @@ {} ] ], + "core-aam/alert-manual.html": [ + [ + "/core-aam/alert-manual.html", + {} + ] + ], + "core-aam/alertdialog-manual.html": [ + [ + "/core-aam/alertdialog-manual.html", + {} + ] + ], + "core-aam/application-manual.html": [ + [ + "/core-aam/application-manual.html", + {} + ] + ], + "core-aam/aria-atomic_false-manual.html": [ + [ + "/core-aam/aria-atomic_false-manual.html", + {} + ] + ], + "core-aam/aria-atomic_true-manual.html": [ + [ + "/core-aam/aria-atomic_true-manual.html", + {} + ] + ], + "core-aam/aria-autocomplete_both_new-manual.html": [ + [ + "/core-aam/aria-autocomplete_both_new-manual.html", + {} + ] + ], + "core-aam/aria-autocomplete_inline_new-manual.html": [ + [ + "/core-aam/aria-autocomplete_inline_new-manual.html", + {} + ] + ], + "core-aam/aria-autocomplete_list_new-manual.html": [ + [ + "/core-aam/aria-autocomplete_list_new-manual.html", + {} + ] + ], + "core-aam/aria-busy_false-manual.html": [ + [ + "/core-aam/aria-busy_false-manual.html", + {} + ] + ], + "core-aam/aria-busy_true-manual.html": [ + [ + "/core-aam/aria-busy_true-manual.html", + {} + ] + ], + "core-aam/aria-checked_false_on_checkbox-manual.html": [ + [ + "/core-aam/aria-checked_false_on_checkbox-manual.html", + {} + ] + ], + "core-aam/aria-checked_false_on_menuitemradio-manual.html": [ + [ + "/core-aam/aria-checked_false_on_menuitemradio-manual.html", + {} + ] + ], + "core-aam/aria-checked_mixed-manual.html": [ + [ + "/core-aam/aria-checked_mixed-manual.html", + {} + ] + ], + "core-aam/aria-checked_true_on_checkbox-manual.html": [ + [ + "/core-aam/aria-checked_true_on_checkbox-manual.html", + {} + ] + ], + "core-aam/aria-checked_true_on_menuitemradio-manual.html": [ + [ + "/core-aam/aria-checked_true_on_menuitemradio-manual.html", + {} + ] + ], + "core-aam/aria-colcount_new-manual.html": [ + [ + "/core-aam/aria-colcount_new-manual.html", + {} + ] + ], + "core-aam/aria-colindex_new-manual.html": [ + [ + "/core-aam/aria-colindex_new-manual.html", + {} + ] + ], + "core-aam/aria-colspan_new-manual.html": [ + [ + "/core-aam/aria-colspan_new-manual.html", + {} + ] + ], + "core-aam/aria-controls-manual.html": [ + [ + "/core-aam/aria-controls-manual.html", + {} + ] + ], + "core-aam/aria-current_with_non-false_allowed_value_new-manual.html": [ + [ + "/core-aam/aria-current_with_non-false_allowed_value_new-manual.html", + {} + ] + ], + "core-aam/aria-current_with_unrecognized_value_new-manual.html": [ + [ + "/core-aam/aria-current_with_unrecognized_value_new-manual.html", + {} + ] + ], + "core-aam/aria-describedby-manual.html": [ + [ + "/core-aam/aria-describedby-manual.html", + {} + ] + ], + "core-aam/aria-details_new-manual.html": [ + [ + "/core-aam/aria-details_new-manual.html", + {} + ] + ], + "core-aam/aria-disabled_false-manual.html": [ + [ + "/core-aam/aria-disabled_false-manual.html", + {} + ] + ], + "core-aam/aria-disabled_true-manual.html": [ + [ + "/core-aam/aria-disabled_true-manual.html", + {} + ] + ], + "core-aam/aria-dropeffect_copy-manual.html": [ + [ + "/core-aam/aria-dropeffect_copy-manual.html", + {} + ] + ], + "core-aam/aria-dropeffect_execute-manual.html": [ + [ + "/core-aam/aria-dropeffect_execute-manual.html", + {} + ] + ], + "core-aam/aria-dropeffect_link-manual.html": [ + [ + "/core-aam/aria-dropeffect_link-manual.html", + {} + ] + ], + "core-aam/aria-dropeffect_move-manual.html": [ + [ + "/core-aam/aria-dropeffect_move-manual.html", + {} + ] + ], + "core-aam/aria-dropeffect_none-manual.html": [ + [ + "/core-aam/aria-dropeffect_none-manual.html", + {} + ] + ], + "core-aam/aria-dropeffect_popup-manual.html": [ + [ + "/core-aam/aria-dropeffect_popup-manual.html", + {} + ] + ], + "core-aam/aria-errormessage-manual.html": [ + [ + "/core-aam/aria-errormessage-manual.html", + {} + ] + ], + "core-aam/aria-expanded_false-manual.html": [ + [ + "/core-aam/aria-expanded_false-manual.html", + {} + ] + ], + "core-aam/aria-expanded_true-manual.html": [ + [ + "/core-aam/aria-expanded_true-manual.html", + {} + ] + ], + "core-aam/aria-flowto-manual.html": [ + [ + "/core-aam/aria-flowto-manual.html", + {} + ] + ], + "core-aam/aria-grabbed_false-manual.html": [ + [ + "/core-aam/aria-grabbed_false-manual.html", + {} + ] + ], + "core-aam/aria-grabbed_true-manual.html": [ + [ + "/core-aam/aria-grabbed_true-manual.html", + {} + ] + ], + "core-aam/aria-haspopup_dialog_new-manual.html": [ + [ + "/core-aam/aria-haspopup_dialog_new-manual.html", + {} + ] + ], + "core-aam/aria-haspopup_false-manual.html": [ + [ + "/core-aam/aria-haspopup_false-manual.html", + {} + ] + ], + "core-aam/aria-haspopup_listbox_new-manual.html": [ + [ + "/core-aam/aria-haspopup_listbox_new-manual.html", + {} + ] + ], + "core-aam/aria-haspopup_menu_new-manual.html": [ + [ + "/core-aam/aria-haspopup_menu_new-manual.html", + {} + ] + ], + "core-aam/aria-haspopup_tree_new-manual.html": [ + [ + "/core-aam/aria-haspopup_tree_new-manual.html", + {} + ] + ], + "core-aam/aria-haspopup_true-manual.html": [ + [ + "/core-aam/aria-haspopup_true-manual.html", + {} + ] + ], + "core-aam/aria-hidden_true-manual.html": [ + [ + "/core-aam/aria-hidden_true-manual.html", + {} + ] + ], + "core-aam/aria-invalid_false-manual.html": [ + [ + "/core-aam/aria-invalid_false-manual.html", + {} + ] + ], + "core-aam/aria-invalid_grammar-manual.html": [ + [ + "/core-aam/aria-invalid_grammar-manual.html", + {} + ] + ], + "core-aam/aria-invalid_spelling-manual.html": [ + [ + "/core-aam/aria-invalid_spelling-manual.html", + {} + ] + ], + "core-aam/aria-invalid_true-manual.html": [ + [ + "/core-aam/aria-invalid_true-manual.html", + {} + ] + ], + "core-aam/aria-invalid_with_unrecognized_value-manual.html": [ + [ + "/core-aam/aria-invalid_with_unrecognized_value-manual.html", + {} + ] + ], + "core-aam/aria-keyshortcuts_new-manual.html": [ + [ + "/core-aam/aria-keyshortcuts_new-manual.html", + {} + ] + ], + "core-aam/aria-label-manual.html": [ + [ + "/core-aam/aria-label-manual.html", + {} + ] + ], + "core-aam/aria-labelledby-manual.html": [ + [ + "/core-aam/aria-labelledby-manual.html", + {} + ] + ], + "core-aam/aria-level_on_heading_new-manual.html": [ + [ + "/core-aam/aria-level_on_heading_new-manual.html", + {} + ] + ], + "core-aam/aria-level_on_non-heading-manual.html": [ + [ + "/core-aam/aria-level_on_non-heading-manual.html", + {} + ] + ], + "core-aam/aria-live_assertive-manual.html": [ + [ + "/core-aam/aria-live_assertive-manual.html", + {} + ] + ], + "core-aam/aria-live_off-manual.html": [ + [ + "/core-aam/aria-live_off-manual.html", + {} + ] + ], + "core-aam/aria-live_polite-manual.html": [ + [ + "/core-aam/aria-live_polite-manual.html", + {} + ] + ], + "core-aam/aria-modal_false_new-manual.html": [ + [ + "/core-aam/aria-modal_false_new-manual.html", + {} + ] + ], + "core-aam/aria-modal_true_new-manual.html": [ + [ + "/core-aam/aria-modal_true_new-manual.html", + {} + ] + ], + "core-aam/aria-multiline_false-manual.html": [ + [ + "/core-aam/aria-multiline_false-manual.html", + {} + ] + ], + "core-aam/aria-multiline_true-manual.html": [ + [ + "/core-aam/aria-multiline_true-manual.html", + {} + ] + ], + "core-aam/aria-multiselectable_false-manual.html": [ + [ + "/core-aam/aria-multiselectable_false-manual.html", + {} + ] + ], + "core-aam/aria-multiselectable_true-manual.html": [ + [ + "/core-aam/aria-multiselectable_true-manual.html", + {} + ] + ], + "core-aam/aria-orientation_horizontal-manual.html": [ + [ + "/core-aam/aria-orientation_horizontal-manual.html", + {} + ] + ], + "core-aam/aria-orientation_undefined_new-manual.html": [ + [ + "/core-aam/aria-orientation_undefined_new-manual.html", + {} + ] + ], + "core-aam/aria-orientation_vertical-manual.html": [ + [ + "/core-aam/aria-orientation_vertical-manual.html", + {} + ] + ], + "core-aam/aria-owns_may_need_manual_verification-manual.html": [ + [ + "/core-aam/aria-owns_may_need_manual_verification-manual.html", + {} + ] + ], + "core-aam/aria-placeholder_new-manual.html": [ + [ + "/core-aam/aria-placeholder_new-manual.html", + {} + ] + ], + "core-aam/aria-posinset-manual.html": [ + [ + "/core-aam/aria-posinset-manual.html", + {} + ] + ], + "core-aam/aria-pressed_false-manual.html": [ + [ + "/core-aam/aria-pressed_false-manual.html", + {} + ] + ], + "core-aam/aria-pressed_mixed-manual.html": [ + [ + "/core-aam/aria-pressed_mixed-manual.html", + {} + ] + ], + "core-aam/aria-pressed_true-manual.html": [ + [ + "/core-aam/aria-pressed_true-manual.html", + {} + ] + ], + "core-aam/aria-readonly_false-manual.html": [ + [ + "/core-aam/aria-readonly_false-manual.html", + {} + ] + ], + "core-aam/aria-readonly_is_unspecified_on_gridcell_new-manual.html": [ + [ + "/core-aam/aria-readonly_is_unspecified_on_gridcell_new-manual.html", + {} + ] + ], + "core-aam/aria-readonly_true_on_checkbox-manual.html": [ + [ + "/core-aam/aria-readonly_true_on_checkbox-manual.html", + {} + ] + ], + "core-aam/aria-readonly_true_on_radiogroup-manual.html": [ + [ + "/core-aam/aria-readonly_true_on_radiogroup-manual.html", + {} + ] + ], + "core-aam/aria-readonly_true_on_textbox-manual.html": [ + [ + "/core-aam/aria-readonly_true_on_textbox-manual.html", + {} + ] + ], + "core-aam/aria-relevant-manual.html": [ + [ + "/core-aam/aria-relevant-manual.html", + {} + ] + ], + "core-aam/aria-required_true-manual.html": [ + [ + "/core-aam/aria-required_true-manual.html", + {} + ] + ], + "core-aam/aria-roledescription_is_empty_or_whitespace_characters_new-manual.html": [ + [ + "/core-aam/aria-roledescription_is_empty_or_whitespace_characters_new-manual.html", + {} + ] + ], + "core-aam/aria-roledescription_new-manual.html": [ + [ + "/core-aam/aria-roledescription_new-manual.html", + {} + ] + ], + "core-aam/aria-rowcount_new-manual.html": [ + [ + "/core-aam/aria-rowcount_new-manual.html", + {} + ] + ], + "core-aam/aria-rowindex_new-manual.html": [ + [ + "/core-aam/aria-rowindex_new-manual.html", + {} + ] + ], + "core-aam/aria-rowspan_new-manual.html": [ + [ + "/core-aam/aria-rowspan_new-manual.html", + {} + ] + ], + "core-aam/aria-selected_false-manual.html": [ + [ + "/core-aam/aria-selected_false-manual.html", + {} + ] + ], + "core-aam/aria-selected_true-manual.html": [ + [ + "/core-aam/aria-selected_true-manual.html", + {} + ] + ], + "core-aam/aria-setsize_-1-manual.html": [ + [ + "/core-aam/aria-setsize_-1-manual.html", + {} + ] + ], + "core-aam/aria-setsize_3-manual.html": [ + [ + "/core-aam/aria-setsize_3-manual.html", + {} + ] + ], + "core-aam/aria-sort_ascending-manual.html": [ + [ + "/core-aam/aria-sort_ascending-manual.html", + {} + ] + ], + "core-aam/aria-sort_descending-manual.html": [ + [ + "/core-aam/aria-sort_descending-manual.html", + {} + ] + ], + "core-aam/aria-sort_none-manual.html": [ + [ + "/core-aam/aria-sort_none-manual.html", + {} + ] + ], + "core-aam/aria-sort_other-manual.html": [ + [ + "/core-aam/aria-sort_other-manual.html", + {} + ] + ], + "core-aam/aria-valuemax-manual.html": [ + [ + "/core-aam/aria-valuemax-manual.html", + {} + ] + ], + "core-aam/aria-valuemin-manual.html": [ + [ + "/core-aam/aria-valuemin-manual.html", + {} + ] + ], + "core-aam/aria-valuenow-manual.html": [ + [ + "/core-aam/aria-valuenow-manual.html", + {} + ] + ], + "core-aam/aria-valuetext-manual.html": [ + [ + "/core-aam/aria-valuetext-manual.html", + {} + ] + ], + "core-aam/article-manual.html": [ + [ + "/core-aam/article-manual.html", + {} + ] + ], + "core-aam/banner_new-manual.html": [ + [ + "/core-aam/banner_new-manual.html", + {} + ] + ], + "core-aam/button_with_aria-haspopup_dialog_new-manual.html": [ + [ + "/core-aam/button_with_aria-haspopup_dialog_new-manual.html", + {} + ] + ], + "core-aam/button_with_aria-haspopup_true_new-manual.html": [ + [ + "/core-aam/button_with_aria-haspopup_true_new-manual.html", + {} + ] + ], + "core-aam/button_with_default_values_for_aria-pressed_and_aria-haspopup-manual.html": [ + [ + "/core-aam/button_with_default_values_for_aria-pressed_and_aria-haspopup-manual.html", + {} + ] + ], + "core-aam/button_with_defined_value_for_aria-pressed-manual.html": [ + [ + "/core-aam/button_with_defined_value_for_aria-pressed-manual.html", + {} + ] + ], + "core-aam/cell_new-manual.html": [ + [ + "/core-aam/cell_new-manual.html", + {} + ] + ], + "core-aam/checkbox-manual.html": [ + [ + "/core-aam/checkbox-manual.html", + {} + ] + ], + "core-aam/columnheader-manual.html": [ + [ + "/core-aam/columnheader-manual.html", + {} + ] + ], + "core-aam/combobox-manual.html": [ + [ + "/core-aam/combobox-manual.html", + {} + ] + ], + "core-aam/complementary_new-manual.html": [ + [ + "/core-aam/complementary_new-manual.html", + {} + ] + ], + "core-aam/contentinfo_new-manual.html": [ + [ + "/core-aam/contentinfo_new-manual.html", + {} + ] + ], + "core-aam/definition-manual.html": [ + [ + "/core-aam/definition-manual.html", + {} + ] + ], + "core-aam/dialog-manual.html": [ + [ + "/core-aam/dialog-manual.html", + {} + ] + ], + "core-aam/directory-manual.html": [ + [ + "/core-aam/directory-manual.html", + {} + ] + ], + "core-aam/document-manual.html": [ + [ + "/core-aam/document-manual.html", + {} + ] + ], + "core-aam/feed_new-manual.html": [ + [ + "/core-aam/feed_new-manual.html", + {} + ] + ], + "core-aam/figure_new-manual.html": [ + [ + "/core-aam/figure_new-manual.html", + {} + ] + ], + "core-aam/form_new-manual.html": [ + [ + "/core-aam/form_new-manual.html", + {} + ] + ], + "core-aam/grid-manual.html": [ + [ + "/core-aam/grid-manual.html", + {} + ] + ], + "core-aam/gridcell-manual.html": [ + [ + "/core-aam/gridcell-manual.html", + {} + ] + ], + "core-aam/group-manual.html": [ + [ + "/core-aam/group-manual.html", + {} + ] + ], + "core-aam/heading-manual.html": [ + [ + "/core-aam/heading-manual.html", + {} + ] + ], + "core-aam/img-manual.html": [ + [ + "/core-aam/img-manual.html", + {} + ] + ], + "core-aam/link-manual.html": [ + [ + "/core-aam/link-manual.html", + {} + ] + ], + "core-aam/list-manual.html": [ + [ + "/core-aam/list-manual.html", + {} + ] + ], + "core-aam/listbox_not_owned_by_or_child_of_combobox-manual.html": [ + [ + "/core-aam/listbox_not_owned_by_or_child_of_combobox-manual.html", + {} + ] + ], + "core-aam/listbox_owned_by_or_child_of_combobox-manual.html": [ + [ + "/core-aam/listbox_owned_by_or_child_of_combobox-manual.html", + {} + ] + ], + "core-aam/listitem-manual.html": [ + [ + "/core-aam/listitem-manual.html", + {} + ] + ], + "core-aam/log-manual.html": [ + [ + "/core-aam/log-manual.html", + {} + ] + ], + "core-aam/main_new-manual.html": [ + [ + "/core-aam/main_new-manual.html", + {} + ] + ], + "core-aam/marquee-manual.html": [ + [ + "/core-aam/marquee-manual.html", + {} + ] + ], + "core-aam/math-manual.html": [ + [ + "/core-aam/math-manual.html", + {} + ] + ], + "core-aam/menu-manual.html": [ + [ + "/core-aam/menu-manual.html", + {} + ] + ], + "core-aam/menubar-manual.html": [ + [ + "/core-aam/menubar-manual.html", + {} + ] + ], + "core-aam/menuitem_not_owned_by_or_child_of_group-manual.html": [ + [ + "/core-aam/menuitem_not_owned_by_or_child_of_group-manual.html", + {} + ] + ], + "core-aam/menuitem_owned_by_or_child_of_group-manual.html": [ + [ + "/core-aam/menuitem_owned_by_or_child_of_group-manual.html", + {} + ] + ], + "core-aam/menuitemcheckbox-manual.html": [ + [ + "/core-aam/menuitemcheckbox-manual.html", + {} + ] + ], + "core-aam/menuitemradio-manual.html": [ + [ + "/core-aam/menuitemradio-manual.html", + {} + ] + ], + "core-aam/navigation_new-manual.html": [ + [ + "/core-aam/navigation_new-manual.html", + {} + ] + ], + "core-aam/none_new-manual.html": [ + [ + "/core-aam/none_new-manual.html", + {} + ] + ], + "core-aam/note-manual.html": [ + [ + "/core-aam/note-manual.html", + {} + ] + ], + "core-aam/option_inside_combobox-manual.html": [ + [ + "/core-aam/option_inside_combobox-manual.html", + {} + ] + ], + "core-aam/option_not_inside_combobox-manual.html": [ + [ + "/core-aam/option_not_inside_combobox-manual.html", + {} + ] + ], + "core-aam/presentation-manual.html": [ + [ + "/core-aam/presentation-manual.html", + {} + ] + ], + "core-aam/progressbar-manual.html": [ + [ + "/core-aam/progressbar-manual.html", + {} + ] + ], + "core-aam/radio-manual.html": [ + [ + "/core-aam/radio-manual.html", + {} + ] + ], + "core-aam/radiogroup-manual.html": [ + [ + "/core-aam/radiogroup-manual.html", + {} + ] + ], + "core-aam/region_with_an_accessible_name_new-manual.html": [ + [ + "/core-aam/region_with_an_accessible_name_new-manual.html", + {} + ] + ], + "core-aam/region_without_an_accessible_name_new-manual.html": [ + [ + "/core-aam/region_without_an_accessible_name_new-manual.html", + {} + ] + ], + "core-aam/row_inside_treegrid-manual.html": [ + [ + "/core-aam/row_inside_treegrid-manual.html", + {} + ] + ], + "core-aam/row_not_inside_treegrid-manual.html": [ + [ + "/core-aam/row_not_inside_treegrid-manual.html", + {} + ] + ], + "core-aam/rowgroup-manual.html": [ + [ + "/core-aam/rowgroup-manual.html", + {} + ] + ], + "core-aam/rowheader-manual.html": [ + [ + "/core-aam/rowheader-manual.html", + {} + ] + ], + "core-aam/scrollbar-manual.html": [ + [ + "/core-aam/scrollbar-manual.html", + {} + ] + ], + "core-aam/search_new-manual.html": [ + [ + "/core-aam/search_new-manual.html", + {} + ] + ], + "core-aam/searchbox_new-manual.html": [ + [ + "/core-aam/searchbox_new-manual.html", + {} + ] + ], + "core-aam/separator_focusable_new-manual.html": [ + [ + "/core-aam/separator_focusable_new-manual.html", + {} + ] + ], + "core-aam/separator_non-focusable-manual.html": [ + [ + "/core-aam/separator_non-focusable-manual.html", + {} + ] + ], + "core-aam/slider-manual.html": [ + [ + "/core-aam/slider-manual.html", + {} + ] + ], + "core-aam/spinbutton-manual.html": [ + [ + "/core-aam/spinbutton-manual.html", + {} + ] + ], + "core-aam/status-manual.html": [ + [ + "/core-aam/status-manual.html", + {} + ] + ], + "core-aam/switch_new-manual.html": [ + [ + "/core-aam/switch_new-manual.html", + {} + ] + ], + "core-aam/tab-manual.html": [ + [ + "/core-aam/tab-manual.html", + {} + ] + ], + "core-aam/table_new-manual.html": [ + [ + "/core-aam/table_new-manual.html", + {} + ] + ], + "core-aam/tablist-manual.html": [ + [ + "/core-aam/tablist-manual.html", + {} + ] + ], + "core-aam/tabpanel-manual.html": [ + [ + "/core-aam/tabpanel-manual.html", + {} + ] + ], + "core-aam/term_new-manual.html": [ + [ + "/core-aam/term_new-manual.html", + {} + ] + ], + "core-aam/textbox_when_aria-multiline_is_false-manual.html": [ + [ + "/core-aam/textbox_when_aria-multiline_is_false-manual.html", + {} + ] + ], + "core-aam/textbox_when_aria-multiline_is_true-manual.html": [ + [ + "/core-aam/textbox_when_aria-multiline_is_true-manual.html", + {} + ] + ], + "core-aam/timer-manual.html": [ + [ + "/core-aam/timer-manual.html", + {} + ] + ], + "core-aam/toolbar-manual.html": [ + [ + "/core-aam/toolbar-manual.html", + {} + ] + ], + "core-aam/tooltip-manual.html": [ + [ + "/core-aam/tooltip-manual.html", + {} + ] + ], + "core-aam/tree-manual.html": [ + [ + "/core-aam/tree-manual.html", + {} + ] + ], + "core-aam/treegrid-manual.html": [ + [ + "/core-aam/treegrid-manual.html", + {} + ] + ], + "core-aam/treeitem-manual.html": [ + [ + "/core-aam/treeitem-manual.html", + {} + ] + ], "css/CSS2/backgrounds/background-012.xht": [ [ "/css/CSS2/backgrounds/background-012.xht", @@ -10279,6 +11311,12 @@ {} ] ], + "cssom-view/scrollBoundaryBehavior-manual.html": [ + [ + "/cssom-view/scrollBoundaryBehavior-manual.html", + {} + ] + ], "dpub-aam/doc-abstract-manual.html": [ [ "/dpub-aam/doc-abstract-manual.html", @@ -11965,9 +13003,21 @@ {} ] ], - "input-events/input-events-typing-data-manual.html": [ + "input-events/input-events-cut-paste-manual.html": [ [ - "/input-events/input-events-typing-data-manual.html", + "/input-events/input-events-cut-paste-manual.html", + {} + ] + ], + "input-events/input-events-get-target-ranges-manual.html": [ + [ + "/input-events/input-events-get-target-ranges-manual.html", + {} + ] + ], + "input-events/input-events-typing-manual.html": [ + [ + "/input-events/input-events-typing-manual.html", {} ] ], @@ -12373,6 +13423,24 @@ {} ] ], + "payment-request/PaymentRequestUpdateEvent/updateWith-duplicate-shipping-options-manual.https.html": [ + [ + "/payment-request/PaymentRequestUpdateEvent/updateWith-duplicate-shipping-options-manual.https.html", + {} + ] + ], + "payment-request/algorithms-manual.https.html": [ + [ + "/payment-request/algorithms-manual.https.html", + {} + ] + ], + "payment-request/change-shipping-option-manual.https.html": [ + [ + "/payment-request/change-shipping-option-manual.https.html", + {} + ] + ], "payment-request/payment-response/complete-method-manual.https.html": [ [ "/payment-request/payment-response/complete-method-manual.https.html", @@ -12421,12 +13489,24 @@ {} ] ], + "payment-request/shipping-address-changed-manual.https.html": [ + [ + "/payment-request/shipping-address-changed-manual.https.html", + {} + ] + ], "payment-request/updateWith-method-pmi-handling-manual.https.html": [ [ "/payment-request/updateWith-method-pmi-handling-manual.https.html", {} ] ], + "payment-request/user-abort-algorithm-manual.https.html": [ + [ + "/payment-request/user-abort-algorithm-manual.https.html", + {} + ] + ], "pointerevents/compat/pointerevent_touch-action_two-finger_interaction-manual.html": [ [ "/pointerevents/compat/pointerevent_touch-action_two-finger_interaction-manual.html", @@ -16381,6 +17461,12 @@ {} ] ], + "viewport/viewport-attribute-event-handlers-manual.html": [ + [ + "/viewport/viewport-attribute-event-handlers-manual.html", + {} + ] + ], "viewport/viewport-dimensions-custom-scrollbars-manual.html": [ [ "/viewport/viewport-dimensions-custom-scrollbars-manual.html", @@ -18675,12 +19761,12 @@ {} ] ], - "css-font-display/font-display.html": [ + "css-fonts/font-display/font-display.html": [ [ - "/css-font-display/font-display.html", + "/css-fonts/font-display/font-display.html", [ [ - "/css-font-display/font-display-ref.html", + "/css-fonts/font-display/font-display-ref.html", "==" ] ], @@ -19335,6 +20421,54 @@ {} ] ], + "css-paint-api/parse-input-arguments-019.html": [ + [ + "/css-paint-api/parse-input-arguments-019.html", + [ + [ + "/css-paint-api/parse-input-arguments-ref.html", + "==" + ] + ], + {} + ] + ], + "css-paint-api/parse-input-arguments-020.html": [ + [ + "/css-paint-api/parse-input-arguments-020.html", + [ + [ + "/css-paint-api/parse-input-arguments-ref.html", + "==" + ] + ], + {} + ] + ], + "css-paint-api/parse-input-arguments-021.html": [ + [ + "/css-paint-api/parse-input-arguments-021.html", + [ + [ + "/css-paint-api/parse-input-arguments-ref.html", + "==" + ] + ], + {} + ] + ], + "css-paint-api/parse-input-arguments-022.html": [ + [ + "/css-paint-api/parse-input-arguments-022.html", + [ + [ + "/css-paint-api/parse-input-arguments-ref.html", + "==" + ] + ], + {} + ] + ], "css-paint-api/registered-properties-in-custom-paint.html": [ [ "/css-paint-api/registered-properties-in-custom-paint.html", @@ -111195,12 +112329,12 @@ {} ] ], - "css/css-logical-props-1/cascading-001.html": [ + "css/css-logical-1/cascading-001.html": [ [ - "/css/css-logical-props-1/cascading-001.html", + "/css/css-logical-1/cascading-001.html", [ [ - "/css/css-logical-props-1/cascading-001-ref.html", + "/css/css-logical-1/cascading-001-ref.html", "==" ] ], @@ -126751,6 +127885,342 @@ {} ] ], + "css/css-text-3/white-space/pre-wrap-001.html": [ + [ + "/css/css-text-3/white-space/pre-wrap-001.html", + [ + [ + "/css/css-text-3/white-space/reference/pre-wrap-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-text-3/white-space/pre-wrap-002.html": [ + [ + "/css/css-text-3/white-space/pre-wrap-002.html", + [ + [ + "/css/css-text-3/white-space/reference/pre-wrap-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-text-3/white-space/pre-wrap-003.html": [ + [ + "/css/css-text-3/white-space/pre-wrap-003.html", + [ + [ + "/css/css-text-3/white-space/reference/pre-wrap-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-text-3/white-space/pre-wrap-004.html": [ + [ + "/css/css-text-3/white-space/pre-wrap-004.html", + [ + [ + "/css/css-text-3/white-space/reference/pre-wrap-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-text-3/white-space/pre-wrap-005.html": [ + [ + "/css/css-text-3/white-space/pre-wrap-005.html", + [ + [ + "/css/css-text-3/white-space/reference/pre-wrap-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-text-3/white-space/pre-wrap-006.html": [ + [ + "/css/css-text-3/white-space/pre-wrap-006.html", + [ + [ + "/css/css-text-3/white-space/reference/pre-wrap-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-text-3/white-space/pre-wrap-007.html": [ + [ + "/css/css-text-3/white-space/pre-wrap-007.html", + [ + [ + "/css/css-text-3/white-space/reference/pre-wrap-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-text-3/white-space/pre-wrap-008.html": [ + [ + "/css/css-text-3/white-space/pre-wrap-008.html", + [ + [ + "/css/css-text-3/white-space/reference/pre-wrap-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-text-3/white-space/pre-wrap-009.html": [ + [ + "/css/css-text-3/white-space/pre-wrap-009.html", + [ + [ + "/css/css-text-3/white-space/reference/pre-wrap-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-text-3/white-space/pre-wrap-010.html": [ + [ + "/css/css-text-3/white-space/pre-wrap-010.html", + [ + [ + "/css/css-text-3/white-space/reference/pre-wrap-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-text-3/white-space/pre-wrap-011.html": [ + [ + "/css/css-text-3/white-space/pre-wrap-011.html", + [ + [ + "/css/css-text-3/white-space/reference/pre-wrap-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-text-3/white-space/pre-wrap-012.html": [ + [ + "/css/css-text-3/white-space/pre-wrap-012.html", + [ + [ + "/css/css-text-3/white-space/reference/pre-wrap-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-text-3/white-space/pre-wrap-013.html": [ + [ + "/css/css-text-3/white-space/pre-wrap-013.html", + [ + [ + "/css/css-text-3/white-space/reference/pre-wrap-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-text-3/white-space/pre-wrap-014.html": [ + [ + "/css/css-text-3/white-space/pre-wrap-014.html", + [ + [ + "/css/css-text-3/white-space/reference/pre-wrap-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-text-3/white-space/textarea-pre-wrap-001.html": [ + [ + "/css/css-text-3/white-space/textarea-pre-wrap-001.html", + [ + [ + "/css/css-text-3/white-space/reference/textarea-pre-wrap-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-text-3/white-space/textarea-pre-wrap-002.html": [ + [ + "/css/css-text-3/white-space/textarea-pre-wrap-002.html", + [ + [ + "/css/css-text-3/white-space/reference/textarea-pre-wrap-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-text-3/white-space/textarea-pre-wrap-003.html": [ + [ + "/css/css-text-3/white-space/textarea-pre-wrap-003.html", + [ + [ + "/css/css-text-3/white-space/reference/textarea-pre-wrap-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-text-3/white-space/textarea-pre-wrap-004.html": [ + [ + "/css/css-text-3/white-space/textarea-pre-wrap-004.html", + [ + [ + "/css/css-text-3/white-space/reference/textarea-pre-wrap-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-text-3/white-space/textarea-pre-wrap-005.html": [ + [ + "/css/css-text-3/white-space/textarea-pre-wrap-005.html", + [ + [ + "/css/css-text-3/white-space/reference/textarea-pre-wrap-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-text-3/white-space/textarea-pre-wrap-006.html": [ + [ + "/css/css-text-3/white-space/textarea-pre-wrap-006.html", + [ + [ + "/css/css-text-3/white-space/reference/textarea-pre-wrap-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-text-3/white-space/textarea-pre-wrap-007.html": [ + [ + "/css/css-text-3/white-space/textarea-pre-wrap-007.html", + [ + [ + "/css/css-text-3/white-space/reference/textarea-pre-wrap-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-text-3/white-space/textarea-pre-wrap-008.html": [ + [ + "/css/css-text-3/white-space/textarea-pre-wrap-008.html", + [ + [ + "/css/css-text-3/white-space/reference/textarea-pre-wrap-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-text-3/white-space/textarea-pre-wrap-009.html": [ + [ + "/css/css-text-3/white-space/textarea-pre-wrap-009.html", + [ + [ + "/css/css-text-3/white-space/reference/textarea-pre-wrap-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-text-3/white-space/textarea-pre-wrap-010.html": [ + [ + "/css/css-text-3/white-space/textarea-pre-wrap-010.html", + [ + [ + "/css/css-text-3/white-space/reference/textarea-pre-wrap-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-text-3/white-space/textarea-pre-wrap-011.html": [ + [ + "/css/css-text-3/white-space/textarea-pre-wrap-011.html", + [ + [ + "/css/css-text-3/white-space/reference/textarea-pre-wrap-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-text-3/white-space/textarea-pre-wrap-012.html": [ + [ + "/css/css-text-3/white-space/textarea-pre-wrap-012.html", + [ + [ + "/css/css-text-3/white-space/reference/textarea-pre-wrap-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-text-3/white-space/textarea-pre-wrap-013.html": [ + [ + "/css/css-text-3/white-space/textarea-pre-wrap-013.html", + [ + [ + "/css/css-text-3/white-space/reference/textarea-pre-wrap-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-text-3/white-space/textarea-pre-wrap-014.html": [ + [ + "/css/css-text-3/white-space/textarea-pre-wrap-014.html", + [ + [ + "/css/css-text-3/white-space/reference/textarea-pre-wrap-001-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-text-3/white-space/white-space-collapsing-discard-001.xht": [ [ "/css/css-text-3/white-space/white-space-collapsing-discard-001.xht", @@ -177664,6 +179134,11 @@ {} ] ], + "XMLHttpRequest/resources/access-control-allow-with-body.py": [ + [ + {} + ] + ], "XMLHttpRequest/resources/access-control-auth-basic.py": [ [ {} @@ -177684,6 +179159,11 @@ {} ] ], + "XMLHttpRequest/resources/access-control-basic-cors-safelisted-request-headers.py": [ + [ + {} + ] + ], "XMLHttpRequest/resources/access-control-basic-denied.py": [ [ {} @@ -177714,6 +179194,16 @@ {} ] ], + "XMLHttpRequest/resources/access-control-basic-whitelist-response-headers.py": [ + [ + {} + ] + ], + "XMLHttpRequest/resources/access-control-cookie.py": [ + [ + {} + ] + ], "XMLHttpRequest/resources/access-control-origin-header.py": [ [ {} @@ -177729,11 +179219,31 @@ {} ] ], + "XMLHttpRequest/resources/access-control-preflight-request-header-sorted.py": [ + [ + {} + ] + ], + "XMLHttpRequest/resources/access-control-preflight-request-headers-origin.py": [ + [ + {} + ] + ], "XMLHttpRequest/resources/access-control-preflight-request-invalid-status.py": [ [ {} ] ], + "XMLHttpRequest/resources/access-control-preflight-request-must-not-contain-cookie.py": [ + [ + {} + ] + ], + "XMLHttpRequest/resources/access-control-sandboxed-iframe.html": [ + [ + {} + ] + ], "XMLHttpRequest/resources/auth1/auth.py": [ [ {} @@ -180574,11 +182084,6 @@ {} ] ], - "auxclick/OWNERS": [ - [ - {} - ] - ], "background-fetch/OWNERS": [ [ {} @@ -180589,6 +182094,16 @@ {} ] ], + "background-fetch/resources/sw.js": [ + [ + {} + ] + ], + "background-fetch/resources/utils.js": [ + [ + {} + ] + ], "battery-status/OWNERS": [ [ {} @@ -180664,7 +182179,7 @@ {} ] ], - "clipboard/OWNERS": [ + "clipboard-apis/OWNERS": [ [ {} ] @@ -203504,26 +205019,6 @@ {} ] ], - "content-security-policy/blink-contrib/object-src-applet-archive-codebase.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/object-src-applet-archive.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/object-src-applet-code-codebase.sub.html.sub.headers": [ - [ - {} - ] - ], - "content-security-policy/blink-contrib/object-src-applet-code.sub.html.sub.headers": [ - [ - {} - ] - ], "content-security-policy/blink-contrib/object-src-no-url-allowed.sub.html.sub.headers": [ [ {} @@ -204619,6 +206114,16 @@ {} ] ], + "core-aam/OWNERS": [ + [ + {} + ] + ], + "core-aam/README.md": [ + [ + {} + ] + ], "cors/OWNERS": [ [ {} @@ -204699,12 +206204,12 @@ {} ] ], - "css-font-display/font-display-ref.html": [ + "css-fonts/font-display/font-display-ref.html": [ [ {} ] ], - "css-font-display/resources/slow-ahem-loading.py": [ + "css-fonts/font-display/resources/slow-ahem-loading.py": [ [ {} ] @@ -237239,12 +238744,12 @@ {} ] ], - "css/css-grid-1/grid-items/support/100x50-green.png": [ + "css/css-grid-1/grid-items/support/200x200-green.png": [ [ {} ] ], - "css/css-grid-1/grid-items/support/200x200-green.png": [ + "css/css-grid-1/grid-items/support/25x50-green.png": [ [ {} ] @@ -237254,7 +238759,7 @@ {} ] ], - "css/css-grid-1/grid-items/support/50x100-green.png": [ + "css/css-grid-1/grid-items/support/50x25-green.png": [ [ {} ] @@ -237344,6 +238849,11 @@ {} ] ], + "css/css-grid-1/support/style-change.js": [ + [ + {} + ] + ], "css/css-grid-1/test-plan/index.html": [ [ {} @@ -237594,17 +239104,17 @@ {} ] ], - "css/css-logical-properties-1/OWNERS": [ + "css/css-logical-1/OWNERS": [ [ {} ] ], - "css/css-logical-properties-1/resources/style-check.js": [ + "css/css-logical-1/cascading-001-ref.html": [ [ {} ] ], - "css/css-logical-props-1/cascading-001-ref.html": [ + "css/css-logical-1/resources/style-check.js": [ [ {} ] @@ -240999,6 +242509,11 @@ {} ] ], + "css/css-tables-3/support/check-layout-th.js": [ + [ + {} + ] + ], "css/css-tables-3/visibility-collapse-colspan-003-ref.html": [ [ {} @@ -244204,6 +245719,16 @@ {} ] ], + "css/css-text-3/white-space/reference/pre-wrap-001-ref.html": [ + [ + {} + ] + ], + "css/css-text-3/white-space/reference/textarea-pre-wrap-001-ref.html": [ + [ + {} + ] + ], "css/css-text-3/white-space/reference/white-space-collapsing-discard-001-ref.xht": [ [ {} @@ -284394,6 +285919,11 @@ {} ] ], + "cssom/support/xmlss-pi.xhtml": [ + [ + {} + ] + ], "custom-elements/OWNERS": [ [ {} @@ -286784,11 +288314,26 @@ {} ] ], + "feature-policy/OWNERS": [ + [ + {} + ] + ], "feature-policy/README.md": [ [ {} ] ], + "feature-policy/payment-allowed-by-feature-policy.https.sub.html.headers": [ + [ + {} + ] + ], + "feature-policy/payment-disabled-by-feature-policy.https.sub.html.headers": [ + [ + {} + ] + ], "feature-policy/resources/feature-policy-payment.html": [ [ {} @@ -298909,6 +300454,11 @@ {} ] ], + "interfaces/cssom-view.idl": [ + [ + {} + ] + ], "interfaces/cssom.idl": [ [ {} @@ -298944,6 +300494,16 @@ {} ] ], + "interfaces/payment-handler.idl": [ + [ + {} + ] + ], + "interfaces/payment-request.idl": [ + [ + {} + ] + ], "interfaces/remoteplayback.idl": [ [ {} @@ -299024,6 +300584,11 @@ {} ] ], + "longtask-timing/OWNERS": [ + [ + {} + ] + ], "longtask-timing/resources/makelongtask.js": [ [ {} @@ -299679,111 +301244,6 @@ {} ] ], - "microdata/conformance-requirements/.gitkeep": [ - [ - {} - ] - ], - "microdata/converting-html-to-other-formats/.gitkeep": [ - [ - {} - ] - ], - "microdata/converting-html-to-other-formats/json/.gitkeep": [ - [ - {} - ] - ], - "microdata/dependencies/.gitkeep": [ - [ - {} - ] - ], - "microdata/encoding-microdata/.gitkeep": [ - [ - {} - ] - ], - "microdata/encoding-microdata/associating-names-with-items/.gitkeep": [ - [ - {} - ] - ], - "microdata/encoding-microdata/items/.gitkeep": [ - [ - {} - ] - ], - "microdata/encoding-microdata/microdata-and-other-namespaces/.gitkeep": [ - [ - {} - ] - ], - "microdata/encoding-microdata/names-the-itemprop-attribute/.gitkeep": [ - [ - {} - ] - ], - "microdata/encoding-microdata/names-the-itemprop-attribute/original-id.json": [ - [ - {} - ] - ], - "microdata/encoding-microdata/the-microdata-model/.gitkeep": [ - [ - {} - ] - ], - "microdata/encoding-microdata/values/.gitkeep": [ - [ - {} - ] - ], - "microdata/iana/.gitkeep": [ - [ - {} - ] - ], - "microdata/introduction/.gitkeep": [ - [ - {} - ] - ], - "microdata/introduction/global-identifiers-for-items/.gitkeep": [ - [ - {} - ] - ], - "microdata/introduction/overview/.gitkeep": [ - [ - {} - ] - ], - "microdata/introduction/selecting-names-when-defining-vocabularies/.gitkeep": [ - [ - {} - ] - ], - "microdata/introduction/the-basic-syntax/.gitkeep": [ - [ - {} - ] - ], - "microdata/introduction/typed-items/.gitkeep": [ - [ - {} - ] - ], - "microdata/introduction/using-the-microdata-dom-api/.gitkeep": [ - [ - {} - ] - ], - "microdata/terminology/.gitkeep": [ - [ - {} - ] - ], "mixed-content/OWNERS": [ [ {} @@ -301719,6 +303179,26 @@ {} ] ], + "paint-timing/OWNERS": [ + [ + {} + ] + ], + "paint-timing/resources/circle.svg": [ + [ + {} + ] + ], + "paint-timing/resources/circles.png": [ + [ + {} + ] + ], + "payment-handler/OWNERS": [ + [ + {} + ] + ], "payment-method-basic-card/OWNERS": [ [ {} @@ -301749,16 +303229,6 @@ {} ] ], - "payment-request/payment-allowed-by-feature-policy.https.sub.html.headers": [ - [ - {} - ] - ], - "payment-request/payment-disabled-by-feature-policy.https.sub.html.headers": [ - [ - {} - ] - ], "payment-request/payment-request-response-id.html": [ [ {} @@ -301769,6 +303239,16 @@ {} ] ], + "payment-request/resources/page1.html": [ + [ + {} + ] + ], + "payment-request/resources/page2.html": [ + [ + {} + ] + ], "performance-timeline/OWNERS": [ [ {} @@ -306204,11 +307684,6 @@ {} ] ], - "service-workers/service-worker/resources/registration-tests.js": [ - [ - {} - ] - ], "service-workers/service-worker/resources/registration-worker.js": [ [ {} @@ -306594,6 +308069,11 @@ {} ] ], + "streams/readable-byte-streams/brand-checks.js": [ + [ + {} + ] + ], "streams/readable-byte-streams/general.js": [ [ {} @@ -327309,12 +328789,30 @@ {} ] ], + "XMLHttpRequest/access-control-basic-cors-safelisted-request-headers.htm": [ + [ + "/XMLHttpRequest/access-control-basic-cors-safelisted-request-headers.htm", + {} + ] + ], + "XMLHttpRequest/access-control-basic-cors-safelisted-response-headers.htm": [ + [ + "/XMLHttpRequest/access-control-basic-cors-safelisted-response-headers.htm", + {} + ] + ], "XMLHttpRequest/access-control-basic-denied.htm": [ [ "/XMLHttpRequest/access-control-basic-denied.htm", {} ] ], + "XMLHttpRequest/access-control-basic-get-fail-non-simple.htm": [ + [ + "/XMLHttpRequest/access-control-basic-get-fail-non-simple.htm", + {} + ] + ], "XMLHttpRequest/access-control-basic-non-cors-safelisted-content-type.htm": [ [ "/XMLHttpRequest/access-control-basic-non-cors-safelisted-content-type.htm", @@ -327345,6 +328843,18 @@ {} ] ], + "XMLHttpRequest/access-control-preflight-async-method-denied.htm": [ + [ + "/XMLHttpRequest/access-control-preflight-async-method-denied.htm", + {} + ] + ], + "XMLHttpRequest/access-control-preflight-async-not-supported.htm": [ + [ + "/XMLHttpRequest/access-control-preflight-async-not-supported.htm", + {} + ] + ], "XMLHttpRequest/access-control-preflight-credential-async.htm": [ [ "/XMLHttpRequest/access-control-preflight-credential-async.htm", @@ -327357,6 +328867,12 @@ {} ] ], + "XMLHttpRequest/access-control-preflight-headers-async.htm": [ + [ + "/XMLHttpRequest/access-control-preflight-headers-async.htm", + {} + ] + ], "XMLHttpRequest/access-control-preflight-headers-sync.htm": [ [ "/XMLHttpRequest/access-control-preflight-headers-sync.htm", @@ -327369,18 +328885,108 @@ {} ] ], + "XMLHttpRequest/access-control-preflight-request-header-sorted.htm": [ + [ + "/XMLHttpRequest/access-control-preflight-request-header-sorted.htm", + {} + ] + ], + "XMLHttpRequest/access-control-preflight-request-headers-origin.htm": [ + [ + "/XMLHttpRequest/access-control-preflight-request-headers-origin.htm", + {} + ] + ], "XMLHttpRequest/access-control-preflight-request-invalid-status-301.htm": [ [ "/XMLHttpRequest/access-control-preflight-request-invalid-status-301.htm", {} ] ], + "XMLHttpRequest/access-control-preflight-request-invalid-status-400.htm": [ + [ + "/XMLHttpRequest/access-control-preflight-request-invalid-status-400.htm", + {} + ] + ], "XMLHttpRequest/access-control-preflight-request-invalid-status-501.htm": [ [ "/XMLHttpRequest/access-control-preflight-request-invalid-status-501.htm", {} ] ], + "XMLHttpRequest/access-control-preflight-request-must-not-contain-cookie.htm": [ + [ + "/XMLHttpRequest/access-control-preflight-request-must-not-contain-cookie.htm", + {} + ] + ], + "XMLHttpRequest/access-control-preflight-sync-header-denied.htm": [ + [ + "/XMLHttpRequest/access-control-preflight-sync-header-denied.htm", + {} + ] + ], + "XMLHttpRequest/access-control-preflight-sync-method-denied.htm": [ + [ + "/XMLHttpRequest/access-control-preflight-sync-method-denied.htm", + {} + ] + ], + "XMLHttpRequest/access-control-preflight-sync-not-supported.htm": [ + [ + "/XMLHttpRequest/access-control-preflight-sync-not-supported.htm", + {} + ] + ], + "XMLHttpRequest/access-control-recursive-failed-request.htm": [ + [ + "/XMLHttpRequest/access-control-recursive-failed-request.htm", + {} + ] + ], + "XMLHttpRequest/access-control-response-with-body-sync.htm": [ + [ + "/XMLHttpRequest/access-control-response-with-body-sync.htm", + {} + ] + ], + "XMLHttpRequest/access-control-response-with-body.htm": [ + [ + "/XMLHttpRequest/access-control-response-with-body.htm", + {} + ] + ], + "XMLHttpRequest/access-control-response-with-exposed-headers.htm": [ + [ + "/XMLHttpRequest/access-control-response-with-exposed-headers.htm", + {} + ] + ], + "XMLHttpRequest/access-control-sandboxed-iframe-allow-origin-null.htm": [ + [ + "/XMLHttpRequest/access-control-sandboxed-iframe-allow-origin-null.htm", + {} + ] + ], + "XMLHttpRequest/access-control-sandboxed-iframe-allow.htm": [ + [ + "/XMLHttpRequest/access-control-sandboxed-iframe-allow.htm", + {} + ] + ], + "XMLHttpRequest/access-control-sandboxed-iframe-denied-without-wildcard.htm": [ + [ + "/XMLHttpRequest/access-control-sandboxed-iframe-denied-without-wildcard.htm", + {} + ] + ], + "XMLHttpRequest/access-control-sandboxed-iframe-denied.htm": [ + [ + "/XMLHttpRequest/access-control-sandboxed-iframe-denied.htm", + {} + ] + ], "XMLHttpRequest/allow-lists-starting-with-comma.htm": [ [ "/XMLHttpRequest/allow-lists-starting-with-comma.htm", @@ -328689,6 +330295,24 @@ {} ] ], + "background-fetch/content-security-policy.https.window.js": [ + [ + "/background-fetch/content-security-policy.https.window.html", + {} + ] + ], + "background-fetch/credentials-in-url.https.window.js": [ + [ + "/background-fetch/credentials-in-url.https.window.html", + {} + ] + ], + "background-fetch/dangling-markup.https.window.js": [ + [ + "/background-fetch/dangling-markup.https.window.html", + {} + ] + ], "background-fetch/interfaces-worker.https.html": [ [ "/background-fetch/interfaces-worker.https.html", @@ -328707,6 +330331,18 @@ {} ] ], + "background-fetch/mixed-content-and-allowed-schemes.https.window.js": [ + [ + "/background-fetch/mixed-content-and-allowed-schemes.https.window.html", + {} + ] + ], + "background-fetch/port-blocking.https.window.js": [ + [ + "/background-fetch/port-blocking.https.window.html", + {} + ] + ], "battery-status/battery-iframe.https.html": [ [ "/battery-status/battery-iframe.https.html", @@ -329497,30 +331133,6 @@ {} ] ], - "content-security-policy/blink-contrib/object-src-applet-archive-codebase.sub.html": [ - [ - "/content-security-policy/blink-contrib/object-src-applet-archive-codebase.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/object-src-applet-archive.sub.html": [ - [ - "/content-security-policy/blink-contrib/object-src-applet-archive.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/object-src-applet-code-codebase.sub.html": [ - [ - "/content-security-policy/blink-contrib/object-src-applet-code-codebase.sub.html", - {} - ] - ], - "content-security-policy/blink-contrib/object-src-applet-code.sub.html": [ - [ - "/content-security-policy/blink-contrib/object-src-applet-code.sub.html", - {} - ] - ], "content-security-policy/blink-contrib/object-src-no-url-allowed.sub.html": [ [ "/content-security-policy/blink-contrib/object-src-no-url-allowed.sub.html", @@ -331899,6 +333511,222 @@ {} ] ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-001.html": [ + [ + "/css/css-grid-1/alignment/grid-alignment-implies-size-change-001.html", + {} + ] + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-002.html": [ + [ + "/css/css-grid-1/alignment/grid-alignment-implies-size-change-002.html", + {} + ] + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-003.html": [ + [ + "/css/css-grid-1/alignment/grid-alignment-implies-size-change-003.html", + {} + ] + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-004.html": [ + [ + "/css/css-grid-1/alignment/grid-alignment-implies-size-change-004.html", + {} + ] + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-005.html": [ + [ + "/css/css-grid-1/alignment/grid-alignment-implies-size-change-005.html", + {} + ] + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-006.html": [ + [ + "/css/css-grid-1/alignment/grid-alignment-implies-size-change-006.html", + {} + ] + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-007.html": [ + [ + "/css/css-grid-1/alignment/grid-alignment-implies-size-change-007.html", + {} + ] + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-008.html": [ + [ + "/css/css-grid-1/alignment/grid-alignment-implies-size-change-008.html", + {} + ] + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-009.html": [ + [ + "/css/css-grid-1/alignment/grid-alignment-implies-size-change-009.html", + {} + ] + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-010.html": [ + [ + "/css/css-grid-1/alignment/grid-alignment-implies-size-change-010.html", + {} + ] + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-011.html": [ + [ + "/css/css-grid-1/alignment/grid-alignment-implies-size-change-011.html", + {} + ] + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-012.html": [ + [ + "/css/css-grid-1/alignment/grid-alignment-implies-size-change-012.html", + {} + ] + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-013.html": [ + [ + "/css/css-grid-1/alignment/grid-alignment-implies-size-change-013.html", + {} + ] + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-014.html": [ + [ + "/css/css-grid-1/alignment/grid-alignment-implies-size-change-014.html", + {} + ] + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-015.html": [ + [ + "/css/css-grid-1/alignment/grid-alignment-implies-size-change-015.html", + {} + ] + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-016.html": [ + [ + "/css/css-grid-1/alignment/grid-alignment-implies-size-change-016.html", + {} + ] + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-017.html": [ + [ + "/css/css-grid-1/alignment/grid-alignment-implies-size-change-017.html", + {} + ] + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-018.html": [ + [ + "/css/css-grid-1/alignment/grid-alignment-implies-size-change-018.html", + {} + ] + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-019.html": [ + [ + "/css/css-grid-1/alignment/grid-alignment-implies-size-change-019.html", + {} + ] + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-020.html": [ + [ + "/css/css-grid-1/alignment/grid-alignment-implies-size-change-020.html", + {} + ] + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-021.html": [ + [ + "/css/css-grid-1/alignment/grid-alignment-implies-size-change-021.html", + {} + ] + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-022.html": [ + [ + "/css/css-grid-1/alignment/grid-alignment-implies-size-change-022.html", + {} + ] + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-023.html": [ + [ + "/css/css-grid-1/alignment/grid-alignment-implies-size-change-023.html", + {} + ] + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-024.html": [ + [ + "/css/css-grid-1/alignment/grid-alignment-implies-size-change-024.html", + {} + ] + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-025.html": [ + [ + "/css/css-grid-1/alignment/grid-alignment-implies-size-change-025.html", + {} + ] + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-026.html": [ + [ + "/css/css-grid-1/alignment/grid-alignment-implies-size-change-026.html", + {} + ] + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-027.html": [ + [ + "/css/css-grid-1/alignment/grid-alignment-implies-size-change-027.html", + {} + ] + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-028.html": [ + [ + "/css/css-grid-1/alignment/grid-alignment-implies-size-change-028.html", + {} + ] + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-029.html": [ + [ + "/css/css-grid-1/alignment/grid-alignment-implies-size-change-029.html", + {} + ] + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-030.html": [ + [ + "/css/css-grid-1/alignment/grid-alignment-implies-size-change-030.html", + {} + ] + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-031.html": [ + [ + "/css/css-grid-1/alignment/grid-alignment-implies-size-change-031.html", + {} + ] + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-032.html": [ + [ + "/css/css-grid-1/alignment/grid-alignment-implies-size-change-032.html", + {} + ] + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-033.html": [ + [ + "/css/css-grid-1/alignment/grid-alignment-implies-size-change-033.html", + {} + ] + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-034.html": [ + [ + "/css/css-grid-1/alignment/grid-alignment-implies-size-change-034.html", + {} + ] + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-035.html": [ + [ + "/css/css-grid-1/alignment/grid-alignment-implies-size-change-035.html", + {} + ] + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-036.html": [ + [ + "/css/css-grid-1/alignment/grid-alignment-implies-size-change-036.html", + {} + ] + ], "css/css-grid-1/alignment/grid-self-alignment-stretch-001.html": [ [ "/css/css-grid-1/alignment/grid-self-alignment-stretch-001.html", @@ -332223,6 +334051,12 @@ {} ] ], + "css/css-grid-1/grid-definition/grid-shorthand-001.html": [ + [ + "/css/css-grid-1/grid-definition/grid-shorthand-001.html", + {} + ] + ], "css/css-grid-1/grid-definition/grid-support-flexible-lengths-001.html": [ [ "/css/css-grid-1/grid-definition/grid-support-flexible-lengths-001.html", @@ -332283,33 +334117,33 @@ {} ] ], - "css/css-logical-properties-1/logicalprops-block-size-vlr.html": [ + "css/css-logical-1/logicalprops-block-size-vlr.html": [ [ - "/css/css-logical-properties-1/logicalprops-block-size-vlr.html", + "/css/css-logical-1/logicalprops-block-size-vlr.html", {} ] ], - "css/css-logical-properties-1/logicalprops-block-size.html": [ + "css/css-logical-1/logicalprops-block-size.html": [ [ - "/css/css-logical-properties-1/logicalprops-block-size.html", + "/css/css-logical-1/logicalprops-block-size.html", {} ] ], - "css/css-logical-properties-1/logicalprops-inline-size-vlr.html": [ + "css/css-logical-1/logicalprops-inline-size-vlr.html": [ [ - "/css/css-logical-properties-1/logicalprops-inline-size-vlr.html", + "/css/css-logical-1/logicalprops-inline-size-vlr.html", {} ] ], - "css/css-logical-properties-1/logicalprops-inline-size.html": [ + "css/css-logical-1/logicalprops-inline-size.html": [ [ - "/css/css-logical-properties-1/logicalprops-inline-size.html", + "/css/css-logical-1/logicalprops-inline-size.html", {} ] ], - "css/css-logical-properties-1/logicalprops-quirklength.html": [ + "css/css-logical-1/logicalprops-quirklength.html": [ [ - "/css/css-logical-properties-1/logicalprops-quirklength.html", + "/css/css-logical-1/logicalprops-quirklength.html", {} ] ], @@ -333045,6 +334879,18 @@ {} ] ], + "css/css-tables-3/fixed-layout-calc-width-001.html": [ + [ + "/css/css-tables-3/fixed-layout-calc-width-001.html", + {} + ] + ], + "css/css-tables-3/fixed-layout-excess-width-distribution-001.html": [ + [ + "/css/css-tables-3/fixed-layout-excess-width-distribution-001.html", + {} + ] + ], "css/css-tables-3/visibility-collapse-col-001.html": [ [ "/css/css-tables-3/visibility-collapse-col-001.html", @@ -334377,6 +336223,18 @@ {} ] ], + "css/css-ui-3/text-overflow-023.html": [ + [ + "/css/css-ui-3/text-overflow-023.html", + {} + ] + ], + "css/css-values-3/absolute-length-units-001.html": [ + [ + "/css/css-values-3/absolute-length-units-001.html", + {} + ] + ], "css/css-values-3/calc-unit-analysis.html": [ [ "/css/css-values-3/calc-unit-analysis.html", @@ -335391,6 +337249,12 @@ {} ] ], + "css/geometry-1/spec-examples.html": [ + [ + "/css/geometry-1/spec-examples.html", + {} + ] + ], "css/geometry-1/structured-serialization.html": [ [ "/css/geometry-1/structured-serialization.html", @@ -335697,6 +337561,12 @@ {} ] ], + "cssom-view/interfaces.html": [ + [ + "/cssom-view/interfaces.html", + {} + ] + ], "cssom-view/matchMedia.xht": [ [ "/cssom-view/matchMedia.xht", @@ -335775,15 +337645,15 @@ {} ] ], - "cssom-view/ttwf-js-cssomview-getclientrects-length.html": [ + "cssom-view/scrollintoview.html": [ [ - "/cssom-view/ttwf-js-cssomview-getclientrects-length.html", + "/cssom-view/scrollintoview.html", {} ] ], - "cssom-view/ttwf-scrollintoview.html": [ + "cssom-view/ttwf-js-cssomview-getclientrects-length.html": [ [ - "/cssom-view/ttwf-scrollintoview.html", + "/cssom-view/ttwf-js-cssomview-getclientrects-length.html", {} ] ], @@ -340019,6 +341889,12 @@ } ] ], + "encrypted-media/encrypted-media-default-feature-policy.https.sub.html": [ + [ + "/encrypted-media/encrypted-media-default-feature-policy.https.sub.html", + {} + ] + ], "encrypted-media/idlharness.html": [ [ "/encrypted-media/idlharness.html", @@ -340403,6 +342279,36 @@ {} ] ], + "feature-policy/payment-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html": [ + [ + "/feature-policy/payment-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html", + {} + ] + ], + "feature-policy/payment-allowed-by-feature-policy-attribute.https.sub.html": [ + [ + "/feature-policy/payment-allowed-by-feature-policy-attribute.https.sub.html", + {} + ] + ], + "feature-policy/payment-allowed-by-feature-policy.https.sub.html": [ + [ + "/feature-policy/payment-allowed-by-feature-policy.https.sub.html", + {} + ] + ], + "feature-policy/payment-default-feature-policy.https.sub.html": [ + [ + "/feature-policy/payment-default-feature-policy.https.sub.html", + {} + ] + ], + "feature-policy/payment-disabled-by-feature-policy.https.sub.html": [ + [ + "/feature-policy/payment-disabled-by-feature-policy.https.sub.html", + {} + ] + ], "fetch/api/abort/cache.https.html": [ [ "/fetch/api/abort/cache.https.html", @@ -341487,9 +343393,9 @@ {} ] ], - "generic-sensor/idlharness.html": [ + "generic-sensor/idlharness.https.html": [ [ - "/generic-sensor/idlharness.html", + "/generic-sensor/idlharness.https.html", {} ] ], @@ -341609,9 +343515,9 @@ {} ] ], - "hr-time/window-worker-time-origin.html": [ + "hr-time/window-worker-timeOrigin.window.js": [ [ - "/hr-time/window-worker-time-origin.html", + "/hr-time/window-worker-timeOrigin.window.html", {} ] ], @@ -344437,6 +346343,12 @@ {} ] ], + "html/dom/historical.html": [ + [ + "/html/dom/historical.html", + {} + ] + ], "html/dom/interfaces.html": [ [ "/html/dom/interfaces.html", @@ -345267,6 +347179,18 @@ {} ] ], + "html/semantics/document-metadata/the-style-element/style_type.html": [ + [ + "/html/semantics/document-metadata/the-style-element/style_type.html", + {} + ] + ], + "html/semantics/document-metadata/the-style-element/style_type_change.html": [ + [ + "/html/semantics/document-metadata/the-style-element/style_type_change.html", + {} + ] + ], "html/semantics/document-metadata/the-title-element/title.text-01.html": [ [ "/html/semantics/document-metadata/the-title-element/title.text-01.html", @@ -346397,6 +348321,12 @@ {} ] ], + "html/semantics/embedded-content/media-elements/track/track-element/track-cue-order.html": [ + [ + "/html/semantics/embedded-content/media-elements/track/track-element/track-cue-order.html", + {} + ] + ], "html/semantics/embedded-content/media-elements/track/track-element/track-data-url.html": [ [ "/html/semantics/embedded-content/media-elements/track/track-element/track-data-url.html", @@ -349049,24 +350979,6 @@ {} ] ], - "html/semantics/scripting-1/the-script-element/script-language-type.html": [ - [ - "/html/semantics/scripting-1/the-script-element/script-language-type.html", - {} - ] - ], - "html/semantics/scripting-1/the-script-element/script-languages-01.html": [ - [ - "/html/semantics/scripting-1/the-script-element/script-languages-01.html", - {} - ] - ], - "html/semantics/scripting-1/the-script-element/script-languages-02.html": [ - [ - "/html/semantics/scripting-1/the-script-element/script-languages-02.html", - {} - ] - ], "html/semantics/scripting-1/the-script-element/script-noembed-noframes-iframe.xhtml": [ [ "/html/semantics/scripting-1/the-script-element/script-noembed-noframes-iframe.xhtml", @@ -349121,6 +351033,24 @@ {} ] ], + "html/semantics/scripting-1/the-script-element/script-type-and-language-empty.html": [ + [ + "/html/semantics/scripting-1/the-script-element/script-type-and-language-empty.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/script-type-and-language-js.html": [ + [ + "/html/semantics/scripting-1/the-script-element/script-type-and-language-js.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/script-type-and-language-with-params.html": [ + [ + "/html/semantics/scripting-1/the-script-element/script-type-and-language-with-params.html", + {} + ] + ], "html/semantics/scripting-1/the-script-element/scripting-enabled.html": [ [ "/html/semantics/scripting-1/the-script-element/scripting-enabled.html", @@ -349241,6 +351171,12 @@ {} ] ], + "html/semantics/selectors/pseudo-classes/checked-type-change.html": [ + [ + "/html/semantics/selectors/pseudo-classes/checked-type-change.html", + {} + ] + ], "html/semantics/selectors/pseudo-classes/checked.html": [ [ "/html/semantics/selectors/pseudo-classes/checked.html", @@ -349295,12 +351231,24 @@ {} ] ], + "html/semantics/selectors/pseudo-classes/indeterminate-type-change.html": [ + [ + "/html/semantics/selectors/pseudo-classes/indeterminate-type-change.html", + {} + ] + ], "html/semantics/selectors/pseudo-classes/indeterminate.html": [ [ "/html/semantics/selectors/pseudo-classes/indeterminate.html", {} ] ], + "html/semantics/selectors/pseudo-classes/inrange-outofrange-type-change.html": [ + [ + "/html/semantics/selectors/pseudo-classes/inrange-outofrange-type-change.html", + {} + ] + ], "html/semantics/selectors/pseudo-classes/inrange-outofrange.html": [ [ "/html/semantics/selectors/pseudo-classes/inrange-outofrange.html", @@ -351575,45 +353523,9 @@ {} ] ], - "html/webappapis/system-state-and-capabilities/the-navigator-object/content.html": [ + "html/webappapis/system-state-and-capabilities/the-navigator-object/historical.window.js": [ [ - "/html/webappapis/system-state-and-capabilities/the-navigator-object/content.html", - {} - ] - ], - "html/webappapis/system-state-and-capabilities/the-navigator-object/content/001.xhtml": [ - [ - "/html/webappapis/system-state-and-capabilities/the-navigator-object/content/001.xhtml", - {} - ] - ], - "html/webappapis/system-state-and-capabilities/the-navigator-object/content/002.xhtml": [ - [ - "/html/webappapis/system-state-and-capabilities/the-navigator-object/content/002.xhtml", - {} - ] - ], - "html/webappapis/system-state-and-capabilities/the-navigator-object/content/003.xhtml": [ - [ - "/html/webappapis/system-state-and-capabilities/the-navigator-object/content/003.xhtml", - {} - ] - ], - "html/webappapis/system-state-and-capabilities/the-navigator-object/content/004.xhtml": [ - [ - "/html/webappapis/system-state-and-capabilities/the-navigator-object/content/004.xhtml", - {} - ] - ], - "html/webappapis/system-state-and-capabilities/the-navigator-object/content/005.xhtml": [ - [ - "/html/webappapis/system-state-and-capabilities/the-navigator-object/content/005.xhtml", - {} - ] - ], - "html/webappapis/system-state-and-capabilities/the-navigator-object/content/006.xhtml": [ - [ - "/html/webappapis/system-state-and-capabilities/the-navigator-object/content/006.xhtml", + "/html/webappapis/system-state-and-capabilities/the-navigator-object/historical.window.html", {} ] ], @@ -351651,42 +353563,6 @@ {} ] ], - "html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/001.xhtml": [ - [ - "/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/001.xhtml", - {} - ] - ], - "html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/002.xhtml": [ - [ - "/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/002.xhtml", - {} - ] - ], - "html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/003.xhtml": [ - [ - "/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/003.xhtml", - {} - ] - ], - "html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/004.xhtml": [ - [ - "/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/004.xhtml", - {} - ] - ], - "html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/005.xhtml": [ - [ - "/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/005.xhtml", - {} - ] - ], - "html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/006.xhtml": [ - [ - "/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/006.xhtml", - {} - ] - ], "html/webappapis/the-windoworworkerglobalscope-mixin/Worker_Self_Origin.html": [ [ "/html/webappapis/the-windoworworkerglobalscope-mixin/Worker_Self_Origin.html", @@ -351805,6 +353681,12 @@ {} ] ], + "input-events/input-events-exec-command.html": [ + [ + "/input-events/input-events-exec-command.html", + {} + ] + ], "intersection-observer/bounding-box.html": [ [ "/intersection-observer/bounding-box.html", @@ -352771,6 +354653,12 @@ {} ] ], + "mediacapture-streams/MediaStream-default-feature-policy.https.sub.html": [ + [ + "/mediacapture-streams/MediaStream-default-feature-policy.https.sub.html", + {} + ] + ], "mediacapture-streams/MediaStream-finished-add.https.html": [ [ "/mediacapture-streams/MediaStream-finished-add.https.html", @@ -364839,6 +366727,82 @@ {} ] ], + "paint-timing/basetest.html": [ + [ + "/paint-timing/basetest.html", + {} + ] + ], + "paint-timing/first-contentful-bg-image.html": [ + [ + "/paint-timing/first-contentful-bg-image.html", + {} + ] + ], + "paint-timing/first-contentful-canvas.html": [ + [ + "/paint-timing/first-contentful-canvas.html", + {} + ] + ], + "paint-timing/first-contentful-image.html": [ + [ + "/paint-timing/first-contentful-image.html", + {} + ] + ], + "paint-timing/first-contentful-paint.html": [ + [ + "/paint-timing/first-contentful-paint.html", + {} + ] + ], + "paint-timing/first-contentful-svg.html": [ + [ + "/paint-timing/first-contentful-svg.html", + {} + ] + ], + "paint-timing/first-paint-bg-color.html": [ + [ + "/paint-timing/first-paint-bg-color.html", + {} + ] + ], + "paint-timing/first-paint-only.html": [ + [ + "/paint-timing/first-paint-only.html", + {} + ] + ], + "payment-handler/interfaces.https.any.js": [ + [ + "/payment-handler/interfaces.https.any.html", + {} + ], + [ + "/payment-handler/interfaces.https.any.worker.html", + {} + ] + ], + "payment-request/PaymentRequestUpdateEvent/constructor.http.html": [ + [ + "/payment-request/PaymentRequestUpdateEvent/constructor.http.html", + {} + ] + ], + "payment-request/PaymentRequestUpdateEvent/constructor.https.html": [ + [ + "/payment-request/PaymentRequestUpdateEvent/constructor.https.html", + {} + ] + ], + "payment-request/PaymentRequestUpdateEvent/updatewith-method.https.html": [ + [ + "/payment-request/PaymentRequestUpdateEvent/updatewith-method.https.html", + {} + ] + ], "payment-request/allowpaymentrequest/active-document-cross-origin.https.sub.html": [ [ "/payment-request/allowpaymentrequest/active-document-cross-origin.https.sub.html", @@ -364911,36 +366875,6 @@ {} ] ], - "payment-request/payment-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html": [ - [ - "/payment-request/payment-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html", - {} - ] - ], - "payment-request/payment-allowed-by-feature-policy-attribute.https.sub.html": [ - [ - "/payment-request/payment-allowed-by-feature-policy-attribute.https.sub.html", - {} - ] - ], - "payment-request/payment-allowed-by-feature-policy.https.sub.html": [ - [ - "/payment-request/payment-allowed-by-feature-policy.https.sub.html", - {} - ] - ], - "payment-request/payment-default-feature-policy.https.sub.html": [ - [ - "/payment-request/payment-default-feature-policy.https.sub.html", - {} - ] - ], - "payment-request/payment-disabled-by-feature-policy.https.sub.html": [ - [ - "/payment-request/payment-disabled-by-feature-policy.https.sub.html", - {} - ] - ], "payment-request/payment-request-abort-method.https.html": [ [ "/payment-request/payment-request-abort-method.https.html", @@ -364997,6 +366931,18 @@ {} ] ], + "payment-request/payment-request-shippingAddress-attribute.https.html": [ + [ + "/payment-request/payment-request-shippingAddress-attribute.https.html", + {} + ] + ], + "payment-request/payment-request-shippingOption-attribute.https.html": [ + [ + "/payment-request/payment-request-shippingOption-attribute.https.html", + {} + ] + ], "payment-request/payment-request-shippingType-attribute.https.html": [ [ "/payment-request/payment-request-shippingType-attribute.https.html", @@ -365009,21 +366955,9 @@ {} ] ], - "payment-request/payment-request-update-event-constructor.http.html": [ + "payment-request/rejects_if_not_active.https.html": [ [ - "/payment-request/payment-request-update-event-constructor.http.html", - {} - ] - ], - "payment-request/payment-request-update-event-constructor.https.html": [ - [ - "/payment-request/payment-request-update-event-constructor.https.html", - {} - ] - ], - "payment-request/payment-request-update-event-updatewith-method.https.html": [ - [ - "/payment-request/payment-request-update-event-updatewith-method.https.html", + "/payment-request/rejects_if_not_active.https.html", {} ] ], @@ -376225,6 +378159,30 @@ {} ] ], + "streams/readable-byte-streams/brand-checks.dedicatedworker.html": [ + [ + "/streams/readable-byte-streams/brand-checks.dedicatedworker.html", + {} + ] + ], + "streams/readable-byte-streams/brand-checks.html": [ + [ + "/streams/readable-byte-streams/brand-checks.html", + {} + ] + ], + "streams/readable-byte-streams/brand-checks.serviceworker.https.html": [ + [ + "/streams/readable-byte-streams/brand-checks.serviceworker.https.html", + {} + ] + ], + "streams/readable-byte-streams/brand-checks.sharedworker.html": [ + [ + "/streams/readable-byte-streams/brand-checks.sharedworker.html", + {} + ] + ], "streams/readable-byte-streams/general.dedicatedworker.html": [ [ "/streams/readable-byte-streams/general.dedicatedworker.html", @@ -386831,6 +388789,12 @@ {} ] ], + "workers/worker-performance.worker.js": [ + [ + "/workers/worker-performance.worker.html", + {} + ] + ], "x-frame-options/deny.sub.html": [ [ "/x-frame-options/deny.sub.html", @@ -407383,7 +409347,7 @@ "support" ], "./README.md": [ - "c81600cf81c43a2abef1bea9eaa09380412d4b03", + "fa83617dc51fcc6f69732e43be203bc94de05ec1", "support" ], "./check_stability.ini": [ @@ -407395,7 +409359,7 @@ "support" ], "./lint.whitelist": [ - "223804666e64dde8a7e22ee394baa50d77e0cff0", + "85909de8994c7339bd86c969094a072de473a6de", "support" ], "./serve.py": [ @@ -411611,7 +413575,7 @@ "support" ], "2dcontext/tools/current-work-canvas.xhtml": [ - "891246c4dfe34f9b43b5e642b058072c4d664817", + "c712cdec9ced8da63eb6b8dfce17906a4210883e", "support" ], "2dcontext/tools/gentest.py": [ @@ -411619,19 +413583,19 @@ "support" ], "2dcontext/tools/gentestutils.py": [ - "f613a789c0e231a3600070583661ba3b1842fed3", + "d7862903e270295fd11e2d98c5c4dbcde4ae0717", "support" ], "2dcontext/tools/name2dir.yaml": [ - "1333578a501fec686bc7ed22edf4cc8e7203ae13", + "3a852f1cc85eae2a17e67d56ce0c9bb5e4e69b41", "support" ], "2dcontext/tools/spec.yaml": [ - "4405a99f9fa29069670a1fb8aaef5e1c89ac33d0", + "4692cedcc0d1d5af9ac917fa19d3979e2129a933", "support" ], "2dcontext/tools/specextract.py": [ - "c6c58223012640480eb1e7d0b9ce4c343cafdb7c", + "5c656f7f4859ec0eb0559b1b1dfe6e085032d7c8", "support" ], "2dcontext/tools/templates.yaml": [ @@ -411807,7 +413771,7 @@ "testharness" ], "FileAPI/OWNERS": [ - "5e749f9ec12704ea48e99cf4c31e703e5325d419", + "f1d0cf569f445712d986e9a85f3cbc717137d7fe", "support" ], "FileAPI/blob/Blob-XHR-revoke.html": [ @@ -414514,10 +416478,22 @@ "8c2f2df46c8086f657806f763e68d775e1294bd0", "testharness" ], + "XMLHttpRequest/access-control-basic-cors-safelisted-request-headers.htm": [ + "29b6638f3de85cc39b77b86353dc49865e1fdc39", + "testharness" + ], + "XMLHttpRequest/access-control-basic-cors-safelisted-response-headers.htm": [ + "43748883f8bf38fe34e0c0f568dec6e1cc7c9b28", + "testharness" + ], "XMLHttpRequest/access-control-basic-denied.htm": [ "890170b5b2857a6e837ea3ed0dc4692e206a864a", "testharness" ], + "XMLHttpRequest/access-control-basic-get-fail-non-simple.htm": [ + "4641b3a58df7f1eeea460e995692418cfd63f507", + "testharness" + ], "XMLHttpRequest/access-control-basic-non-cors-safelisted-content-type.htm": [ "b6e15129e3e0917bb35f5b021ba7849b924d6945", "testharness" @@ -414527,7 +416503,7 @@ "testharness" ], "XMLHttpRequest/access-control-basic-post-with-non-cors-safelisted-content-type.htm": [ - "4db804485282525ce98ef71c2824ade7fdb0f357", + "d7877dca1a16e5c3f52881558f9951e4a5f78ba8", "testharness" ], "XMLHttpRequest/access-control-basic-preflight-denied.htm": [ @@ -414538,6 +416514,14 @@ "f69a2fdd41df78f29187bfa848e88c5c39b60736", "testharness" ], + "XMLHttpRequest/access-control-preflight-async-method-denied.htm": [ + "29bb39b957742d739bb0d54464b48a53533206fe", + "testharness" + ], + "XMLHttpRequest/access-control-preflight-async-not-supported.htm": [ + "7520098b97455ca0795304751cef93197be469f6", + "testharness" + ], "XMLHttpRequest/access-control-preflight-credential-async.htm": [ "ae93b44faf45f95927a1ee82052a414273333e61", "testharness" @@ -414546,6 +416530,10 @@ "fa393dd9f33c2c7f151f00f034ae0f23a5bbf74a", "testharness" ], + "XMLHttpRequest/access-control-preflight-headers-async.htm": [ + "bd10420c088f4e871d1377bf1b7e45d30c1458c9", + "testharness" + ], "XMLHttpRequest/access-control-preflight-headers-sync.htm": [ "8dcf3427076b048f2a38890a15427d703c36728f", "testharness" @@ -414554,16 +416542,76 @@ "1f3beb7047a0f4828d44f67664a977469af75263", "testharness" ], + "XMLHttpRequest/access-control-preflight-request-header-sorted.htm": [ + "45f904c2322ee7b14cc78075f99243bbad7ecd96", + "testharness" + ], + "XMLHttpRequest/access-control-preflight-request-headers-origin.htm": [ + "7928f916ba92a1c7c13bb2c099ec08fc5f14429e", + "testharness" + ], "XMLHttpRequest/access-control-preflight-request-invalid-status-301.htm": [ "e59e2de75149869531b056b53501b92302fdee04", "testharness" ], + "XMLHttpRequest/access-control-preflight-request-invalid-status-400.htm": [ + "48fbbfd1a516469058e7559969eb1f36f02c3f14", + "testharness" + ], "XMLHttpRequest/access-control-preflight-request-invalid-status-501.htm": [ "a59b9c8f77991992faade11e955061078b9d9623", "testharness" ], + "XMLHttpRequest/access-control-preflight-request-must-not-contain-cookie.htm": [ + "78f95f6f962f1696a1ff37a6a3216fba4e741f56", + "testharness" + ], + "XMLHttpRequest/access-control-preflight-sync-header-denied.htm": [ + "98e89f8ddccbba846b6f21f1d77b6a64554bcb52", + "testharness" + ], + "XMLHttpRequest/access-control-preflight-sync-method-denied.htm": [ + "536deb1a3322c4ef45e259849e659d1fa4bea7c7", + "testharness" + ], + "XMLHttpRequest/access-control-preflight-sync-not-supported.htm": [ + "997d43197782650b479ccdef1cc43d8bde7e31e4", + "testharness" + ], + "XMLHttpRequest/access-control-recursive-failed-request.htm": [ + "03650f5362e483a6e29a05554723385ab601495f", + "testharness" + ], + "XMLHttpRequest/access-control-response-with-body-sync.htm": [ + "ae7e24c4b3b3295caa7e76555ac8a21d9062556a", + "testharness" + ], + "XMLHttpRequest/access-control-response-with-body.htm": [ + "e5b2ae207a2ae58bd20a4d6903991cff5e27b5a7", + "testharness" + ], + "XMLHttpRequest/access-control-response-with-exposed-headers.htm": [ + "9c4a5cf99e43f1315dfd73f543450e4056dcef36", + "testharness" + ], + "XMLHttpRequest/access-control-sandboxed-iframe-allow-origin-null.htm": [ + "2b507239c3e3fa6602068d6d92897c5d042a7a0d", + "testharness" + ], + "XMLHttpRequest/access-control-sandboxed-iframe-allow.htm": [ + "b1140eacc383af590578319b25ee803ba50c3fee", + "testharness" + ], + "XMLHttpRequest/access-control-sandboxed-iframe-denied-without-wildcard.htm": [ + "a476086f22c912c13d4ac175af95c80f8e226c25", + "testharness" + ], + "XMLHttpRequest/access-control-sandboxed-iframe-denied.htm": [ + "32fcbfa28e93aad6e0040b5b1c9478ce76e7e06e", + "testharness" + ], "XMLHttpRequest/allow-lists-starting-with-comma.htm": [ - "5e7870a6d66c475c2f96fd64a146ea751b08f4b1", + "34a8d82f397f35902c73d9ced2f3cf900d04ae53", "testharness" ], "XMLHttpRequest/anonymous-mode-unsupported.htm": [ @@ -414907,7 +416955,11 @@ "support" ], "XMLHttpRequest/resources/access-control-allow-lists.py": [ - "72914699c33449255e47adb9668983e1bef8da14", + "941a26e0b85d608bb2617362df74263564b5981d", + "support" + ], + "XMLHttpRequest/resources/access-control-allow-with-body.py": [ + "fbd35be708e601c7c3fb625ce28b9f43de784e13", "support" ], "XMLHttpRequest/resources/access-control-auth-basic.py": [ @@ -414926,6 +416978,10 @@ "b7351f59af91646549075b6b732eeb6c750e3faf", "support" ], + "XMLHttpRequest/resources/access-control-basic-cors-safelisted-request-headers.py": [ + "19a0b1d88765fa152c17c7f684651be8c4bae3da", + "support" + ], "XMLHttpRequest/resources/access-control-basic-denied.py": [ "35e7b6c552caf55e8ea7d34ec51d354c8eb2bc6e", "support" @@ -414950,6 +417006,14 @@ "eda02da8e1d89f28ff0e07442539b7eca4ca556f", "support" ], + "XMLHttpRequest/resources/access-control-basic-whitelist-response-headers.py": [ + "c530b8431372e0511c91b150c5f1015d504ae374", + "support" + ], + "XMLHttpRequest/resources/access-control-cookie.py": [ + "0551a6a4284fcae2ed5314d5d02767a4da1ad981", + "support" + ], "XMLHttpRequest/resources/access-control-origin-header.py": [ "529883eed380c4505c1ddbc87ae5885254756626", "support" @@ -414962,10 +417026,26 @@ "3f39f2f6bdda8c167df09525b8d23d04c16b2462", "support" ], + "XMLHttpRequest/resources/access-control-preflight-request-header-sorted.py": [ + "357dbf2f01ab59c8689af632c1116d2053f3829d", + "support" + ], + "XMLHttpRequest/resources/access-control-preflight-request-headers-origin.py": [ + "abc6b25627e019ae67b90beebad42164143321d0", + "support" + ], "XMLHttpRequest/resources/access-control-preflight-request-invalid-status.py": [ "c572b1e3d79f66df0a40766e6e4c3cc785458d0e", "support" ], + "XMLHttpRequest/resources/access-control-preflight-request-must-not-contain-cookie.py": [ + "1343bfee18c64bfbb625591bc65117e5b692c487", + "support" + ], + "XMLHttpRequest/resources/access-control-sandboxed-iframe.html": [ + "3aa5a903afc03e167a88322db44c29b287509f47", + "support" + ], "XMLHttpRequest/resources/auth1/auth.py": [ "cbe9305740f7e0a9e8c7be9dbfcb606f8abb2758", "support" @@ -415759,7 +417839,7 @@ "support" ], "accelerometer/idlharness.https.html": [ - "ac421649ad01868af57e06d322515b4fa36a2dda", + "a4b5c164268d6742e7da504d15d6b9eeb4cfc6ce", "testharness" ], "ambient-light/AmbientLightSensor.https.html": [ @@ -415779,7 +417859,7 @@ "support" ], "ambient-light/idlharness.https.html": [ - "2c0c24a7d0f4cc0026264641a64234a8c0e7ac5a", + "f48a58b450fa15e820bef6d9c6f5dac834d8d6fb", "testharness" ], "annotation-model/.editorconfig": [ @@ -417858,14 +419938,22 @@ "556ab735b0461aab4dbbb02d277da6ea07106469", "testharness" ], - "auxclick/OWNERS": [ - "314d421a5544db277664bb55bd04b87e9ed2fdba", - "support" - ], "background-fetch/OWNERS": [ "0c4e22b970a92b2d77b0f50cc27c2d46aad0b43b", "support" ], + "background-fetch/content-security-policy.https.window.js": [ + "1675b0665319efe5ce8423230f839b20e3b6a63b", + "testharness" + ], + "background-fetch/credentials-in-url.https.window.js": [ + "6fa8d069c6f17da908078ac1a3770b2bd730426c", + "testharness" + ], + "background-fetch/dangling-markup.https.window.js": [ + "fd9efe16c485c6fa6cc4b587b492eb24bf9ccac2", + "testharness" + ], "background-fetch/interfaces-worker.https.html": [ "3bdcb55c864d99da109cdc0abe56c06aaf3e3d1e", "testharness" @@ -417882,6 +419970,22 @@ "0c959d5fa41c3db70c326b83e064b8261a6f90b4", "testharness" ], + "background-fetch/mixed-content-and-allowed-schemes.https.window.js": [ + "13873d861416a40d831026a88f864f13a9447c7f", + "testharness" + ], + "background-fetch/port-blocking.https.window.js": [ + "6e06b6e9b9cd8713ff5a8ca405c1b54fe15c559c", + "testharness" + ], + "background-fetch/resources/sw.js": [ + "9b4fbabe0209a5367186e8c5717be88f32530027", + "support" + ], + "background-fetch/resources/utils.js": [ + "1109faf95d0b0d09f2eb9a486638d68af55cb52c", + "support" + ], "battery-status/OWNERS": [ "c08081d13e4029cf4fffb48c15d323d8b15a581b", "support" @@ -418086,6 +420190,10 @@ "10f5f9d409ef513edb129e0e8522aa5f74d51ce8", "support" ], + "clipboard-apis/OWNERS": [ + "bae753666bda85e9805a5e2fad80ba71459b8aba", + "support" + ], "clipboard-apis/async-interfaces.https.html": [ "68a1ea255a72e54e6a2147797d4213914a79aece", "testharness" @@ -418110,10 +420218,6 @@ "e69933ca4cdc42105d469b7ffb105aa60a8e0875", "manual" ], - "clipboard/OWNERS": [ - "bae753666bda85e9805a5e2fad80ba71459b8aba", - "support" - ], "common/OWNERS": [ "13fbb201f77b9929d7f5693b70855c9b68abc70b", "support" @@ -436810,38 +438914,6 @@ "368845671fc996d39fd6f85c113a26cdaa98ee3e", "support" ], - "content-security-policy/blink-contrib/object-src-applet-archive-codebase.sub.html": [ - "7f81f0fe6a5ed984e6084250672e598a2fe2c707", - "testharness" - ], - "content-security-policy/blink-contrib/object-src-applet-archive-codebase.sub.html.sub.headers": [ - "37429d7e5523b4fa092f319e0348abf62f1fe95e", - "support" - ], - "content-security-policy/blink-contrib/object-src-applet-archive.sub.html": [ - "9d07979a968cea9958c237e465b3562fac0d6e65", - "testharness" - ], - "content-security-policy/blink-contrib/object-src-applet-archive.sub.html.sub.headers": [ - "0e9b0159e148542c330eeb1c9501911e2e0473c0", - "support" - ], - "content-security-policy/blink-contrib/object-src-applet-code-codebase.sub.html": [ - "5b0ef3d19498af074fbd2ca00b6af16774b1b4cc", - "testharness" - ], - "content-security-policy/blink-contrib/object-src-applet-code-codebase.sub.html.sub.headers": [ - "eac4a0d1aecb5475bb88b223deec64209f98b25c", - "support" - ], - "content-security-policy/blink-contrib/object-src-applet-code.sub.html": [ - "5827478d16c8bf8f473daae756eaeabaafdee879", - "testharness" - ], - "content-security-policy/blink-contrib/object-src-applet-code.sub.html.sub.headers": [ - "8d1f3d53e9702d62946969231a45c79f26e6e287", - "support" - ], "content-security-policy/blink-contrib/object-src-no-url-allowed.sub.html": [ "e4cd8d8e7a3150626eea1d6ca7beed13feb6a76c", "testharness" @@ -438650,6 +440722,702 @@ "31461ac108fe717b074a41e14c12d9b83c064f85", "testharness" ], + "core-aam/OWNERS": [ + "3a6002295ea2893ba74763e46965bd2d1291d55b", + "support" + ], + "core-aam/README.md": [ + "a910a51a7869305635992eb784b0ddfe70d8f8ae", + "support" + ], + "core-aam/alert-manual.html": [ + "d42332d1f0c644ce2b1fedacdfb0a12ea05e4357", + "manual" + ], + "core-aam/alertdialog-manual.html": [ + "84ab9f273e1ede0209d8c394278fc082da9cae8d", + "manual" + ], + "core-aam/application-manual.html": [ + "964f6da30719c6384df52e29ad87d1f58e0cc609", + "manual" + ], + "core-aam/aria-atomic_false-manual.html": [ + "489457cac27ce80189341e416f2f0f1694890cd9", + "manual" + ], + "core-aam/aria-atomic_true-manual.html": [ + "0fa10bed96154a734e66bd46dc0d69450e4d9c25", + "manual" + ], + "core-aam/aria-autocomplete_both_new-manual.html": [ + "e91ce8ab8b283235d7f26290b3b82f6db82216e6", + "manual" + ], + "core-aam/aria-autocomplete_inline_new-manual.html": [ + "bc4b69bdff2e3b4a8c93d11838c2e35043ab66f0", + "manual" + ], + "core-aam/aria-autocomplete_list_new-manual.html": [ + "718d69f40b4ffa4205fdcbf4d3b9e7b8fcbd83bd", + "manual" + ], + "core-aam/aria-busy_false-manual.html": [ + "196d40f611124d06960fcf2635795c35e0996218", + "manual" + ], + "core-aam/aria-busy_true-manual.html": [ + "c47a4a1f5267e34c534beff3039edff75b559478", + "manual" + ], + "core-aam/aria-checked_false_on_checkbox-manual.html": [ + "5e699c8f425a153be30d7bcffab3c7ac4e9fd182", + "manual" + ], + "core-aam/aria-checked_false_on_menuitemradio-manual.html": [ + "1564ead59e7aacb66f411dcb7c046849f0eccf5e", + "manual" + ], + "core-aam/aria-checked_mixed-manual.html": [ + "93c2d638955729f994e1ef3075399e66c4741a71", + "manual" + ], + "core-aam/aria-checked_true_on_checkbox-manual.html": [ + "03765646df203d1e65f533d3ece48c4834921eb8", + "manual" + ], + "core-aam/aria-checked_true_on_menuitemradio-manual.html": [ + "22ac9848616b98974f16cc0a6d3e1ea49ca45e90", + "manual" + ], + "core-aam/aria-colcount_new-manual.html": [ + "7613cc5436b2a716259e0cc9db7961fe5963d205", + "manual" + ], + "core-aam/aria-colindex_new-manual.html": [ + "420c066fde04092b86ba2877cb39048bf258b78a", + "manual" + ], + "core-aam/aria-colspan_new-manual.html": [ + "19dc7dd49b40fc9d94e68158e936a92603c6eeda", + "manual" + ], + "core-aam/aria-controls-manual.html": [ + "1ee9282c1802333d8e7d9f5fabba31f872ed689e", + "manual" + ], + "core-aam/aria-current_with_non-false_allowed_value_new-manual.html": [ + "2830b1eecdd82134942db90d47ede5e180dae8d4", + "manual" + ], + "core-aam/aria-current_with_unrecognized_value_new-manual.html": [ + "22e8ab095e4c7065a60c892427ce158850afe5a6", + "manual" + ], + "core-aam/aria-describedby-manual.html": [ + "494c5a53797b0d2d1257507b529587fcc892a16b", + "manual" + ], + "core-aam/aria-details_new-manual.html": [ + "d912f5dab5ac4ecf572389b5495285cd49f0e8e9", + "manual" + ], + "core-aam/aria-disabled_false-manual.html": [ + "ab4570557f36e74cbbb65089c13da90b81fb8ce0", + "manual" + ], + "core-aam/aria-disabled_true-manual.html": [ + "b6d35f2afbd12143d570b4e449798ec09e8a0e43", + "manual" + ], + "core-aam/aria-dropeffect_copy-manual.html": [ + "a087d4af0835ed9a80870bb43e09c72b7a739e4c", + "manual" + ], + "core-aam/aria-dropeffect_execute-manual.html": [ + "a1b1de19f749f69b11dcab73ee18899cdfac6514", + "manual" + ], + "core-aam/aria-dropeffect_link-manual.html": [ + "417e5b9398d90dfbaf4892bc7eae662674683cb7", + "manual" + ], + "core-aam/aria-dropeffect_move-manual.html": [ + "97e89dd1af2006340374b1928ecc5893e2ecc0d2", + "manual" + ], + "core-aam/aria-dropeffect_none-manual.html": [ + "2f3fad02efb9328cea92ee015ab06ecbafc9b14f", + "manual" + ], + "core-aam/aria-dropeffect_popup-manual.html": [ + "3e7723d80a5666ff1e5ffccb7ac564de712d6153", + "manual" + ], + "core-aam/aria-errormessage-manual.html": [ + "5d6be02752f6a6a243b38fba4ecf5c5ef42c3261", + "manual" + ], + "core-aam/aria-expanded_false-manual.html": [ + "ef72441e78e7464399ce9b8da19a04420d727735", + "manual" + ], + "core-aam/aria-expanded_true-manual.html": [ + "e57f606a01fffc57ede231fda6e093b9759afc9c", + "manual" + ], + "core-aam/aria-flowto-manual.html": [ + "23db7629412cb0f8fb2a7abe97e9ec2c69a9f512", + "manual" + ], + "core-aam/aria-grabbed_false-manual.html": [ + "5fd4816c4c8b1800d4a102d66568bd9d2cfcb976", + "manual" + ], + "core-aam/aria-grabbed_true-manual.html": [ + "4b3e3afad5525901db5d467a8416511b4af55cf3", + "manual" + ], + "core-aam/aria-haspopup_dialog_new-manual.html": [ + "3cdd2fe1bd4bb0115d8d92a38f7b4822e62e58fa", + "manual" + ], + "core-aam/aria-haspopup_false-manual.html": [ + "9a1821475c5f1b331326d3f32b5b2a3670780b91", + "manual" + ], + "core-aam/aria-haspopup_listbox_new-manual.html": [ + "dfade194716c8d54d5aad762ed16edfc9eb52e44", + "manual" + ], + "core-aam/aria-haspopup_menu_new-manual.html": [ + "51aafc7d69b65f3f40c1a8d0c8adf7c8857a60d9", + "manual" + ], + "core-aam/aria-haspopup_tree_new-manual.html": [ + "000a7add26a7805a53ddda772780986692b21e49", + "manual" + ], + "core-aam/aria-haspopup_true-manual.html": [ + "617282c525855c68236395af33780c8a4644ce2f", + "manual" + ], + "core-aam/aria-hidden_true-manual.html": [ + "769a8e4ac26d8d23e2cef46b6d3895613b51700c", + "manual" + ], + "core-aam/aria-invalid_false-manual.html": [ + "8aa99436e751a7dd29cc6158d2a5cfa2dadc14e9", + "manual" + ], + "core-aam/aria-invalid_grammar-manual.html": [ + "378f3fab4fd15d967045a4d8176d23cd33a74928", + "manual" + ], + "core-aam/aria-invalid_spelling-manual.html": [ + "aec08e95facefecff84e413f4a9bdd419f60bfcb", + "manual" + ], + "core-aam/aria-invalid_true-manual.html": [ + "7f2511c328d79e14ef5422659bf30ec7e0fc6e85", + "manual" + ], + "core-aam/aria-invalid_with_unrecognized_value-manual.html": [ + "e73ce45d034570958a1a0b94375c996c8f480645", + "manual" + ], + "core-aam/aria-keyshortcuts_new-manual.html": [ + "fb13fd6035b517631f765aa68da0a0e774b87edb", + "manual" + ], + "core-aam/aria-label-manual.html": [ + "b4ed56e8ee499fa519bb1dc0ac962654ae4420f3", + "manual" + ], + "core-aam/aria-labelledby-manual.html": [ + "33feb7b4ae809ab5633063fcb5ade3fbba47726c", + "manual" + ], + "core-aam/aria-level_on_heading_new-manual.html": [ + "73922a74bc22596de087bc987fc0f04b0f991fd5", + "manual" + ], + "core-aam/aria-level_on_non-heading-manual.html": [ + "b980f7c3d410a90faf90750bc147c3d6ff38a54c", + "manual" + ], + "core-aam/aria-live_assertive-manual.html": [ + "f8feebe3c3f00322028226083d687e3bdf1fa147", + "manual" + ], + "core-aam/aria-live_off-manual.html": [ + "4b0d41a00835bbf7c389f770e131ad116a53619f", + "manual" + ], + "core-aam/aria-live_polite-manual.html": [ + "054cf669d56af6dbacf1b9b4b2d0e93abc5ade7f", + "manual" + ], + "core-aam/aria-modal_false_new-manual.html": [ + "89dc63db15a5fe70dabe4dc853d9ece0b34739d0", + "manual" + ], + "core-aam/aria-modal_true_new-manual.html": [ + "9cf751b1150bd94c3f7521beed0aa457d5185e5d", + "manual" + ], + "core-aam/aria-multiline_false-manual.html": [ + "ed39d9373be306c9d8e0bfae33201e004e599114", + "manual" + ], + "core-aam/aria-multiline_true-manual.html": [ + "82a17b7a1e9c2fc5cb12d37df4e3c671e28d7af4", + "manual" + ], + "core-aam/aria-multiselectable_false-manual.html": [ + "f0a416187c0633f964a1c77c4df56b52d53846a7", + "manual" + ], + "core-aam/aria-multiselectable_true-manual.html": [ + "6176397e7942c884647ed1fc8dd9cddb82d10149", + "manual" + ], + "core-aam/aria-orientation_horizontal-manual.html": [ + "9f5294b95ab6e620c125b74844f7ead1e4279f56", + "manual" + ], + "core-aam/aria-orientation_undefined_new-manual.html": [ + "c5a1b4f4b53dda1bc19f83cdeb5d6c97f468fc24", + "manual" + ], + "core-aam/aria-orientation_vertical-manual.html": [ + "b256c78602ef52ff80d6fedfdc4dbe1680c789f9", + "manual" + ], + "core-aam/aria-owns_may_need_manual_verification-manual.html": [ + "36e568e0da8ebfe722fd9f52e35929ea1426cf91", + "manual" + ], + "core-aam/aria-placeholder_new-manual.html": [ + "0911902afabf27f9bac77e5d3b14e54c965b36fe", + "manual" + ], + "core-aam/aria-posinset-manual.html": [ + "9152c29dac926f6ed946e04bbd6241389943dce3", + "manual" + ], + "core-aam/aria-pressed_false-manual.html": [ + "ee3ed7c1db0b094addf65162c51cee6565794b33", + "manual" + ], + "core-aam/aria-pressed_mixed-manual.html": [ + "acca0901bb55e4e14f56e42aa7072cd1f0b664c8", + "manual" + ], + "core-aam/aria-pressed_true-manual.html": [ + "9fd08731864c1097b8900f9465be17e440fb6658", + "manual" + ], + "core-aam/aria-readonly_false-manual.html": [ + "c04cdb4d072e4fd758cac204db1ed71fd9da7366", + "manual" + ], + "core-aam/aria-readonly_is_unspecified_on_gridcell_new-manual.html": [ + "df49945ad25fa8f87d80444392fa56469edb199a", + "manual" + ], + "core-aam/aria-readonly_true_on_checkbox-manual.html": [ + "c983178ece56e6553c43efe744f668f6bab72b99", + "manual" + ], + "core-aam/aria-readonly_true_on_radiogroup-manual.html": [ + "dedf2204aac86268b5103e1f742ef610155749f1", + "manual" + ], + "core-aam/aria-readonly_true_on_textbox-manual.html": [ + "a8d50b2a9d6358f8a2de2536f1f746d49ee3a6f4", + "manual" + ], + "core-aam/aria-relevant-manual.html": [ + "1ba191d621ce4dd1660c09f8e835c8294821aa37", + "manual" + ], + "core-aam/aria-required_true-manual.html": [ + "0c7016591a48bf1cf70eeba4eca818b8c4f675e5", + "manual" + ], + "core-aam/aria-roledescription_is_empty_or_whitespace_characters_new-manual.html": [ + "85e91ac1ef676772dae201a13d6420da8b9e2c93", + "manual" + ], + "core-aam/aria-roledescription_new-manual.html": [ + "9fe9d0b6ddf325c86f5e841f66b4a0dc64e2b1c9", + "manual" + ], + "core-aam/aria-rowcount_new-manual.html": [ + "3d0199ecc43bd7804657515689d78ae5fc78df40", + "manual" + ], + "core-aam/aria-rowindex_new-manual.html": [ + "c87845f54851850aaf1e7515527dd65c1b13c107", + "manual" + ], + "core-aam/aria-rowspan_new-manual.html": [ + "b18306b6cf3dcbde4637acd8b0b6cac524b29a2b", + "manual" + ], + "core-aam/aria-selected_false-manual.html": [ + "bacdc3819df22dc1bf058625601035b19f754d0f", + "manual" + ], + "core-aam/aria-selected_true-manual.html": [ + "333a7c9da14989487923dcf2268b583ecff1d36b", + "manual" + ], + "core-aam/aria-setsize_-1-manual.html": [ + "54f2be5a91f3742cb2c516b540728f3a9e47bdf6", + "manual" + ], + "core-aam/aria-setsize_3-manual.html": [ + "41e2f5f7963fb1e442628918a00c6725a79884b3", + "manual" + ], + "core-aam/aria-sort_ascending-manual.html": [ + "df75385bee7790243235d151f105cde9bcd1e1dd", + "manual" + ], + "core-aam/aria-sort_descending-manual.html": [ + "0c5a16b83902173128d3421229a0b043454d7390", + "manual" + ], + "core-aam/aria-sort_none-manual.html": [ + "17bd36d91b02923c47b3e768165d00bb661f64b3", + "manual" + ], + "core-aam/aria-sort_other-manual.html": [ + "ae0cf4fbe7406ed857c9f7f622cd40bc13ebc04d", + "manual" + ], + "core-aam/aria-valuemax-manual.html": [ + "95846c40b7f0b503e0308c11a01f24e1c7c655b2", + "manual" + ], + "core-aam/aria-valuemin-manual.html": [ + "2a7bb955418c4bb067c657c8339b95c0e56a81dc", + "manual" + ], + "core-aam/aria-valuenow-manual.html": [ + "c9907cef3fffa1abb886e8c40e2617f606ddaded", + "manual" + ], + "core-aam/aria-valuetext-manual.html": [ + "6478e624e5d3c200c21170017d0231637cdfbcb4", + "manual" + ], + "core-aam/article-manual.html": [ + "f8e5677917f2027b7bcda36ae9489658851f29cb", + "manual" + ], + "core-aam/banner_new-manual.html": [ + "c55cb00d6a2d1d67e0d6007a9b8445e32d8a2a74", + "manual" + ], + "core-aam/button_with_aria-haspopup_dialog_new-manual.html": [ + "80b2f3068a42c269602ac6afa6e0c42c2c8d24aa", + "manual" + ], + "core-aam/button_with_aria-haspopup_true_new-manual.html": [ + "d700439726c0a8c29865a5d7d9dd67bc059be242", + "manual" + ], + "core-aam/button_with_default_values_for_aria-pressed_and_aria-haspopup-manual.html": [ + "b9a71a7260271d95d1a90d40ab6bdf35f10de544", + "manual" + ], + "core-aam/button_with_defined_value_for_aria-pressed-manual.html": [ + "794289d0e18725c0409ffe552fa41cdb55da73db", + "manual" + ], + "core-aam/cell_new-manual.html": [ + "e2067a50a1c7b968a98953feaf0185e1e7fcc668", + "manual" + ], + "core-aam/checkbox-manual.html": [ + "bb72df585717aba95d0655f23964f1453b6d26b2", + "manual" + ], + "core-aam/columnheader-manual.html": [ + "176f72c047ed63f0ca590347511cfe0b65eaacd0", + "manual" + ], + "core-aam/combobox-manual.html": [ + "bdef56d59a2075e909deee62fa4e83033945e5dd", + "manual" + ], + "core-aam/complementary_new-manual.html": [ + "d96d9990a7974fe20a3a361dbfab249a292ddb69", + "manual" + ], + "core-aam/contentinfo_new-manual.html": [ + "a94c8e0080614473f65eb2f096a8fca4659473ed", + "manual" + ], + "core-aam/definition-manual.html": [ + "b242f6c3f03a77fc0185d0d87be79fb3d0909bb3", + "manual" + ], + "core-aam/dialog-manual.html": [ + "9eac774edaa43c88b33832c78b3c6c3b3b18ee3d", + "manual" + ], + "core-aam/directory-manual.html": [ + "7a83b021b400311c2f9298f1676b05c35d41dc05", + "manual" + ], + "core-aam/document-manual.html": [ + "6fba7d1f7ff31959935e785060f5d3c908e5a87f", + "manual" + ], + "core-aam/feed_new-manual.html": [ + "efa21e5b21974e5dd07755010be6296530675d66", + "manual" + ], + "core-aam/figure_new-manual.html": [ + "9a88af2fa13af4b2fd2cfdddee404df94df313df", + "manual" + ], + "core-aam/form_new-manual.html": [ + "9fba5ac3cc94db689059ecb7e40f1b5aa57ccd8f", + "manual" + ], + "core-aam/grid-manual.html": [ + "b1da9b11d5744e65acd54009324a6005a3f93b73", + "manual" + ], + "core-aam/gridcell-manual.html": [ + "182fc2e0dc0a34ca1046cce004d7c97bb43279bd", + "manual" + ], + "core-aam/group-manual.html": [ + "d7ed139cf93ed5031012b2ef3c5ba4ef1b11f517", + "manual" + ], + "core-aam/heading-manual.html": [ + "7826a67c3768f158e212b55cca69d8237c3f6c0e", + "manual" + ], + "core-aam/img-manual.html": [ + "2b85d7d4f99d06bdb12e50a65e8d39c75c60aa8c", + "manual" + ], + "core-aam/link-manual.html": [ + "8fb41f0d96179c1d901899eb82b89f86812962da", + "manual" + ], + "core-aam/list-manual.html": [ + "8f76369c4ada1718356206104eed1984e2d17046", + "manual" + ], + "core-aam/listbox_not_owned_by_or_child_of_combobox-manual.html": [ + "7f7e4e6109f3c1bf6d49a496b03b717207e60ec3", + "manual" + ], + "core-aam/listbox_owned_by_or_child_of_combobox-manual.html": [ + "4e3061058708f705419b21b767b6e65f2349f247", + "manual" + ], + "core-aam/listitem-manual.html": [ + "b867ef76a2ae9737fbad43d167b4c422c90530cc", + "manual" + ], + "core-aam/log-manual.html": [ + "6248ca898362834265c76f584d97031ec87da0ea", + "manual" + ], + "core-aam/main_new-manual.html": [ + "719ea5348c648c76ec6c49b48066d75669695d52", + "manual" + ], + "core-aam/marquee-manual.html": [ + "7ac90bc94c00b956294eeb80afd5f9f66cd5d3bc", + "manual" + ], + "core-aam/math-manual.html": [ + "e8b5acf5feec411a603522cebd570015b36001ca", + "manual" + ], + "core-aam/menu-manual.html": [ + "7c4d7ebda6a4bd823bbf5923ed3a56fb250250f3", + "manual" + ], + "core-aam/menubar-manual.html": [ + "f7b51bc3926dd680d2443c9a8844e270bee80941", + "manual" + ], + "core-aam/menuitem_not_owned_by_or_child_of_group-manual.html": [ + "457f50336677ac538f571bf8278c9c2341889217", + "manual" + ], + "core-aam/menuitem_owned_by_or_child_of_group-manual.html": [ + "458d7336a7d928017c69fb4727cd95698c355ad8", + "manual" + ], + "core-aam/menuitemcheckbox-manual.html": [ + "2e98e1076407242eeecaabe5889efad369cec98a", + "manual" + ], + "core-aam/menuitemradio-manual.html": [ + "61b7dc8e533e6cc1f48550b6829a057b0111e80d", + "manual" + ], + "core-aam/navigation_new-manual.html": [ + "9bf8da1d1596ee280a07fec3feeb57adecd1f28e", + "manual" + ], + "core-aam/none_new-manual.html": [ + "af2979bfd7b4571ba5fed156a7433e7e02c67e99", + "manual" + ], + "core-aam/note-manual.html": [ + "77290ed56f12fab7d52dd20324cfba1c8288c87b", + "manual" + ], + "core-aam/option_inside_combobox-manual.html": [ + "224a3ab52b06559452a999695208b08d5e1c5379", + "manual" + ], + "core-aam/option_not_inside_combobox-manual.html": [ + "ab4300eeae7db2a8cfb503e963ea7a76d0b333ef", + "manual" + ], + "core-aam/presentation-manual.html": [ + "085fabf6f64e30fdc0d5f000d6f7ee29f0758ce6", + "manual" + ], + "core-aam/progressbar-manual.html": [ + "a9b4aabf96dbe5d5bcb5e316a60e2b4547825e18", + "manual" + ], + "core-aam/radio-manual.html": [ + "00135d2f779f9a88b7b67a15e9485b7abf0dc310", + "manual" + ], + "core-aam/radiogroup-manual.html": [ + "11c9d95418cdce273ad6c6bcdb5fe72c321dc3d6", + "manual" + ], + "core-aam/region_with_an_accessible_name_new-manual.html": [ + "629494f6157ea303b37d09431bd1a122be8638bd", + "manual" + ], + "core-aam/region_without_an_accessible_name_new-manual.html": [ + "6b7161ebcb83c684b5b1f4fc6e01ade384eb5e2a", + "manual" + ], + "core-aam/row_inside_treegrid-manual.html": [ + "d6df3d3034ec2825ffd0bb1dad9e8da28d7c84ea", + "manual" + ], + "core-aam/row_not_inside_treegrid-manual.html": [ + "a6e823cb242c9501727068dcbcfa7c932da4f003", + "manual" + ], + "core-aam/rowgroup-manual.html": [ + "1792295bfbab4b89257c2d4ebe81ac3321a39ccd", + "manual" + ], + "core-aam/rowheader-manual.html": [ + "598476f9904e3aa6b642d731208c5c1e3b59ef91", + "manual" + ], + "core-aam/scrollbar-manual.html": [ + "976abf3cfdb51ed0744686e4c79336a0d855daaf", + "manual" + ], + "core-aam/search_new-manual.html": [ + "79677f75005dc785a7e87d90787b1c8c257d72e9", + "manual" + ], + "core-aam/searchbox_new-manual.html": [ + "cae60640123d4a2995a73730af7f8e12df598857", + "manual" + ], + "core-aam/separator_focusable_new-manual.html": [ + "a166e125bb64943e629693400abcda772cdcc40e", + "manual" + ], + "core-aam/separator_non-focusable-manual.html": [ + "eecb9fb266ed497ce745e49cb9ab02108bf93490", + "manual" + ], + "core-aam/slider-manual.html": [ + "7b3d0f4c4b7f1ce841d6c5e94e6cc3f12a26e34e", + "manual" + ], + "core-aam/spinbutton-manual.html": [ + "53786d793c51ad7482e0c374700c166ec3cd83da", + "manual" + ], + "core-aam/status-manual.html": [ + "b852a9cbb8032ac3af2004943fe8f9c87819b5d0", + "manual" + ], + "core-aam/switch_new-manual.html": [ + "28aeebd78b9bfdd61b5a03abe9f0d3005304f98d", + "manual" + ], + "core-aam/tab-manual.html": [ + "1743d0df97c5a6cde3cd5bfd2fe1dc44fdcec4a7", + "manual" + ], + "core-aam/table_new-manual.html": [ + "4befff0c1184d3e4b4c89e40cb72680b2615183d", + "manual" + ], + "core-aam/tablist-manual.html": [ + "5c956d06e956fa4cd07fbb933fcbc82103739dcc", + "manual" + ], + "core-aam/tabpanel-manual.html": [ + "08e8a711f80ebd09331154bc2e30683330e311f6", + "manual" + ], + "core-aam/term_new-manual.html": [ + "422a60e4f6a9cd96e42aa5c4e248875f117b574e", + "manual" + ], + "core-aam/textbox_when_aria-multiline_is_false-manual.html": [ + "f3f6c60b2029f22a09c9c476ae43f1243867759b", + "manual" + ], + "core-aam/textbox_when_aria-multiline_is_true-manual.html": [ + "5247a2001f7fc3b9c86e4190dead1fcfab4f96a2", + "manual" + ], + "core-aam/timer-manual.html": [ + "6be2a98ba2efa611e92bf3cfa94fb9432b5c8cd6", + "manual" + ], + "core-aam/toolbar-manual.html": [ + "0939e5fafa214ac133835d307f5b6e63f0cfba86", + "manual" + ], + "core-aam/tooltip-manual.html": [ + "e8710e8624cf36263e1444ada59cec2d8ef2816d", + "manual" + ], + "core-aam/tree-manual.html": [ + "116c2469589beed721b6a5d17d6f89fe933b1d20", + "manual" + ], + "core-aam/treegrid-manual.html": [ + "41ab52c5e0d75199de205e81a5f0d1fbbbffe7b9", + "manual" + ], + "core-aam/treeitem-manual.html": [ + "043e7914d378655e1d107881641b2434acc7465e", + "manual" + ], "cors/304.htm": [ "644c902be2861bed6dfa48ed12a12b08c6d9a2f5", "testharness" @@ -438814,22 +441582,22 @@ "67ecb845c4bcdacc8185b0f78d36856f9a408342", "testharness" ], - "css-font-display/font-display-ref.html": [ - "26fcc2758c649ce922397cd1c4aa862bdbf1e6a0", - "support" - ], - "css-font-display/font-display.html": [ - "d83914326318602ce0eef5f248254a391b338df0", - "reftest" - ], - "css-font-display/resources/slow-ahem-loading.py": [ - "aac16c1e618841ebdd28463adf5688ca837b9d57", - "support" - ], "css-font-loading/fontfacesetloadevent-constructor.html": [ "ad355c3d5220c1b938182241a8e8abe030ace699", "testharness" ], + "css-fonts/font-display/font-display-ref.html": [ + "26fcc2758c649ce922397cd1c4aa862bdbf1e6a0", + "support" + ], + "css-fonts/font-display/font-display.html": [ + "d83914326318602ce0eef5f248254a391b338df0", + "reftest" + ], + "css-fonts/font-display/resources/slow-ahem-loading.py": [ + "450ae01cb9fbd2c2cc436f1a8ace5386eb13442c", + "support" + ], "css-fonts/matching/OWNERS": [ "2f711301297bd297b6bf5ccde958cd7a59c9e678", "support" @@ -438915,7 +441683,7 @@ "support" ], "css-paint-api/background-image-alpha.html": [ - "2476286f8be52ae4f8ba22dd939b961d8e7ca379", + "84acc5f998812497d344067d7095c7561dda13ee", "reftest" ], "css-paint-api/background-image-multiple-ref.html": [ @@ -439067,7 +441835,7 @@ "support" ], "css-paint-api/paint-arguments.html": [ - "7e70944e4d1dd456cc91eb443f09bb2e28b812f4", + "7acf977d7e09bb85ada1b0df7fd9e4ea3a11ddfe", "reftest" ], "css-paint-api/paint-function-arguments-ref.html": [ @@ -439075,7 +441843,7 @@ "support" ], "css-paint-api/paint-function-arguments.html": [ - "e4083cf39fca7ce4783d36e3235d4cfecf7d2db9", + "cc19f4bc39c7a2cc1d9ed35a6a5a50d3935830af", "reftest" ], "css-paint-api/paint2d-composite-ref.html": [ @@ -439211,11 +441979,11 @@ "reftest" ], "css-paint-api/parse-input-arguments-016.html": [ - "e06d4a98a350f1cd2ba3bacf132f1ada83f750c1", + "1c14dbe6c6bc0f218724731112c4c45888ede8b5", "reftest" ], "css-paint-api/parse-input-arguments-017.html": [ - "6a16052f0435cc615447b548c598a6da5ce7d49b", + "cba3754c5044665b2648fec05e25d7b6028c185f", "reftest" ], "css-paint-api/parse-input-arguments-018-ref.html": [ @@ -439226,6 +441994,22 @@ "b606bfff93300f114ea4efab85e489727e9821c7", "reftest" ], + "css-paint-api/parse-input-arguments-019.html": [ + "db11565957c3da1ca7a51b9ab36cd4a823386a55", + "reftest" + ], + "css-paint-api/parse-input-arguments-020.html": [ + "acbff610abd29a01574add30679b43d7a735c9bd", + "reftest" + ], + "css-paint-api/parse-input-arguments-021.html": [ + "6f567a29ed4ec26ad8c97277469783a614a5811b", + "reftest" + ], + "css-paint-api/parse-input-arguments-022.html": [ + "9f0efcee3e1412faa19fe50f475623fd5cf2852b", + "reftest" + ], "css-paint-api/parse-input-arguments-ref.html": [ "6133bd65ef569456f58f1e501d81e088256bdc0a", "support" @@ -475767,19 +478551,19 @@ "reftest" ], "css/CSS2/selectors/attribute-value-selector-001-ref.xht": [ - "cc5ab97ad0b2bd2c9dc422c580bfd23bf731c304", + "6eb42b758e00b2d9bb41450530a710ccb1d8ae81", "support" ], "css/CSS2/selectors/attribute-value-selector-001.xht": [ - "fa6e3b8b4a1f0590f5849d3486416d8b8fe1e3c0", + "3c9b82d12fc6e93c50bd196b47ba8f4521dc2023", "reftest" ], "css/CSS2/selectors/attribute-value-selector-002.xht": [ - "72dfda92fefb318f1729683957841664929ec359", + "43cb55e259afd32bac61a315594651297b47e515", "reftest" ], "css/CSS2/selectors/attribute-value-selector-003.xht": [ - "b52a459c432c60c7699161b21f3c1b747253064b", + "07904c2ee48717ace5cc920e0c508a87d2fd2b76", "reftest" ], "css/CSS2/selectors/attribute-value-selector-004.xht": [ @@ -481031,7 +483815,7 @@ "support" ], "css/CSS2/syntax/core-syntax-001.xht": [ - "0d00dda2dbfd4fec65b86f8f3db0fd2c0ef7124f", + "c13c7398c669f4e4bdf781a75b5898803a06d58e", "reftest" ], "css/CSS2/syntax/core-syntax-002-ref.xht": [ @@ -481039,15 +483823,15 @@ "support" ], "css/CSS2/syntax/core-syntax-002.xht": [ - "baad1eef8de7d56df13bb8c77aa2d5b22060a80d", + "5112a461a9da6fd374ee75367b1241001a77fce3", "reftest" ], "css/CSS2/syntax/core-syntax-003.xht": [ - "a103e81effdbe66e4ab58133b4cc3fc8e48c8ebf", + "4e75ddf4bdda2aa673a5d988b2ba683e129afa19", "reftest" ], "css/CSS2/syntax/core-syntax-004.xht": [ - "5272eb4abedacec7754f9b2a9cb9f399fabc9258", + "22b5b2e876cc4811921382bebd73b77be5e94ed2", "reftest" ], "css/CSS2/syntax/core-syntax-006-ref.xht": [ @@ -481055,7 +483839,7 @@ "support" ], "css/CSS2/syntax/core-syntax-006.xht": [ - "2bd96a86b802c1fb340592c72f083f258ed9e8ee", + "7a5e151afe0f313bf230a476e3d58a5a80e16cff", "reftest" ], "css/CSS2/syntax/core-syntax-007-ref.xht": [ @@ -481063,15 +483847,15 @@ "support" ], "css/CSS2/syntax/core-syntax-007.xht": [ - "9906220e67a0b04623d8674f45fa2dd356da9f2f", + "db758c4019bdd277d89faf4ac1f39c06b9af4bc2", "reftest" ], "css/CSS2/syntax/core-syntax-008.xht": [ - "539858614f1760b47bf8c210d9143ed64d3e89e8", + "a82132a4ce45d624bfb1ce4bcfef5b4bbb2d7932", "reftest" ], "css/CSS2/syntax/core-syntax-009.xht": [ - "0d14614584b32ad61c85a5240dcd72e9c4d936c5", + "8ec94eb1916558a7e8bfa9dd7b5a6675dd85b74a", "reftest" ], "css/CSS2/syntax/counters-001-ref.xht": [ @@ -513298,72 +516082,216 @@ "6e0f7a2262ec3476d8cf32ea562fe0f67ad5a7f1", "reftest" ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-001.html": [ + "19ae01ab31a15efc601d2857d3ca1dd879cb4e66", + "testharness" + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-002.html": [ + "abb8f221910dc58b87ff1d3f5b9f346994688a8d", + "testharness" + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-003.html": [ + "1dee7406f817681eaec5c1b5607b9762bc546329", + "testharness" + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-004.html": [ + "03da21bdcbb4fdb53f93c372da2af4a175fc0bc9", + "testharness" + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-005.html": [ + "c4e793351e05b74a9d859286407f30f019e581ee", + "testharness" + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-006.html": [ + "ab2604e1dd0396402ce6ab0acea3a340d107ad08", + "testharness" + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-007.html": [ + "17b0c72f106d9103af25c654e913ad00c2a5ee19", + "testharness" + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-008.html": [ + "32b50873af5b434817de9ca3fb5ea3b79808bdbc", + "testharness" + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-009.html": [ + "29551eeae983adc5cdd9b518b64a1d0c9560f062", + "testharness" + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-010.html": [ + "396afc15a311bb0a636ba2570b57366a52fbc770", + "testharness" + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-011.html": [ + "49109ff240399f0f1f60308850f805779dfc4b21", + "testharness" + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-012.html": [ + "45a9279c62d4052a150a6da13ae9c177a38f01a2", + "testharness" + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-013.html": [ + "29d4695a9ad8eb5eebcdf15b3693a714bc412779", + "testharness" + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-014.html": [ + "66d7b70d305869abb453caf2f0e51a274bd1a537", + "testharness" + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-015.html": [ + "874f6b55e6b204d6cfc41c73a2c00a5f4229d298", + "testharness" + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-016.html": [ + "51b59909bd41adefa471e9b8bf9ff75e9ed92259", + "testharness" + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-017.html": [ + "6423406f9bfaf43ac97fd4547a784c2bb8d19bc0", + "testharness" + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-018.html": [ + "123575acf3c090c6479e5e4fa064c75fcea56bda", + "testharness" + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-019.html": [ + "f611e34104ae873f1124032aa22621dfcf4fa128", + "testharness" + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-020.html": [ + "c0a3bf24655a77c05dce301b0173f18d0fa42234", + "testharness" + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-021.html": [ + "e39bd0c869b5c69f99ddb0e43ecd516c23e22051", + "testharness" + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-022.html": [ + "436855cb48c5de8f913f209ba8172644c0e97226", + "testharness" + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-023.html": [ + "07ea8b43529cc3abe597b5cbaf71b577c0e08a81", + "testharness" + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-024.html": [ + "4ef7fd0b4687fe9f08513cccff2707bb05d92a78", + "testharness" + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-025.html": [ + "4ecabe7266535153ce6e38e1bee6e4eba28c5260", + "testharness" + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-026.html": [ + "dc702a1d181ef4efcf4d5161ff1b10bbb8e08337", + "testharness" + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-027.html": [ + "a5646db94e62b9455c9ed44e9f1a86f1cda74153", + "testharness" + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-028.html": [ + "9940f6e83d28a45ad87a50b24afe5eca1c3ff596", + "testharness" + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-029.html": [ + "ed6197207c84d52614f2e4bda31aa0794ac244ce", + "testharness" + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-030.html": [ + "df920f26e14d9adb3e987771b74f3ca21d001b9d", + "testharness" + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-031.html": [ + "24cdde781a98046593d3f0a57906b756326c4d83", + "testharness" + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-032.html": [ + "489c89b0d82b3ad92e342db2b680b152e4bab404", + "testharness" + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-033.html": [ + "4905906bd110e7b9ef3ad1ca4e0b01417b0998c8", + "testharness" + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-034.html": [ + "c9ef480494c982efd2cc2b6801eb0c308de0a608", + "testharness" + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-035.html": [ + "f93f4f2a62aa2073676466dcfc5975556dd04739", + "testharness" + ], + "css/css-grid-1/alignment/grid-alignment-implies-size-change-036.html": [ + "748d617dac4b7c97592967c0df1ee82f6a43cc0a", + "testharness" + ], "css/css-grid-1/alignment/grid-content-distribution-001.html": [ - "71d678f48849879663d199ec57a5f19fb5e026b3", + "5622a264eb2dbd6cf621ac97aa4a8ae5db82c6b3", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-002.html": [ - "a20d044edc50199306349700b03522225841fc72", + "2c62d06a72062571ede87351e2538e386807e0b9", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-003.html": [ - "4ef0c09a8c51e4fd2979887fe7420a62eb783027", + "c07303851028f6421158fe307889a7a53d7f31e0", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-004.html": [ - "f1f2f65fad70478230f2456cbdf68ead9c6de7f6", + "f8692678b09611f1bcb5f1a1446f4eaeeadb64ac", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-005.html": [ - "cf1c4546b569bea0bea062736ccea0e9e4f934ac", + "7d0900472ae1237a92d1070ac434e7f56f537a52", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-006.html": [ - "f0f17f458563b57a39ff7b684996edfede82e510", + "ca8fea1a3e366d3dda1f939d6e119949a3774c48", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-007.html": [ - "08db6086c6a30888fee6881d6646d42c509d218b", + "01482b8fae411849e91dae8390d9bfe6e6ab9844", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-008.html": [ - "66d112eae6876a44c2246312719c2e6a3b93a5eb", + "77bb5394d7628566d07047220a08aba58970cf6b", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-009.html": [ - "a27003f50acf7ff550d99b14a4a4435f80e791c0", + "b5ded29b361ee406736a514d00743915ee7588c5", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-010.html": [ - "1f59c3d1af79df13007d0ba29132917a6e075e54", + "c0a3834676fa8bb146441bb7bc969560c667d1e0", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-011.html": [ - "edaf37eff5ed1db1709729e669aee460457de3ec", + "f9be3a544d65dd63f8a718b0884fd87bcebc34a0", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-012.html": [ - "6ba269671145f1f8d5a32f6a1efe5927a695f693", + "ee86f5d97a3db4b22f3ea5e9cec5d1f603401d36", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-013.html": [ - "a2036358ed56a79580d675cccd820e40b82bb3d0", + "ef01ff8ea9d9357382c59fca4832901e091b58b6", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-014.html": [ - "9e20812f1655d4bbbde261694deee0c1d09ff214", + "db95b9693a1e8986d81fb0fb42b045226ae87de2", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-015.html": [ - "d49d3b8b7a92a7cae108d7baa9d40b95699149aa", + "818bb47cab93792162cd3effbb1ab4bbf4cafeb4", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-016.html": [ - "9ac8ed870190e63aa9e248cf41c81c41b4816442", + "c5a38881fd5302f7f87fc0a08048455c2f9c6d93", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-017.html": [ - "7295162365f4929cf68ebad634be1d3bd6f7227a", + "4ad7a14d8e640963a7b19401e5805d20379da1ad", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-018.html": [ @@ -513371,367 +516299,367 @@ "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-019.html": [ - "5e97218c93c95bd57edd96219a520a894184b2b6", + "4a72208bc09151b5b6b471582c7211d1c6e1abf9", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-020.html": [ - "228cd6b2312f64f7ae7bb1421fb6b8c5e6bb4c22", + "cb61983358d8df21f445c52e2b4672f036b92930", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-021.html": [ - "a626f563a51ef70a0a6221dd397c4ea9dce74f2c", + "9be4696e87426cb7d7bbfbd623012427e1211e15", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-022.html": [ - "0699d18ff695b8920588304e9685f843fa006b4f", + "bc821e4fdc223b8f73c640f7dedc74c459cc6124", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-023.html": [ - "788e76b9f562e1a2af800b8939d8cd6dccdaf991", + "1cf05242c1918dfd94c8e3f429296696f1fbf2a5", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-024.html": [ - "d0f957e475c3c0934a3d84e64ea6552e47cfac7a", + "ed4439dcc8fca88286db1b6fbbfb9130f37bf17d", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-025.html": [ - "136e1a1999f3696a5742cb53a0d30e6411cfa6f4", + "ada440cf035137bd6c5377d543de603802a10680", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-001.html": [ - "0681924a44ddc7c141a8c20203289c0862e7ec7c", + "a4fb6eded9c20195017f73aacf53d08fff0fe990", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-002.html": [ - "e7771a519139a375f641125ea2a0a90102d228c7", + "a87a2c260aaa872ec9ea5699a0dcfa106e45bb2b", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-003.html": [ - "7ff3085ec34b3fe9664ef0a9e02ebe862c42c22f", + "1ae67e7963212bf6afa678b929873d86cec025e1", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-004.html": [ - "c474e6c83ca32385734a035fd36ef41e2e666f24", + "bc0978ff89ec6af691f88aa88e2b805f17012368", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-005.html": [ - "c5a5d80b273add95223306d99471d3a030fb8be6", + "2b5a655c5a934b98c0d7fcb8553eb8efa35cb5af", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-006.html": [ - "55d9f476640c87eb1663114599ddb6eafd91b7f0", + "712436aec944f0e7163da66a62d8a629a1c7ce80", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-007.html": [ - "d81f70fda4665e94cd32483127e069dec9b760cc", + "fa284f5404d3e24cc395a37380291cf58440e447", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-008.html": [ - "d4f0fde36ff5b437ebda34698d199cce359f00fa", + "24253384b12c5c20ef44dd14d882ab35a7a411f2", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-009.html": [ - "5a50c58f6b9ba8b4b51b020b93ee61d23bfb500f", + "a89a85650c01a24a088b5b704805389ac487afc7", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-010.html": [ - "fa5cc94c766ac0d455326bb117ae530df0ce6d4d", + "a676ad7b1ad0dc6ad205d767a4e366d43b2d1600", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-011.html": [ - "3f02b75738ac80f1875a3adc0ce07052841c6be4", + "c53c339b5ac8ea5f9b021cca8eca56bbffa25ead", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-012.html": [ - "97dac1879d441e29c97743e9e63bb44f6a413f67", + "d8746b969ea563cc8e683d00824a239cb9f45953", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-013.html": [ - "99832804da447b3cc35db8bb60492781a03ffb62", + "94aef014e0d0bb420a8d7421ebabb2a9699a14b4", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-014.html": [ - "2cc1f4a715b939a882d7394cb0d49d5ba4b127c7", + "1eec29a79380f6fb9e55f5e65f61f9fb906da192", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-015.html": [ - "8b1947a434ec968a5bd0170334e7e2c907e69f28", + "c792926de9e4a1923b5f67c44095fc5609f03f79", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-016.html": [ - "998612427cda18f277c5edf484892fd3b313bffc", + "3cda565159049d2b6d715166d9835041cb4918df", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-017.html": [ - "080c87419291575847c9e94eadf5096f4a438bb3", + "1d387c5780df35128eabaec4d431cb92c7f96d0f", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-018.html": [ - "aec32266b3e66fb38f45888140bf773d537728c9", + "dc470e6ad001ba3c32a264941a5a245a8241a91f", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-019.html": [ - "6891c290c82adce07bb2409732789b627f07ded0", + "425356e77beca062326b6902b0dc0322bf081e72", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-020.html": [ - "0ea2837b789ce2289aa2ec1c514006899d13def7", + "8bd9b585fe347a4be4ef2df571164ccd5a2163b5", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-021.html": [ - "0e2a972619d21b4de097ddca6f39f2cae486cc5c", + "f8127fd46686ae877b0ca01b26d0278a49fa898e", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-022.html": [ - "fb73bdbdff8fda79519e4fe387127ca539506357", + "e8094181ef73d466757fef11a439efa1af839a06", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-023.html": [ - "c8b2681075b476b15221bcb1fe1ea6a4e0c40409", + "c62f2d4b7bc3e85cc51b46b97e7281a7030e39a6", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-024.html": [ - "6446e5dede7383a43ac46b8083b6012b312a8124", + "046b9b3ebcc52c5ef1a5448ebef9ede1f0ed39f7", "reftest" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-001.html": [ - "4ebbf6afe7452b5a61c9a475b7beb3958dd39ee5", + "faa0a4a8e6660d8bb12cec2ccbe86e8e23bcc936", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-002.html": [ - "a1b58d6358acae0e0a4d48ec2e896b5a86b296bf", + "735b425c34d147a32b97e60606a5d088389fecfc", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-003.html": [ - "3d0b16a4ad5d537fa2728e630bf81d8a55303cd4", + "7f5a41bc81b97bb4b62e55b69fa1ecfe241edaed", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-004.html": [ - "71f1966a0c3f899dd3b2601d225ec5683514e296", + "0e12bf8b99c417c9176100f7b945b9a83d53f69c", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-005.html": [ - "c95fbde16d02ff01eab5e39a1f9b66ab5d0ca88c", + "d28606de466e787ac8e4c1f742806c2bbf570a88", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-006.html": [ - "3bf926a4638e8a7a36d255e3a54c2b33e978c850", + "2ea3e018bf73940231af89dc72c2352fe2985732", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-007.html": [ - "00a3a65a3028898decd5b33dc749d1d4b61c05f5", + "d2ff7e0efbb1240bfa4b21b0d2e7eb0891950348", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-008.html": [ - "f7058e3180965b0b85b83d66cc3623e4d6ed081c", + "0ee2f7d1f4bed6383a762f86efa6dc2a8a27bf4b", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-009.html": [ - "c56e42e2c7726204f112bc124adf6bf4e75e1c83", + "d64052253097bade696ff9c8bee42bfa8cca9604", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-010.html": [ - "cbec5d103a8c29e5af97a54fe856c250ced3ee69", + "9523288742cb15e2451b41b85596ff868b6b4648", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-011.html": [ - "b2556efc42d96830190ef6bbe0fdeef7c939cd76", + "9929a38f502a2e82ae93b6a39910eacb04ee6e58", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-012.html": [ - "7700cff07f4930e4453c7dabef98ff41dd85f04b", + "9a19df31cfded6c4270da40070c3e8390c8366b2", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-013.html": [ - "64c4f341755b5bef5772cc164427033fbf3d44f3", + "a8cb352297f011b42b3740fd73f2f78f0bdca29d", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-014.html": [ - "e7f19c6990b60e8d527089d600d0b5d585f37d42", + "11e3cb854d0c9fb7535a7408a56e9f372acf7b74", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-015.html": [ - "516f95b9ab855414499423cc0b6354b37735c428", + "7b145fe80d78b51f42f1a257e64b77f256324029", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-016.html": [ - "4e6a1caea23ac6a54e2e6f5fd9585d574dd615aa", + "3d7b17fa76b3f21ccd882072158f25c723698b24", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-001.html": [ - "ba37dd2cb887de2c6a577e7ad538f588f6c2a6b5", + "613da8787ea601c01cd79348e68d94cbdf4f6c12", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-002.html": [ - "2a88930bce761a86b84bc39cbbb9c6c4fb1ade6f", + "bfbfeef9485cd0a842729d72ae6a7d2978fed0ee", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-003.html": [ - "1a598d7e5c0a63aedb6fa83a81084707a97082bd", + "47f8fa7e366a0928a1ef6ee30d3e97898d10b882", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-004.html": [ - "aba771e25d3801ea42786fd006e5e444605fed9e", + "0277d86138e1e5aecea0fcde768a48a8b841046c", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-005.html": [ - "45aee24069e89a238c99b61ee905ab516fc1fe4e", + "b82ead09258f8746f6c7d4d9fd363b2bdfe2fe42", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-006.html": [ - "481ed2e3a960f5e3da1dde22245d1da6f33cd344", + "290d852faea189b602457356f6abf8df51f4e306", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-007.html": [ - "62b193d96908b1950ad8d7ff994e7f0718b3a9f1", + "f8418fe79ca641e453791ca1c202cdad50220b2e", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-008.html": [ - "55f131bf1a0566068b0882ec90cd37e257b9b28a", + "10e77671b9a37de05f4898e035aa29fde999f64c", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-009.html": [ - "d2ae2b5839c06f483740ee96fbd718110515d095", + "9f7f821d8fd60bf5ab47f5341a3a103afe94d3a8", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-010.html": [ - "90cbedb0e00ad7da4b3d9627804d668e160935eb", + "f5327de3394428415fed804e4e79efc0fe963817", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-011.html": [ - "53f3a18185535c7310df5ba9132e63cad8daa651", + "a7aac5da4c4e085b14c77a0088a4d608c637f9bc", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-012.html": [ - "170a800b282312f4f4e35845b4d6009b3e491ca4", + "b35ad113f09d62cb40cf4a16ff6faca82d73de35", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-013.html": [ - "ec7e80425ea1e5df487f43d62d1bbf8e5774d294", + "5e97e65254d39476e883cb847d421a54496c71a8", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-014.html": [ - "66d1929467cee9b75c05c30f1be0b29969646b1d", + "cf7374a5f900e4d6a675dc32a9181cfd1653075d", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-015.html": [ - "d22228744c0dfab1d541361812317680c8e6db34", + "1ebbfc6564b9c8350fa618bea97ecab3fb44eade", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-016.html": [ - "6a5b4f1e3f8713ec386971b90c152844a1963153", + "74711c54c4c2148895e75132d9cebc225a9128a2", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-001.html": [ - "f3839a8b379099186f499886a2687d879941e553", + "a4d4dec0f3fb7f490c2e046d535d8f86a89ec519", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-002.html": [ - "f2e48ba123603f1617302a842d13b41f8a134791", + "2ab21074fa42c487f294866c39859e06364715de", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-003.html": [ - "9cf06a6284b8ea46a451b750b634800edf0a263e", + "695ee5fa198c111a3f8dcee1520938878b003410", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-004.html": [ - "ee801dc782b31539787b108e2249163648fb9476", + "6625c4aa82c02c86075a49d0485160b24f5ed5b6", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-005.html": [ - "595f81d3ca4465d53968b1a5e7d2c5ef9364e1d7", + "5c400ff43392287f0203102c100ae1d286286e94", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-006.html": [ - "d824792aa48927230d5d79413d6b31ff9e6a9044", + "5c4f715f864ee0718a28cd56aef5bb63549042da", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-007.html": [ - "7875a1c3f5bd7ed5f9bc6d57ee55a74eae70d08c", + "82b67b0f255a36275c9e2179f7c0a6c194b80881", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-008.html": [ - "a91f9d4cd8375f9a3843df68c1699be43464a519", + "df9a693d3d6a7ecfb8767b1e53af0f71b54e4cac", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-009.html": [ - "b34bf92f1eb907ed1cae789ca5d0526180746a8d", + "9223ee50b9c22c737e42f113e67418c3b9f42312", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-010.html": [ - "923c6fbd83ef1df81c92f3b818d5ed6bc8545eb8", + "065d965da5145e629517941de214c53a990e7d04", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-011.html": [ - "30701ba96fd590d43fa4d69e2393493812950a9e", + "819fb3899679610911df95110f051973ef4fcbb6", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-012.html": [ - "eb4d83cc9c0053fd305994ce7eeb7015a75a85d3", + "52459738d7455d7ed97045aea124b2160d37643a", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-013.html": [ - "3d1e1bd37812a4707305255afa4ff94433995771", + "09be06f107f5ea97fc6db45b8bca150e10dc7296", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-014.html": [ - "746b1f48171561ad5aacc7ce282592fefbb2ab3e", + "0270a89bde2e54d3108d8ab8b8dbb3f64ae855af", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-015.html": [ - "a913de9564b2e44fec43b66177cc6b94cb174a08", + "f49ae99abd185af7bc9937c16bb7f4bb2044bdc6", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-016.html": [ - "749d78928a228bb67878b3c088d36bcfd010aa08", + "86d478dee444129ccd10f76aed6d80c75251ff13", "testharness" ], "css/css-grid-1/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-001.html": [ - "afb6c282b7e952878c52c198579541ddca6afdb6", + "e7250b61f6dc882945f73412ec73c0de7f139aad", "reftest" ], "css/css-grid-1/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-002.html": [ - "67a739c055f22f9de478d7d62a56bb9e65415cfb", + "083e1bed1a996e0a333456163df2610d94acd682", "reftest" ], "css/css-grid-1/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-003.html": [ - "3ccf5136030949e11a305349d317af193fe4f0ff", + "4ce945c003fe0ea32b6d92ace158f3975ec557bd", "reftest" ], "css/css-grid-1/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-004.html": [ - "30a0be3371587b0871bbc480aa7e7098c4bc51e6", + "5d67cb17c0af2c67282c454b5dcc4b0eaf346220", "reftest" ], "css/css-grid-1/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-005.html": [ - "b4782cea1a8ec242087271555d55bae0f574fa91", + "d12ea65c89b6df11bdc0e9cbfd92b72084fe9709", "reftest" ], "css/css-grid-1/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-006.html": [ - "c6a597f7e720491cd09ba3007cc50234639cdc33", + "04c3d0b31ecdac7281680f551c3d2368985f7acd", "reftest" ], "css/css-grid-1/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-007.html": [ - "2593b5f169c3fd0778cda370821572057ae25f0d", + "4163237401ba3f1e8e7bb8f4cd85c130aad85079", "reftest" ], "css/css-grid-1/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-008.html": [ - "0eb8c0b70ff376de7608cb843838ea35556bef08", + "9322237dea7e159bdab91cf9e7964e81a19a6240", "reftest" ], "css/css-grid-1/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-009.html": [ - "bc146287841851768ff6040e5fbc1d829677413e", + "7de044c48d604dda57553267f6247fa2926a2316", "reftest" ], "css/css-grid-1/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-010.html": [ - "2fe23a2f58c96b29b8741e35ca77b856431c5d19", + "fc5cfbb40c6610126e402487cda944934c266a1b", "reftest" ], "css/css-grid-1/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-011.html": [ - "83b810467e538bb0b8982224e2008aef0f48e84a", + "e7bd2ef62d02b104e0df649945ca59a5fca930bf", "reftest" ], "css/css-grid-1/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-012.html": [ - "1b2f571a79fe01b247ade6d6ea8514c7b46e2fd6", + "dc9d15b18538afb38790de51e31095ce9f93e0a9", "reftest" ], "css/css-grid-1/grid-definition/fr-unit-with-percentage.html": [ @@ -513778,6 +516706,10 @@ "e30c5d9b04eaf45a511b8df22a2c9719a03ecd92", "reftest" ], + "css/css-grid-1/grid-definition/grid-shorthand-001.html": [ + "31ef1f583e9d09e4d719a0ca5cb5531e8ce08b36", + "testharness" + ], "css/css-grid-1/grid-definition/grid-support-flexible-lengths-001.html": [ "f03efa4af7f9eb9decd60bfe44c7a3166947ba32", "testharness" @@ -513979,19 +516911,19 @@ "reftest" ], "css/css-grid-1/grid-items/grid-minimum-size-grid-items-006.html": [ - "a18e54cb5ba9b0f91c443e073084784778ebfa7b", + "df2f90f3fb83a670f78b6b63c096ef78fd14a6c2", "reftest" ], "css/css-grid-1/grid-items/grid-minimum-size-grid-items-007.html": [ - "bf657a093b431c6c0f17f4c207a7b32ba0822045", + "1d2a78a5862a71a9b360bf568bcfb53c7f868f17", "reftest" ], "css/css-grid-1/grid-items/grid-minimum-size-grid-items-008.html": [ - "fc9ce48c25c9d446e1b6186469216a551aa67afa", + "5dbaa3254fa6c4235fc6fb56a1635fc27060c3a8", "reftest" ], "css/css-grid-1/grid-items/grid-minimum-size-grid-items-009.html": [ - "c843c219820996931e54f2ae404cbb03bfea2e59", + "70210c9a1706894f4a6a63ffa92b3c979998d2a3", "reftest" ], "css/css-grid-1/grid-items/grid-minimum-size-grid-items-010.html": [ @@ -514039,7 +516971,7 @@ "reftest" ], "css/css-grid-1/grid-items/grid-minimum-size-grid-items-021.html": [ - "de9477d81656c85b0d41044b1ffb44634c78eb0e", + "205f2292e788eee87490530488e2f1575e809ade", "testharness" ], "css/css-grid-1/grid-items/grid-order-property-auto-placement-001.html": [ @@ -514134,20 +517066,20 @@ "ff6fda3a436fa54df17a321e2458204fd963dfb2", "support" ], - "css/css-grid-1/grid-items/support/100x50-green.png": [ - "cd621ca154bb5b1f92d8f593a15ec8eba8ce8e38", - "support" - ], "css/css-grid-1/grid-items/support/200x200-green.png": [ "4e0148e2484a2bb979af76a5015aa25db5e2cc6d", "support" ], + "css/css-grid-1/grid-items/support/25x50-green.png": [ + "0891f51a69b099a3d04ec15bcc81ef5da2766c06", + "support" + ], "css/css-grid-1/grid-items/support/500x500-green.png": [ "8d02cbc578a3704611aeacf28a534f3983851060", "support" ], - "css/css-grid-1/grid-items/support/50x100-green.png": [ - "2995c59ce9aad40a9303380fc9dcc644e38bdc68", + "css/css-grid-1/grid-items/support/50x25-green.png": [ + "7082f20d7a960faa3a3a2db3f78586997ebc17dd", "support" ], "css/css-grid-1/grid-items/support/50x50-green.png": [ @@ -514366,6 +517298,10 @@ "a9d8444db24ab38518f07a965a8a537cc6add437", "support" ], + "css/css-grid-1/support/style-change.js": [ + "a92e1d3f5be007d10fdf432bb198f87b00bdc35a", + "support" + ], "css/css-grid-1/test-plan/index.html": [ "e633dc7584fbc7bfe99177aa5dd9fbd107a2d3f5", "support" @@ -514610,42 +517546,42 @@ "8542b83ed433bfdda8f8bf4f92c8d2e993f9c968", "visual" ], - "css/css-logical-properties-1/OWNERS": [ + "css/css-logical-1/OWNERS": [ "4dd9aea6bf0ddc75d703b1ca3867fedbc27095e8", "support" ], - "css/css-logical-properties-1/logicalprops-block-size-vlr.html": [ - "68a86c5b34cf3769e4cda12ef4d23ecdb523734f", - "testharness" - ], - "css/css-logical-properties-1/logicalprops-block-size.html": [ - "e9597ce04c2b8be8128f9b411e7990bc85d3842a", - "testharness" - ], - "css/css-logical-properties-1/logicalprops-inline-size-vlr.html": [ - "a0438d0713820ac5ab82f0165af7711f71d91ae6", - "testharness" - ], - "css/css-logical-properties-1/logicalprops-inline-size.html": [ - "fea8f8205053e933de3dc4490c918c3db69a4a05", - "testharness" - ], - "css/css-logical-properties-1/logicalprops-quirklength.html": [ - "c2b3d06c377e8abae3691abb60f8bd84433ed384", - "testharness" - ], - "css/css-logical-properties-1/resources/style-check.js": [ - "f6260209571bdd53be52c698f072c121e3702dd1", - "support" - ], - "css/css-logical-props-1/cascading-001-ref.html": [ + "css/css-logical-1/cascading-001-ref.html": [ "b95cd62ce3592f653aaa54de0dbc27e16618064b", "support" ], - "css/css-logical-props-1/cascading-001.html": [ + "css/css-logical-1/cascading-001.html": [ "a94344f196774b463dff39c022a48a0cc5585c88", "reftest" ], + "css/css-logical-1/logicalprops-block-size-vlr.html": [ + "68a86c5b34cf3769e4cda12ef4d23ecdb523734f", + "testharness" + ], + "css/css-logical-1/logicalprops-block-size.html": [ + "e9597ce04c2b8be8128f9b411e7990bc85d3842a", + "testharness" + ], + "css/css-logical-1/logicalprops-inline-size-vlr.html": [ + "a0438d0713820ac5ab82f0165af7711f71d91ae6", + "testharness" + ], + "css/css-logical-1/logicalprops-inline-size.html": [ + "fea8f8205053e933de3dc4490c918c3db69a4a05", + "testharness" + ], + "css/css-logical-1/logicalprops-quirklength.html": [ + "3024bbd54e4cbe1ee55e59684188587e2a56fda6", + "testharness" + ], + "css/css-logical-1/resources/style-check.js": [ + "f6260209571bdd53be52c698f072c121e3702dd1", + "support" + ], "css/css-masking-1/OWNERS": [ "388433ab37e52bf8982700fad3ffd34b8ecae122", "support" @@ -521110,6 +524046,14 @@ "eccf10a7909e2358ac6425140e87c323ed786296", "support" ], + "css/css-tables-3/fixed-layout-calc-width-001.html": [ + "0b8262ca3abd6104e86c305d738a2c70f6cb1f87", + "testharness" + ], + "css/css-tables-3/fixed-layout-excess-width-distribution-001.html": [ + "36b7b7893dba1f3ddc2edf46fee323d75e5af49d", + "testharness" + ], "css/css-tables-3/floats/floats-wrap-bfc-006b-ref.xht": [ "22f5ec058d34dc57c010bca8a301eaa8f7901880", "support" @@ -521130,6 +524074,10 @@ "abe7468e88cad3aef32c7e59fa4a33a7930ef53b", "support" ], + "css/css-tables-3/support/check-layout-th.js": [ + "a9d8444db24ab38518f07a965a8a537cc6add437", + "support" + ], "css/css-tables-3/visibility-collapse-col-001.html": [ "3e3661a3b8b8d6d42cf5aaa982f6a75902803767", "testharness" @@ -526822,6 +529770,70 @@ "3a8b93dbbca1507311781081e33425e06a499a37", "reftest" ], + "css/css-text-3/white-space/pre-wrap-001.html": [ + "f93cc40a8d455d13fe110c3d7cc0284514d5ad8c", + "reftest" + ], + "css/css-text-3/white-space/pre-wrap-002.html": [ + "64d2ec262a5fd3e2442d91081b9982f6959a5dd1", + "reftest" + ], + "css/css-text-3/white-space/pre-wrap-003.html": [ + "3aea664385b6a065a30c1fc5e59ff799e67eba28", + "reftest" + ], + "css/css-text-3/white-space/pre-wrap-004.html": [ + "039737abdebd796d54ac18473e7fa0fdb2260a6b", + "reftest" + ], + "css/css-text-3/white-space/pre-wrap-005.html": [ + "52c66158b35fbc23e206ca058dd202315a56785d", + "reftest" + ], + "css/css-text-3/white-space/pre-wrap-006.html": [ + "026913263a924c13e5ae44e2b682520c58228d1b", + "reftest" + ], + "css/css-text-3/white-space/pre-wrap-007.html": [ + "9da32f0784c236fb42eb191196eeb879560cb9ba", + "reftest" + ], + "css/css-text-3/white-space/pre-wrap-008.html": [ + "a8899baab31c158f1c58f376a65aba6996c29efe", + "reftest" + ], + "css/css-text-3/white-space/pre-wrap-009.html": [ + "8ae0f2dc17e299fb5e9356c0b51f5ef203ace797", + "reftest" + ], + "css/css-text-3/white-space/pre-wrap-010.html": [ + "af0595c7e23d3c011f513fa3573db153e4a522f4", + "reftest" + ], + "css/css-text-3/white-space/pre-wrap-011.html": [ + "357ff8ef998ec147ea3ac7a5ecfd461391ba5f87", + "reftest" + ], + "css/css-text-3/white-space/pre-wrap-012.html": [ + "07466d5c4186519718c265cf95415c19a4177d44", + "reftest" + ], + "css/css-text-3/white-space/pre-wrap-013.html": [ + "a76f6a4042f4bd0579d495a5e94812303dab888e", + "reftest" + ], + "css/css-text-3/white-space/pre-wrap-014.html": [ + "aaa1e079c44e86250c6f12841d4c7635db74ad76", + "reftest" + ], + "css/css-text-3/white-space/reference/pre-wrap-001-ref.html": [ + "bba318097b9c85f6c15dc7f69bfcdc39514278e8", + "support" + ], + "css/css-text-3/white-space/reference/textarea-pre-wrap-001-ref.html": [ + "0d9b285072f9db8f337b743a8040e3d69bc97a2f", + "support" + ], "css/css-text-3/white-space/reference/white-space-collapsing-discard-001-ref.xht": [ "a67bc4fe47ec809cea74476ccab6b0cebc1fdfb3", "support" @@ -526902,6 +529914,62 @@ "94f7655139fc8059856e3b92129b09a4a62509ec", "testharness" ], + "css/css-text-3/white-space/textarea-pre-wrap-001.html": [ + "e5aa5ae1cccf994eb821039ff9726ab41591dae2", + "reftest" + ], + "css/css-text-3/white-space/textarea-pre-wrap-002.html": [ + "242cdc5e31096f99fe05f816898e69f29669dacf", + "reftest" + ], + "css/css-text-3/white-space/textarea-pre-wrap-003.html": [ + "52eb65dfa1f0a2e415e6770908101eb75cb543e3", + "reftest" + ], + "css/css-text-3/white-space/textarea-pre-wrap-004.html": [ + "d47ff3de33fb1c73eeb734d0d75dcd082e9ebec0", + "reftest" + ], + "css/css-text-3/white-space/textarea-pre-wrap-005.html": [ + "f0aa2fc03ab62dd6099571636d6e882decd45b64", + "reftest" + ], + "css/css-text-3/white-space/textarea-pre-wrap-006.html": [ + "a11429b9e29eb1fb6780ae4778da5990b154a634", + "reftest" + ], + "css/css-text-3/white-space/textarea-pre-wrap-007.html": [ + "22b1d2bba518e4bb08225dcf908f083291e9e843", + "reftest" + ], + "css/css-text-3/white-space/textarea-pre-wrap-008.html": [ + "b044f1f9774eb64ec3a47a5f145fb0540994ccee", + "reftest" + ], + "css/css-text-3/white-space/textarea-pre-wrap-009.html": [ + "ab5bf5af5a528b388ff6968c6cfced9b3c1d12c7", + "reftest" + ], + "css/css-text-3/white-space/textarea-pre-wrap-010.html": [ + "87f7f79bfb3cfa7493c5c805d3cd889835689799", + "reftest" + ], + "css/css-text-3/white-space/textarea-pre-wrap-011.html": [ + "700bd41635bd14683d5efeead256ab70e00f3619", + "reftest" + ], + "css/css-text-3/white-space/textarea-pre-wrap-012.html": [ + "ac711d5740bfd7244442f957bd5df6ed9f8d1633", + "reftest" + ], + "css/css-text-3/white-space/textarea-pre-wrap-013.html": [ + "46a942378c02a6b856a7f29038683f4ada91f2b2", + "reftest" + ], + "css/css-text-3/white-space/textarea-pre-wrap-014.html": [ + "8e8b3768bac0b8bb8a5a93f8d2afecf4fad1e819", + "reftest" + ], "css/css-text-3/white-space/white-space-collapse-000.html": [ "311f61dd93bf7b39b07f14aacad5d4bd77639cb2", "testharness" @@ -532731,31 +535799,31 @@ "testharness" ], "css/css-transitions-1/events-001.html": [ - "abffac2d61bc91e8b3277b402f9b624bac35936b", + "30eb9732ba5c1d5325cb95a1d21e34f06251c613", "testharness" ], "css/css-transitions-1/events-002.html": [ - "52374e677c313f03551994597d8b83dc0f8f1490", + "5fb98d8366418a6d6c72e1885bf0ea0f428e42be", "testharness" ], "css/css-transitions-1/events-003.html": [ - "3e490116ffa0850bc849c2731dfa43c42ce78a17", + "cb4147b4b9e43b3ec6fc70c7887621790e00c0ea", "testharness" ], "css/css-transitions-1/events-004.html": [ - "26295080416d83dcb6ccdc6d3158d2e84b29e32b", + "ba0027ef26edfde941ab3c2f0072e10f0c6248a4", "testharness" ], "css/css-transitions-1/events-005.html": [ - "d5a001057e76b24a9614a1e6eb0c79e6ecb86186", + "fb8c4dd32adcb9b264f2990ab4e962986561f5ed", "testharness" ], "css/css-transitions-1/events-006.html": [ - "0e3dd5bdfd7f0d4cb3324bf8315f2a1748df04c2", + "2e957a34c69ca94037f4b8af9c3e87fc94a63a46", "testharness" ], "css/css-transitions-1/events-007.html": [ - "3848e7aa9b6023144fd2dd8bde568a664a564d02", + "f92ae90b2f7a88f32f141b3136ff833fb7ba6a2b", "testharness" ], "css/css-transitions-1/hidden-container-001.html": [ @@ -532863,7 +535931,7 @@ "support" ], "css/css-transitions-1/support/helper.js": [ - "b286f9cb99db632a2e95707119e7cb6e0a0f3aab", + "73bb1ba1862facb0d8a3e3dcd78611a79f458025", "support" ], "css/css-transitions-1/support/import-green.css": [ @@ -533475,7 +536543,7 @@ "testharness" ], "css/css-ui-3/caret-color-020.html": [ - "ccb5ab72ef95d82eba7504f26170a88a98178edd", + "46c6575138d57250aa385e2ee5fa4a8453da644e", "testharness" ], "css/css-ui-3/caret-color-021.html": [ @@ -535047,7 +538115,7 @@ "reftest" ], "css/css-ui-3/text-overflow-006.html": [ - "f52b6fb409dac90a71fa71c201d0b8c08d805fbd", + "f1cf60e25fd70476597cd86cd81ebeea6a5586a3", "reftest" ], "css/css-ui-3/text-overflow-007.html": [ @@ -535114,6 +538182,10 @@ "095f78700529b34397887722b57b56dd7dd97861", "reftest" ], + "css/css-ui-3/text-overflow-023.html": [ + "4fd38a517e41851216d12db8c6b732d96f76e325", + "testharness" + ], "css/css-ui-3/text-overflow-ref.html": [ "db55b0b95a7406e9c4f00081b3e2cbe6b07363f7", "support" @@ -535562,6 +538634,10 @@ "857b8aadc90a4073e122c667a554669a93886785", "support" ], + "css/css-values-3/absolute-length-units-001.html": [ + "d21dfd079ff6ac225e5f36c25e34bd994a713fa2", + "testharness" + ], "css/css-values-3/absolute_length_units.html": [ "64ea61f181e9e6c1c801ff7e10c75122beab45c2", "visual" @@ -535687,11 +538763,11 @@ "support" ], "css/css-values-3/reference/vh_not_refreshing_on_chrome-ref.html": [ - "214ac04a1caed95fff6854c18a7fae9ffdca1b76", + "affece13e73e451198a986146abde869b90c64cb", "support" ], "css/css-values-3/reference/vh_not_refreshing_on_chrome_iframe-ref.html": [ - "ad8d37ad73e28b91af8b469eac6eab2bc0bdb9ef", + "81474dbdd159353cc30131e37d54556e422e3f5a", "support" ], "css/css-values-3/support/1x1-green.png": [ @@ -535871,7 +538947,7 @@ "support" ], "css/css-values-3/support/vh_not_refreshing_on_chrome_iframe.html": [ - "bdb7025d19780a35e031e5b4df92a0e3b2ec815d", + "95f9582bf94c0bc60ddee79415b763af8762faf0", "support" ], "css/css-values-3/unset-value-storage.html": [ @@ -535931,7 +539007,7 @@ "support" ], "css/css-values-3/vh_not_refreshing_on_chrome.html": [ - "50f44774467976bc31f0d05df882bc971375991d", + "b95d1e9054aaaa9c9a780fd4852307ed3604d46a", "reftest" ], "css/css-values-3/viewport-relative-lengths-scaled-viewport.html": [ @@ -545303,7 +548379,7 @@ "testharness" ], "css/geometry-1/OWNERS": [ - "4b2b22591c272446136118ce3d174d1b66200743", + "173dd21a142b526b7447cc24e93a800e84f70bbc", "support" ], "css/geometry-1/WebKitCSSMatrix.html": [ @@ -545326,6 +548402,10 @@ "22348a0aaeec8dcd677b8f60486f2e043b8f8a86", "testharness" ], + "css/geometry-1/spec-examples.html": [ + "9cf446202e4527e26d113e36d2e7427ab32ce2f0", + "testharness" + ], "css/geometry-1/structured-serialization.html": [ "1cc9f91deb2cf68704f0f5cda77a3288f45d5c5a", "testharness" @@ -572527,7 +575607,7 @@ "support" ], "css/work-in-progress/opera/OWNERS": [ - "3a52efa37cb05c353bb8ce78146c42db6a238b74", + "adc83b19e793491b1c6ea0fd8b46cd9f32e592fc", "support" ], "css/work-in-progress/opera/animations/0_as_keyframe_selector.html": [ @@ -575263,7 +578343,7 @@ "testharness" ], "cssom-view/OWNERS": [ - "083538f652edfeea9bde3d5d9f56667bc3773f6a", + "cf93c0eefa7ac990a83355eddb8b22fa4baddf53", "support" ], "cssom-view/Screen-pixelDepth-Screen-colorDepth001.html": [ @@ -575319,7 +578399,7 @@ "testharness" ], "cssom-view/elementFromPosition.html": [ - "d90dff8b15ec2977f341a7add9c7d627b62d9d0f", + "2bb07e21ddfbc24dabc39fa261c720a36f56a933", "testharness" ], "cssom-view/elementScroll.html": [ @@ -575366,6 +578446,10 @@ "81c8e70138fc30d0954d9de692ee396310586c7f", "support" ], + "cssom-view/interfaces.html": [ + "d74bbaf34040d130444915b4432c529a73d9604c", + "testharness" + ], "cssom-view/matchMedia.xht": [ "3330cf1603555d50d097cdc584cf1c193c8b32d3", "testharness" @@ -575398,6 +578482,10 @@ "0a8784c474ccdd4a3e76cb936855a8ef59566217", "support" ], + "cssom-view/scrollBoundaryBehavior-manual.html": [ + "987051cdbad355cbb1bbb8ea1030a3b17e533f09", + "manual" + ], "cssom-view/scrollIntoView-empty-args.html": [ "57e22136750f54145c37722674389590b7f340b6", "testharness" @@ -575446,6 +578534,10 @@ "e3bc7ab9a646c1275e5dab9394df97d72ef8a42e", "testharness" ], + "cssom-view/scrollintoview.html": [ + "6ff3bd8afc87c9f678115e18d3ff8b5331f81c00", + "testharness" + ], "cssom-view/support/1x1-green.png": [ "51e7b6974a09eda6cb31337717c5eaeb9c44b443", "support" @@ -575626,10 +578718,6 @@ "7f3440e65abbe692e3c28f1f1d04671054ecc815", "testharness" ], - "cssom-view/ttwf-scrollintoview.html": [ - "55d874f53db3c8ed03fff063584eecbcda10d2ce", - "testharness" - ], "cssom-view/window-screen-height-immutable.html": [ "3193a200624217a260e17660006e9ce31a52814c", "testharness" @@ -575687,7 +578775,7 @@ "testharness" ], "cssom/OWNERS": [ - "504fa320d984433da43ab370215ecc2ee29ef66d", + "f468e2cf28cba133432cae56fd5b71e69188c7a3", "support" ], "cssom/StyleSheetList.html": [ @@ -575783,7 +578871,7 @@ "testharness" ], "cssom/interfaces.html": [ - "5876c88acd95d18166fdd049bdb3f09cdde4eb3f", + "c1dfd96239986c9c57d7b07caebbd1fc9654e0b9", "testharness" ], "cssom/medialist-interfaces-001.html": [ @@ -576026,6 +579114,10 @@ "078e1dd6dd61d36cec239ed75d02051f61fe60a5", "support" ], + "cssom/support/xmlss-pi.xhtml": [ + "d25c88a9ce946cf0e2fde88062b7438b2df9c678", + "support" + ], "cssom/ttwf-cssom-doc-ext-load-count.html": [ "800db5cd4f7342d8c4e5309d4035182ce42f7251", "testharness" @@ -576267,7 +579359,7 @@ "support" ], "docs/OWNERS": [ - "f44b20b9ca4ae973a8a1da3a8d37e4c9dbb0dfdb", + "8b8fcd1bcd07619951c92029a3f5cad01fa75d44", "support" ], "docs/_appendix/github-intro.md": [ @@ -576471,11 +579563,11 @@ "support" ], "docs/introduction.md": [ - "6c7c15823a502b51b84bde1da8be9bcfb3012cdd", + "b877d57dfe88a167dd7ff229d3bdf9fd22c76e8f", "support" ], "dom/OWNERS": [ - "9b55eeb7739453218526eab2d6d00aedc475303a", + "2bfae729fb0eab4081f06e51ae5640b49e012b8e", "support" ], "dom/abort/event.any.js": [ @@ -577459,7 +580551,7 @@ "testharness" ], "dom/nodes/Node-cloneNode.html": [ - "f2f37f4ad272aef9f5ee46f8b44a668ff394d6c8", + "d4ab5a700e36fa6b8c26ffc6703d2a9020b5336e", "testharness" ], "dom/nodes/Node-compareDocumentPosition.html": [ @@ -580198,6 +583290,10 @@ "85124d35b37f14c143e1fcb2965f131a8f2a3391", "testharness" ], + "encrypted-media/encrypted-media-default-feature-policy.https.sub.html": [ + "aa376680149e53e4839dc48b45291264fa5d6960", + "testharness" + ], "encrypted-media/idlharness.html": [ "69456d56a5485b04465f4f6ee4abc80388703fd9", "testharness" @@ -580770,8 +583866,40 @@ "eb60703976142de7a5565928a25d875ef142da0a", "support" ], + "feature-policy/OWNERS": [ + "51fd9c99d8f327e033d8bb1a2500b5143d333287", + "support" + ], "feature-policy/README.md": [ - "b74968d23db1beb35015cb6d8934f92d60cd3a5b", + "711c323f1690b0dbe780461241ad825cdd3cf274", + "support" + ], + "feature-policy/payment-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html": [ + "8595732f7794f10107ef234fe6e37cc12c80eeaa", + "testharness" + ], + "feature-policy/payment-allowed-by-feature-policy-attribute.https.sub.html": [ + "7f00979fb8e60e938bfa816786705c95e611d2f3", + "testharness" + ], + "feature-policy/payment-allowed-by-feature-policy.https.sub.html": [ + "762f4d517150b10438fca8571204caae79e00278", + "testharness" + ], + "feature-policy/payment-allowed-by-feature-policy.https.sub.html.headers": [ + "038c90f26cb5c16047c294aa35a0b0251324dbc6", + "support" + ], + "feature-policy/payment-default-feature-policy.https.sub.html": [ + "6980a706cca09eaeb2d63d6780a5e0a89ff52fa5", + "testharness" + ], + "feature-policy/payment-disabled-by-feature-policy.https.sub.html": [ + "942104579b3710532d35bab01f9f387d5ed04fe0", + "testharness" + ], + "feature-policy/payment-disabled-by-feature-policy.https.sub.html.headers": [ + "09f612159dc367bad5febc8e0a724f0a284517d5", "support" ], "feature-policy/resources/feature-policy-payment.html": [ @@ -580787,7 +583915,7 @@ "support" ], "feature-policy/resources/featurepolicy.js": [ - "99eeea227030740ce1aac7b4bf7c970dde9a0bea", + "c8fac11b41aa98314aeca32d88e3027ba6aa92d1", "support" ], "feature-policy/resources/redirect-on-load.html": [ @@ -580795,7 +583923,7 @@ "support" ], "fetch/OWNERS": [ - "e62831c5bfccaebe49384f42c515ece1b65244bb", + "41230bc6bb795469b2d6534b00db50477637e1ee", "support" ], "fetch/README.md": [ @@ -580967,7 +584095,7 @@ "testharness" ], "fetch/api/cors/cors-expose-star.js": [ - "393131f216961ca07a225d61a5b51726d8b02c51", + "2403a7d229377d03230f32383e71960e32a84271", "support" ], "fetch/api/cors/cors-filtering-worker.html": [ @@ -581015,7 +584143,7 @@ "testharness" ], "fetch/api/cors/cors-preflight-star.any.js": [ - "5516bbb914b5d2a847d800d5c0f49a6da23b88e7", + "fd336bff06ef9d08b9a728592c9e7bf0c43496db", "testharness" ], "fetch/api/cors/cors-preflight-status.any.js": [ @@ -581507,7 +584635,7 @@ "testharness" ], "fetch/api/response/response-cancel-stream.html": [ - "3269c6c337a392f95e852d4f6904c51a90e7f652", + "453323c2a0f9a908966df3cb53211c0b0a1fa19d", "testharness" ], "fetch/api/response/response-clone.html": [ @@ -582199,11 +585327,11 @@ "manual" ], "gamepad/idlharness-manual.html": [ - "7098d436c90bb7242a3fa4aace2c85017fae5d56", + "b7feb12fc02bc656eb41f406999481d204293c08", "manual" ], "gamepad/idlharness.html": [ - "9bbceffc0b80b990f6f72e1e77a9fa451536bbbc", + "c9d8668d614404f24a8bf15d803e07e2ff6debd4", "testharness" ], "gamepad/timestamp-manual.html": [ @@ -582218,8 +585346,8 @@ "0b89e14eadd32fd23202977471c9913f5213dce4", "support" ], - "generic-sensor/idlharness.html": [ - "f968f5a81d25796f79cd22987810ec6832fa120d", + "generic-sensor/idlharness.https.html": [ + "fdb816b5036bae53a60672d3b6910ddb06dd9d51", "testharness" ], "geolocation-API/OWNERS": [ @@ -582299,7 +585427,7 @@ "support" ], "gyroscope/idlharness.https.html": [ - "69699b3b533c8fd4047a3b5e80f95f8cdc82d24d", + "2aedb883f553cae594afb7c5ef59222c0ee3fefb", "testharness" ], "hr-time/OWNERS": [ @@ -582327,15 +585455,15 @@ "testharness" ], "hr-time/timeOrigin.html": [ - "f07da265bb9d1036589ff116b14ea1370abc4194", + "f2258619e00dd12ee38958bf251c72acab60baa2", "testharness" ], "hr-time/timing-attack.html": [ "1d3d88e71fb886374b50c6dc2c1141a80c8c0a06", "testharness" ], - "hr-time/window-worker-time-origin.html": [ - "556079c9d81c55df55c69738384991d31cad2c77", + "hr-time/window-worker-timeOrigin.window.js": [ + "51267d21c761c3ccaee34bc4d5e533e69d739bc5", "testharness" ], "html-imports/OWNERS": [ @@ -582595,7 +585723,7 @@ "support" ], "html/OWNERS": [ - "0a32a8fdeb92636cbd5e751c4bd44458d7274abf", + "29a1a9d837b3231ac7d1663c0ea8e41e8ce9d525", "support" ], "html/README.md": [ @@ -584659,7 +587787,7 @@ "support" ], "html/browsers/the-window-object/named-access-on-the-window-object/named-objects.html": [ - "b4aed70f7618d5d5e29350f19b4c1d45c045f9cb", + "8738c9e53e1c71b6b15ea0c3f2f0f9b0e4522144", "testharness" ], "html/browsers/the-window-object/named-access-on-the-window-object/test.html": [ @@ -585251,7 +588379,7 @@ "testharness" ], "html/dom/documents/dom-tree-accessors/nameditem-03.html": [ - "6692f5b790960145e7a94b25227682237cbb4862", + "0887edcb756daa6447497510ea7c8a3967ae8c2f", "testharness" ], "html/dom/documents/dom-tree-accessors/nameditem-04.html": [ @@ -585271,7 +588399,7 @@ "testharness" ], "html/dom/documents/dom-tree-accessors/nameditem-08.html": [ - "5ae6d9718f6568cf9c42a7ebdf2cbae767c68852", + "ffb7fbed3b9e0f2a73907358234136d5a62b6943", "testharness" ], "html/dom/documents/loading-xml-documents/.gitkeep": [ @@ -586690,12 +589818,16 @@ "a4f99553c0cdf1c1efab08c85b9e3211b42d5412", "support" ], + "html/dom/historical.html": [ + "75fd4e5379337af2ebcb3cd7d62dbf3d726c4036", + "testharness" + ], "html/dom/interactions-with-xpath-and-xslt/.gitkeep": [ "da39a3ee5e6b4b0d3255bfef95601890afd80709", "support" ], "html/dom/interfaces.html": [ - "4c0db96824033d94b98123954254930fb742d7e3", + "54e9b9fdae41f484fbd84ebdb03514c147d216bf", "testharness" ], "html/dom/interfaces.worker.js": [ @@ -590891,7 +594023,7 @@ "testharness" ], "html/infrastructure/common-dom-interfaces/collections/htmlallcollection.html": [ - "eeb932d95184b11190af6a2e8be2adccc5a84601", + "5d3dd32c513cf4b04260c4acff4f1406bb168a07", "testharness" ], "html/infrastructure/common-dom-interfaces/collections/htmlformcontrolscollection.html": [ @@ -592562,6 +595694,14 @@ "cdcd861169c580a2ddae38b61cbbcd6efe1c5064", "testharness" ], + "html/semantics/document-metadata/the-style-element/style_type.html": [ + "bbef3695e7fd32fb92abd9d1d6a59a9380d0d361", + "testharness" + ], + "html/semantics/document-metadata/the-style-element/style_type_change.html": [ + "867064126601c92dce8a61d6f3e8237153a0a583", + "testharness" + ], "html/semantics/document-metadata/the-title-element/.gitkeep": [ "da39a3ee5e6b4b0d3255bfef95601890afd80709", "support" @@ -593119,7 +596259,7 @@ "testharness" ], "html/semantics/embedded-content/media-elements/mime-types/canPlayType.html": [ - "3ea30a20d18f5c8839ccfaa183627702db38ed4b", + "960d7daccac83f48f553edb4d32f1b5919f67dcc", "testharness" ], "html/semantics/embedded-content/media-elements/networkState_during_loadstart.html": [ @@ -593446,6 +596586,10 @@ "f7576ff332cac04a4e2b663b6fdd40aef154b6b5", "testharness" ], + "html/semantics/embedded-content/media-elements/track/track-element/track-cue-order.html": [ + "eeab6b02e728aea21878cf72664929766be057b7", + "testharness" + ], "html/semantics/embedded-content/media-elements/track/track-element/track-data-url.html": [ "e9c8849350512b1247543939ee0e529947e47c2d", "testharness" @@ -595935,7 +599079,7 @@ "testharness" ], "html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html": [ - "10dd870ad796a59bef26d18917bf91374f475f93", + "c00ac5b6d038b45b1a7cfbef94a4527757fa74e6", "testharness" ], "html/semantics/interactive-elements/the-menu-element/.gitkeep": [ @@ -595955,7 +599099,7 @@ "testharness" ], "html/semantics/interfaces.js": [ - "b63c7402601bbf801f65dff9bef38797cdaf9eae", + "a9ac58b56b1a0f69f4e47365cb0ada55f31958e3", "support" ], "html/semantics/links/.gitkeep": [ @@ -596758,18 +599902,6 @@ "458423e7b86ccaa89ffc0dc9f2c6b5b5bcea02cb", "testharness" ], - "html/semantics/scripting-1/the-script-element/script-language-type.html": [ - "6f8f694290991475df6df99996e8f39b610b58c5", - "testharness" - ], - "html/semantics/scripting-1/the-script-element/script-languages-01.html": [ - "586f48daa539249c83dc93688dc7920e94326825", - "testharness" - ], - "html/semantics/scripting-1/the-script-element/script-languages-02.html": [ - "9d287c52a5b9b3a392ba78c285a41861a2cfff24", - "testharness" - ], "html/semantics/scripting-1/the-script-element/script-noembed-noframes-iframe.xhtml": [ "9023542ad8ef8efb989675d9afa189289aa77f85", "testharness" @@ -596822,6 +599954,18 @@ "773d82ec904b3bc9565fb94813af228e7833cf87", "testharness" ], + "html/semantics/scripting-1/the-script-element/script-type-and-language-empty.html": [ + "c26ddd7838ccbb36cc2216ba8236ea6ebf67e2c5", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/script-type-and-language-js.html": [ + "2ff44c86f93aef83c837fb9cb4fc2116bbf60e12", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/script-type-and-language-with-params.html": [ + "7520d0e13774dc4243e902f0aceae943893c52cd", + "testharness" + ], "html/semantics/scripting-1/the-script-element/scripting-enabled.html": [ "4a1324770dec284d6a8432a1ae94ff27f4fe5322", "testharness" @@ -597102,6 +600246,10 @@ "6be1e4a40962036b4fc0a300e8b13a082b391713", "manual" ], + "html/semantics/selectors/pseudo-classes/checked-type-change.html": [ + "3ac87c477fd16cfc944b19c7e843fe0a61c84c20", + "testharness" + ], "html/semantics/selectors/pseudo-classes/checked.html": [ "b5790716eff3f91ac04f78e669bfacac4ede5642", "testharness" @@ -597142,10 +600290,18 @@ "e20ded9d68245b887923a0cc14f6d46bc34fd809", "testharness" ], + "html/semantics/selectors/pseudo-classes/indeterminate-type-change.html": [ + "490ebd95eca88e917baf5550015af18ab8de5c34", + "testharness" + ], "html/semantics/selectors/pseudo-classes/indeterminate.html": [ "d4a60c5c7e3a3fbf16e87d347856b27a731a8820", "testharness" ], + "html/semantics/selectors/pseudo-classes/inrange-outofrange-type-change.html": [ + "ef8776ed618df10937a704b154a1adfea351ac76", + "testharness" + ], "html/semantics/selectors/pseudo-classes/inrange-outofrange.html": [ "8bcc8d0d7997c2bd55d66e816741ec4a9651dec7", "testharness" @@ -598443,7 +601599,7 @@ "testharness" ], "html/webappapis/idle-callbacks/callback-suspended.html": [ - "f3f9eeda9e2d47825c77eaf278be6e976a8e1715", + "8dc29d1e08fe94919d019ae84bfb4c997662b287", "testharness" ], "html/webappapis/idle-callbacks/callback-timeout-with-raf.html": [ @@ -598914,44 +602070,20 @@ "2c41fa08c5296f814d286d8b459424c5c488e3e1", "support" ], - "html/webappapis/system-state-and-capabilities/the-navigator-object/content.html": [ - "5a9a9f9452e113cc458fda86528a0240d33bd092", - "testharness" - ], - "html/webappapis/system-state-and-capabilities/the-navigator-object/content/001.xhtml": [ - "421d04eab9a840fbe22b090996e8d145a055449d", - "testharness" - ], - "html/webappapis/system-state-and-capabilities/the-navigator-object/content/002.xhtml": [ - "b3cb232ea7347baada581c3221dfcc0a5fb20aed", - "testharness" - ], - "html/webappapis/system-state-and-capabilities/the-navigator-object/content/003.xhtml": [ - "62feedab0f34fddae585c18ba25dbb1a113a49ec", - "testharness" - ], - "html/webappapis/system-state-and-capabilities/the-navigator-object/content/004.xhtml": [ - "7a32f6ff9f251674430f2133fdf35610b879733d", - "testharness" - ], - "html/webappapis/system-state-and-capabilities/the-navigator-object/content/005.xhtml": [ - "40c238fbc46063b619b079de9c042c5b2f55a3b7", - "testharness" - ], - "html/webappapis/system-state-and-capabilities/the-navigator-object/content/006.xhtml": [ - "a160f3bdac64c538b1f801f5a6f4a067338eb1ad", - "testharness" - ], "html/webappapis/system-state-and-capabilities/the-navigator-object/get-navigatorlanguage-manual.html": [ "d487c6dac121b518886c5f9c3389e54a6238a81f", "manual" ], + "html/webappapis/system-state-and-capabilities/the-navigator-object/historical.window.js": [ + "2a13612466333815c1ee890ff8ef68163ad5fbca", + "testharness" + ], "html/webappapis/system-state-and-capabilities/the-navigator-object/navigator-indexed.html": [ "3a478a2d6f508242244308641a2d57d4eb00798b", "testharness" ], "html/webappapis/system-state-and-capabilities/the-navigator-object/navigator-pluginarray.html": [ - "f1907fd820e2f6a195400a9bca96f3dae45fc308", + "dc5ba1cb0f402f0fb0243bb2fa1b9da0c610341d", "testharness" ], "html/webappapis/system-state-and-capabilities/the-navigator-object/navigator.any.js": [ @@ -598966,30 +602098,6 @@ "9ab91396894612ad2a71643cd5253fcc8572983a", "testharness" ], - "html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/001.xhtml": [ - "d7418838994fc0f6916e89a1b79d2a9c8536d7c7", - "testharness" - ], - "html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/002.xhtml": [ - "3bdec81bc84240cba8f5dbd24b8c6f5ae035f9c0", - "testharness" - ], - "html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/003.xhtml": [ - "02eeb4a40996b0c0fc44da1b14e0ecf3c58b3cd0", - "testharness" - ], - "html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/004.xhtml": [ - "29522f446c7df762eac96c7b7d05d96a49a2558e", - "testharness" - ], - "html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/005.xhtml": [ - "d99c6f077b63017d4a5782b751a6d288b55fd92d", - "testharness" - ], - "html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/006.xhtml": [ - "8efe37cac0d5dd0004bf0743c702eba27690058f", - "testharness" - ], "html/webappapis/the-windoworworkerglobalscope-mixin/Worker_Self_Origin.html": [ "9b895ac9dba41e20e341114eac7ab383cd8b08fb", "testharness" @@ -599291,7 +602399,7 @@ "reftest" ], "innerText/getter-tests.js": [ - "08171e0a781c05d91841e483d7e18c670c82c827", + "e5ec1c1fd4777a1a1c25720047a955ec04c0d014", "support" ], "innerText/getter.html": [ @@ -599314,8 +602422,20 @@ "cd25518dd402033694667ccd1982fd3b85faa412", "testharness" ], - "input-events/input-events-typing-data-manual.html": [ - "196d4a35b474ef3ad25a56a22a58cf421555903f", + "input-events/input-events-cut-paste-manual.html": [ + "442b82811d9fabc1cd4b398ac28cac58d4f2f78b", + "manual" + ], + "input-events/input-events-exec-command.html": [ + "233270068ad21c786fed0603a522d286c2419d56", + "testharness" + ], + "input-events/input-events-get-target-ranges-manual.html": [ + "1c8c1e8d43593ac85807f22fc221d72de0d792a2", + "manual" + ], + "input-events/input-events-typing-manual.html": [ + "f585014db144083ee2f70f6fd65f78bf2e289093", "manual" ], "interfaces/OWNERS": [ @@ -599326,8 +602446,12 @@ "5af2846c7f9ff93f2f4f13780d0356cdac6a0d4f", "support" ], + "interfaces/cssom-view.idl": [ + "1bcfadd098734fc82c0cf791d4c0d35d69423ce2", + "support" + ], "interfaces/cssom.idl": [ - "bb17bbe93776dbeb33f061a7a90889e922e3138e", + "fbd624297dbfaa5e0fc2144b701c38eda41537ac", "support" ], "interfaces/dedicated-workers.idl": [ @@ -599343,17 +602467,25 @@ "support" ], "interfaces/geometry.idl": [ - "07228bf101502d80f045a61ce046394b5932011e", + "dea55d151bd19d342f9b28bb2f11e5108ab970ff", "support" ], "interfaces/html.idl": [ - "87f655b3ce658da0ad146ccfa5d24b1232ad83f8", + "5e6afa54c3b4c41f31e24e6fbb55f0e77259c09f", "support" ], "interfaces/mediacapture-main.idl": [ "3d59aebd6219a0312ade8c543bb389030d670d82", "support" ], + "interfaces/payment-handler.idl": [ + "d1d50028218427ecb20ddd67061c9726fddcce3a", + "support" + ], + "interfaces/payment-request.idl": [ + "3a5f9a4e768409532916c751e7169c35ec0e23a8", + "support" + ], "interfaces/remoteplayback.idl": [ "f7c100f4275f2e32fbca3bb8d9c4900df879ffe4", "support" @@ -599586,6 +602718,10 @@ "6f8091035f4aa18131c548a81cbe80ba328169c9", "testharness" ], + "longtask-timing/OWNERS": [ + "30a9c29ba53bac131c0cca801c01dddb4779824e", + "support" + ], "longtask-timing/longtask-attributes.html": [ "247359327818f59871be00d22942f6ecde5281a7", "testharness" @@ -599651,7 +602787,7 @@ "support" ], "magnetometer/idlharness.https.html": [ - "caa1de6ebcd32508ea4e61a7412f6c165699cc58", + "a72e1c3443feae9bf9d19385c0ba96e66b97f20c", "testharness" ], "mathml/OWNERS": [ @@ -600663,31 +603799,31 @@ "testharness" ], "mediacapture-streams/GUM-api.https.html": [ - "8df77e469f423b7c7e84ddc6924e01d63b1ffc20", + "ea80e175f08b16600df620d6a46a89dc571ea4f8", "testharness" ], "mediacapture-streams/GUM-deny.https.html": [ - "ff6cf94acac74d1a650d6c2515b762fa483b110f", + "58bc6b9e27d4c7036b188921598d9b5213f0b8db", "testharness" ], "mediacapture-streams/GUM-empty-option-param.https.html": [ - "64d32a60ba62577a02f7314db5c1e43d3b0d51a9", + "274f1a871405b0efc068c718dd22624ea0bbb5a2", "testharness" ], "mediacapture-streams/GUM-impossible-constraint.https.html": [ - "d0f93cff7289917b298a33691204509188bb633d", + "afa2a8a631915f851f3c238476a361aa16865af6", "testharness" ], "mediacapture-streams/GUM-optional-constraint.https.html": [ - "9697e652b353ffbb8f1ef31038b0826a7c866198", + "425f35ad458fe835cbaeb66acdde95452519bdd0", "testharness" ], "mediacapture-streams/GUM-trivial-constraint.https.html": [ - "46175d553affeaa8c801359261816430f8b1fdb8", + "89758369578246d620e41d53a75ae0b885d589a1", "testharness" ], "mediacapture-streams/GUM-unknownkey-option-param.https.html": [ - "bfd825c8fb46797d043d57d70689a766fa557bd3", + "cfa1c007fadcdef21b043185903bfb0696b7b44a", "testharness" ], "mediacapture-streams/MediaDevices-IDL-all.html": [ @@ -600707,55 +603843,59 @@ "testharness" ], "mediacapture-streams/MediaStream-MediaElement-preload-none.https.html": [ - "0f2bbd7581f2f51376b7fada199b4d436f411dba", + "374f9942ebd05d866340981469ceb28bddf83727", "testharness" ], "mediacapture-streams/MediaStream-MediaElement-srcObject.https.html": [ - "f90dade04a03631f9c56333f621fd6379eb48998", + "f2958c6965640ff9e9dc2c038a593bdd41c6759c", "testharness" ], "mediacapture-streams/MediaStream-add-audio-track.https.html": [ - "eecbedef2bbb1281fd07e12d06f53455a8f87c88", + "1bcb7de8f2c0f85fed091dfcbb102d40264f387f", "testharness" ], "mediacapture-streams/MediaStream-audio-only.https.html": [ - "6bf048248ed199eb84d9ee815dc64d19d173291a", + "bc5a7f4380a0527fdc44c41b765e07df028d0dba", + "testharness" + ], + "mediacapture-streams/MediaStream-default-feature-policy.https.sub.html": [ + "955b6cfddae2c8961abfba52ffe9192224500d0a", "testharness" ], "mediacapture-streams/MediaStream-finished-add.https.html": [ - "18cb89d609c81cd00870f58682b03c89fb74afbf", + "9cd9b2b53c1353b46bf7efc9e8d0e0c215107dee", "testharness" ], "mediacapture-streams/MediaStream-gettrackid.https.html": [ - "1d1d2a92be009863a17487d211523f4309ee8e4b", + "ecdf2ad3e658c08dabff3e0d5860e4d86f434f0d", "testharness" ], "mediacapture-streams/MediaStream-id-manual.https.html": [ - "c5ec056499818621f5948684da4715f5f14be124", + "464a4e5b40a4aabf1302e24d51222b0374ff4c8a", "manual" ], "mediacapture-streams/MediaStream-idl.https.html": [ - "27d7d95e8d52de68f49af7ccc7c9cb441413ca0a", + "2cf280abdf5598a21000a26365f243fcc7ffdb6b", "testharness" ], "mediacapture-streams/MediaStream-removetrack.https.html": [ - "84eeb7a7b9499e44f40e8a650373fcb86e502abe", + "28bdf571b37412078199e127ecf3a9423770f0ce", "testharness" ], "mediacapture-streams/MediaStream-video-only.https.html": [ - "5f3e3390b52c567894cbcdf610489fc5b17ec94d", + "831fba0fe66ff11b5ca91784a0f91d863bd8a348", "testharness" ], "mediacapture-streams/MediaStreamTrack-MediaElement-disabled-audio-is-silence.https.html": [ - "48620661c2947245554e227d559d551a93787ae2", + "37c655ef9b01d3e9d3d9512c966bd24adf870245", "testharness" ], "mediacapture-streams/MediaStreamTrack-MediaElement-disabled-video-is-black.https.html": [ - "ff30dfac08aae859ad469c15fd7e5469b830d3a9", + "6427b6bea51c488ca15ac02b3cbecb776c294c0c", "testharness" ], "mediacapture-streams/MediaStreamTrack-end-manual.https.html": [ - "e5550adb1a9ce03ba672271aa1cdcec7ffde27d6", + "6511203b417168722d1e05d90e58364ebce145ea", "manual" ], "mediacapture-streams/MediaStreamTrack-getSettings.https.html": [ @@ -600763,11 +603903,11 @@ "testharness" ], "mediacapture-streams/MediaStreamTrack-id.https.html": [ - "ea67395aec0f0c619ba7b94eb4bd26b317a945d3", + "46327fba3cf783d6506634b837f8308417f954cd", "testharness" ], "mediacapture-streams/MediaStreamTrack-init.https.html": [ - "5dec952b5ea64b644a7fd90ef41d2da95388167b", + "3cb9f842f12185de5f1696a8d0cdc2fe102c246a", "testharness" ], "mediacapture-streams/MediaStreamTrackEvent-constructor.https.html": [ @@ -600798,90 +603938,6 @@ "70a1f9e81faa3dbbe320a71a008e4594a29878a8", "testharness" ], - "microdata/conformance-requirements/.gitkeep": [ - "da39a3ee5e6b4b0d3255bfef95601890afd80709", - "support" - ], - "microdata/converting-html-to-other-formats/.gitkeep": [ - "da39a3ee5e6b4b0d3255bfef95601890afd80709", - "support" - ], - "microdata/converting-html-to-other-formats/json/.gitkeep": [ - "da39a3ee5e6b4b0d3255bfef95601890afd80709", - "support" - ], - "microdata/dependencies/.gitkeep": [ - "da39a3ee5e6b4b0d3255bfef95601890afd80709", - "support" - ], - "microdata/encoding-microdata/.gitkeep": [ - "da39a3ee5e6b4b0d3255bfef95601890afd80709", - "support" - ], - "microdata/encoding-microdata/associating-names-with-items/.gitkeep": [ - "da39a3ee5e6b4b0d3255bfef95601890afd80709", - "support" - ], - "microdata/encoding-microdata/items/.gitkeep": [ - "da39a3ee5e6b4b0d3255bfef95601890afd80709", - "support" - ], - "microdata/encoding-microdata/microdata-and-other-namespaces/.gitkeep": [ - "da39a3ee5e6b4b0d3255bfef95601890afd80709", - "support" - ], - "microdata/encoding-microdata/names-the-itemprop-attribute/.gitkeep": [ - "da39a3ee5e6b4b0d3255bfef95601890afd80709", - "support" - ], - "microdata/encoding-microdata/names-the-itemprop-attribute/original-id.json": [ - "cc9626d22d5e06bb2397b813eff5e125d0fe7034", - "support" - ], - "microdata/encoding-microdata/the-microdata-model/.gitkeep": [ - "da39a3ee5e6b4b0d3255bfef95601890afd80709", - "support" - ], - "microdata/encoding-microdata/values/.gitkeep": [ - "da39a3ee5e6b4b0d3255bfef95601890afd80709", - "support" - ], - "microdata/iana/.gitkeep": [ - "da39a3ee5e6b4b0d3255bfef95601890afd80709", - "support" - ], - "microdata/introduction/.gitkeep": [ - "da39a3ee5e6b4b0d3255bfef95601890afd80709", - "support" - ], - "microdata/introduction/global-identifiers-for-items/.gitkeep": [ - "da39a3ee5e6b4b0d3255bfef95601890afd80709", - "support" - ], - "microdata/introduction/overview/.gitkeep": [ - "da39a3ee5e6b4b0d3255bfef95601890afd80709", - "support" - ], - "microdata/introduction/selecting-names-when-defining-vocabularies/.gitkeep": [ - "da39a3ee5e6b4b0d3255bfef95601890afd80709", - "support" - ], - "microdata/introduction/the-basic-syntax/.gitkeep": [ - "da39a3ee5e6b4b0d3255bfef95601890afd80709", - "support" - ], - "microdata/introduction/typed-items/.gitkeep": [ - "da39a3ee5e6b4b0d3255bfef95601890afd80709", - "support" - ], - "microdata/introduction/using-the-microdata-dom-api/.gitkeep": [ - "da39a3ee5e6b4b0d3255bfef95601890afd80709", - "support" - ], - "microdata/terminology/.gitkeep": [ - "da39a3ee5e6b4b0d3255bfef95601890afd80709", - "support" - ], "mixed-content/OWNERS": [ "167112f19752c9c180831820b6e348427606b63b", "support" @@ -610591,7 +613647,7 @@ "manual" ], "orientation-sensor/idlharness.https.html": [ - "71100177bcb537c18f98edfd7bf04d420714a78b", + "9301519eebff3db962bbeb148bf3dd3b1e305a23", "testharness" ], "page-visibility/OWNERS": [ @@ -610666,6 +613722,58 @@ "5695dc622d2bc89c33c10fd73aac173c87cc7ad2", "testharness" ], + "paint-timing/OWNERS": [ + "2b1094a1e18f3321cc7a3740cae2d5b2d5f85772", + "support" + ], + "paint-timing/basetest.html": [ + "f34f6729a82f6efc16dc4d62c95f706688d0456b", + "testharness" + ], + "paint-timing/first-contentful-bg-image.html": [ + "6ee710d78e5f0f174ba00fea97c49d05641ed514", + "testharness" + ], + "paint-timing/first-contentful-canvas.html": [ + "b179da1518178287879fa36c4adbd3c5dc291e92", + "testharness" + ], + "paint-timing/first-contentful-image.html": [ + "d557aed2ab81949a2916b764dea207b50bab6278", + "testharness" + ], + "paint-timing/first-contentful-paint.html": [ + "7cf0881d8a247bc85e8c8ad1be131b84dc9b56bd", + "testharness" + ], + "paint-timing/first-contentful-svg.html": [ + "41436ee277f1882235b668afb7144f14491c6a5c", + "testharness" + ], + "paint-timing/first-paint-bg-color.html": [ + "bf6555a04e08636abb0f25c0948d8e7e5a34eb62", + "testharness" + ], + "paint-timing/first-paint-only.html": [ + "826a97fb19bfcad80b1957251c3d57e995e78990", + "testharness" + ], + "paint-timing/resources/circle.svg": [ + "81e7e9fd9b897bd8a62959368a0b7e7f2c2533cf", + "support" + ], + "paint-timing/resources/circles.png": [ + "dda93e587da353e712ff9bc671ebcafa8dea222f", + "support" + ], + "payment-handler/OWNERS": [ + "c5e5d0fd086bbe946f99aa8836785c81a2bccb3d", + "support" + ], + "payment-handler/interfaces.https.any.js": [ + "a20a5909c9a94120049e45e543cc623b875ea7f5", + "testharness" + ], "payment-method-basic-card/OWNERS": [ "78f6ac38657ede306b767f1156cebd44bebbfb8e", "support" @@ -610679,9 +613787,29 @@ "support" ], "payment-request/OWNERS": [ - "c9d1edd21d99c84fbabeb0f05c766850539b618f", + "a2937112040fe45b12ba87b6fb75bd9be6aab6ad", "support" ], + "payment-request/PaymentRequestUpdateEvent/constructor.http.html": [ + "017f1f1aca43171083833ddb27ff66e39902e85d", + "testharness" + ], + "payment-request/PaymentRequestUpdateEvent/constructor.https.html": [ + "91210fe058e95195ff5f999a1540ce0f2914f552", + "testharness" + ], + "payment-request/PaymentRequestUpdateEvent/updateWith-duplicate-shipping-options-manual.https.html": [ + "c5850ae1bb14090eef0fb80b7ecbadafb048394f", + "manual" + ], + "payment-request/PaymentRequestUpdateEvent/updatewith-method.https.html": [ + "08e63c4605bfa4838984aff13a82458ca2a6bdf8", + "testharness" + ], + "payment-request/algorithms-manual.https.html": [ + "a3d20d112af7ff8d18ddf0b9cb69d121a015f374", + "manual" + ], "payment-request/allowpaymentrequest/active-document-cross-origin.https.sub.html": [ "e96ac343e8533e8e90d3cbd4113a902b9e93e0bc", "testharness" @@ -610719,53 +613847,29 @@ "testharness" ], "payment-request/allowpaymentrequest/removing-allowpaymentrequest.https.sub.html": [ - "41265b7c3d0e8d4c8f462f957627139f8aa5a3a3", + "3aa81e7a578d5250854a14a617140111969570f6", "testharness" ], "payment-request/allowpaymentrequest/setting-allowpaymentrequest-timing.https.sub.html": [ - "5eb37c0c6ad39187c4505a8cbe113c4b68e51c92", + "d92b607f67ce478d505544bb43cd015b4bc89987", "testharness" ], "payment-request/allowpaymentrequest/setting-allowpaymentrequest.https.sub.html": [ - "e5be539c1b0ca1c571df1fc979fde5bf6482b43d", + "6e4028440fff617d6a0e9abb06625891eb53b28a", "testharness" ], + "payment-request/change-shipping-option-manual.https.html": [ + "46bc8b2f5512e7d40e46c4fb255f82def0e359d1", + "manual" + ], "payment-request/historical.https.html": [ "6695acdcd1647fdd37702a7f63658dcd50f25596", "testharness" ], "payment-request/interfaces.https.html": [ - "e531c0ceda2fa798e5e6df3c7131e6b80f342884", + "87fb3213b7442ceb3f096d88b6bae3074f96d29c", "testharness" ], - "payment-request/payment-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html": [ - "8595732f7794f10107ef234fe6e37cc12c80eeaa", - "testharness" - ], - "payment-request/payment-allowed-by-feature-policy-attribute.https.sub.html": [ - "7f00979fb8e60e938bfa816786705c95e611d2f3", - "testharness" - ], - "payment-request/payment-allowed-by-feature-policy.https.sub.html": [ - "762f4d517150b10438fca8571204caae79e00278", - "testharness" - ], - "payment-request/payment-allowed-by-feature-policy.https.sub.html.headers": [ - "038c90f26cb5c16047c294aa35a0b0251324dbc6", - "support" - ], - "payment-request/payment-default-feature-policy.https.sub.html": [ - "6980a706cca09eaeb2d63d6780a5e0a89ff52fa5", - "testharness" - ], - "payment-request/payment-disabled-by-feature-policy.https.sub.html": [ - "942104579b3710532d35bab01f9f387d5ed04fe0", - "testharness" - ], - "payment-request/payment-disabled-by-feature-policy.https.sub.html.headers": [ - "09f612159dc367bad5febc8e0a724f0a284517d5", - "support" - ], "payment-request/payment-request-abort-method.https.html": [ "5c1ddf4e9e2a896036912983462f51f8ff6aa82b", "testharness" @@ -610779,11 +613883,11 @@ "testharness" ], "payment-request/payment-request-constructor.https.html": [ - "3ecb26e134b45fd0f0238c8552d096ea5e154793", + "34ee1140e70e997f01beaab57885ec980e273f4c", "testharness" ], "payment-request/payment-request-ctor-currency-code-checks.https.html": [ - "29a226caa4f91f0b92f4ed8bd99d40e241884107", + "cee3a8a8b9d25b5a44445a416b1bc9be2b341a04", "testharness" ], "payment-request/payment-request-ctor-pmi-handling.https.html": [ @@ -610791,39 +613895,35 @@ "testharness" ], "payment-request/payment-request-id-attribute.https.html": [ - "0c732487dba598c8ac72a349841ed2cae265a3a9", + "9a8a1ffc3cd7ba3c29380c4a9962bd17f35087c3", "testharness" ], "payment-request/payment-request-onshippingaddresschange-attribute.https.html": [ - "c716788baf4b5e74c5bd5adbbd9f95d9ca98ce12", + "c9e3679232a83abe6a9eefcb28e3387d2c7810e5", "testharness" ], "payment-request/payment-request-onshippingoptionchange-attribute.https.html": [ - "fc4772725ab7cab838d0d7bb97d0febeef8d093c", + "9488e832b86b582310b0f46a68f9cf420b473e98", "testharness" ], "payment-request/payment-request-response-id.html": [ "8feda1d3b4c071014d4c8c7898598c7d23086216", "support" ], + "payment-request/payment-request-shippingAddress-attribute.https.html": [ + "ce33b78031644cb508c6fe148c21c37128b422c0", + "testharness" + ], + "payment-request/payment-request-shippingOption-attribute.https.html": [ + "4dbafc96c5effd3b697026aa9a29095e8f4a9296", + "testharness" + ], "payment-request/payment-request-shippingType-attribute.https.html": [ - "b6c449dfe568dea727a18e10428e1b8e0186f8d4", + "27ecc7e10e50bf2df07f84a15972c3b913ebf32f", "testharness" ], "payment-request/payment-request-show-method.https.html": [ - "e30f506c253ada159d343ef995f8a062c42677c5", - "testharness" - ], - "payment-request/payment-request-update-event-constructor.http.html": [ - "017f1f1aca43171083833ddb27ff66e39902e85d", - "testharness" - ], - "payment-request/payment-request-update-event-constructor.https.html": [ - "2a7df6827204f3dd03f5d4a3755f6ed96cdbbb0e", - "testharness" - ], - "payment-request/payment-request-update-event-updatewith-method.https.html": [ - "08e63c4605bfa4838984aff13a82458ca2a6bdf8", + "1e4c792de7013839c713555a0a295bcbb9597094", "testharness" ], "payment-request/payment-response/complete-method-manual.https.html": [ @@ -610831,7 +613931,7 @@ "manual" ], "payment-request/payment-response/helpers.js": [ - "d0824649acba162d9cc221f1b333cae915bc7828", + "6fa16e6e1a3a822842f703d2136afa65c90710d3", "support" ], "payment-request/payment-response/methodName-attribute-manual.https.html": [ @@ -610855,17 +613955,37 @@ "manual" ], "payment-request/payment-response/shippingAddress-attribute-manual.https.html": [ - "eb4f106ac7d3edb71dc3b7dce43d8fd1fe11530c", + "52d7dafc3e6eeb3ec8ad486825ebad8f3db6c79f", "manual" ], "payment-request/payment-response/shippingOption-attribute-manual.https.html": [ "cb2d1d6dfb668a40bb0822ce2a097d327bf4dfe7", "manual" ], + "payment-request/rejects_if_not_active.https.html": [ + "b7defcf07abde6a18f0012c21bee2e00a5669cd0", + "testharness" + ], + "payment-request/resources/page1.html": [ + "9bd62a5279e60dc30b39c449f4aefbe30f9db336", + "support" + ], + "payment-request/resources/page2.html": [ + "9bd62a5279e60dc30b39c449f4aefbe30f9db336", + "support" + ], + "payment-request/shipping-address-changed-manual.https.html": [ + "a1784f0be2a7861480f663ac789eed67e08ddce8", + "manual" + ], "payment-request/updateWith-method-pmi-handling-manual.https.html": [ "5e254b412285a6154004aeff98357c6aa55e62c6", "manual" ], + "payment-request/user-abort-algorithm-manual.https.html": [ + "0b93033f26abeec7adc7e9488afe26a6d6fc2df7", + "manual" + ], "performance-timeline/OWNERS": [ "b82f9756b15ef3ea45fb250e304031d9ceaee9c7", "support" @@ -610911,7 +614031,7 @@ "testharness" ], "performance-timeline/po-observe.html": [ - "0076397128975660e1f66f8d23e6b6945d2a804e", + "2486507d5925b6429899ddf4db386990d7ae560f", "testharness" ], "performance-timeline/po-resource.html": [ @@ -611675,7 +614795,7 @@ "support" ], "presentation-api/receiving-ua/support/PresentationConnection_onmessage_receiving-ua.html": [ - "7d7b0bb899d0ab8415c1705f5bee2ca7a9866561", + "da347fdf1c5c44a5974107678caab349add80c2f", "support" ], "presentation-api/receiving-ua/support/PresentationConnection_send_receiving-ua.html": [ @@ -611767,7 +614887,7 @@ "testharness" ], "quirks-mode/OWNERS": [ - "3a52efa37cb05c353bb8ce78146c42db6a238b74", + "adc83b19e793491b1c6ea0fd8b46cd9f32e592fc", "support" ], "quirks-mode/active-and-hover-manual.html": [ @@ -620355,7 +623475,7 @@ "testharness" ], "service-workers/service-worker/fetch-frame-resource.https.html": [ - "77709ff94cfaeec0b01e157714244d1b568c6b18", + "0e0cf1dbe113b8403d6f1de0462ca8dd9641b3c4", "testharness" ], "service-workers/service-worker/fetch-header-visibility.https.html": [ @@ -620983,7 +624103,7 @@ "support" ], "service-workers/service-worker/resources/extendable-event-async-waituntil.js": [ - "6974e3550cb50b5789c10681abf0a1174bc1a3b8", + "1c4145015d38589beea2e5a6850bb4f97f773e0a", "support" ], "service-workers/service-worker/resources/extendable-event-waituntil.js": [ @@ -621534,10 +624654,6 @@ "9bd12c8a1819a2d2c00e49df61972307b63a1a73", "support" ], - "service-workers/service-worker/resources/registration-tests.js": [ - "bdb31335f8d15de455108e0186183f1acdaef41e", - "support" - ], "service-workers/service-worker/resources/registration-worker.js": [ "048f75fc0d193765d6264e7be132c29e56dd7bcb", "support" @@ -621607,7 +624723,7 @@ "support" ], "service-workers/service-worker/resources/skip-waiting-installed-worker.js": [ - "6c6338c7aad6dfc6ef45458fb40441a04820aa6d", + "96561dc391ccdb01200c468d0af36efa0f485705", "support" ], "service-workers/service-worker/resources/skip-waiting-worker.js": [ @@ -622746,6 +625862,26 @@ "005490d4fc62797e432b03c33c349d9136815625", "testharness" ], + "streams/readable-byte-streams/brand-checks.dedicatedworker.html": [ + "b0f32b03a352ef7ac1940eda90414a5f65980194", + "testharness" + ], + "streams/readable-byte-streams/brand-checks.html": [ + "317e5c5cc2eedcc6902e8cc44567ea59e7f173ac", + "testharness" + ], + "streams/readable-byte-streams/brand-checks.js": [ + "15d95be48677eae31eece31a54d2d63fdf64c1bc", + "support" + ], + "streams/readable-byte-streams/brand-checks.serviceworker.https.html": [ + "c8279e28f5cd80d454d884154ae883a8c965705f", + "testharness" + ], + "streams/readable-byte-streams/brand-checks.sharedworker.html": [ + "6f3911baf77e26af2d7e7d7472caae4df6d5a27e", + "testharness" + ], "streams/readable-byte-streams/general.dedicatedworker.html": [ "8583d80450b090c16ed0795170340d040449bbc1", "testharness" @@ -623019,7 +626155,7 @@ "support" ], "streams/resources/test-utils.js": [ - "a9f47ed7902a34cdd1ad34e422cd63b7bad58ee7", + "a05a620307acb1e7cadba523b8a3c6d2de7e1748", "support" ], "streams/writable-streams/aborting.dedicatedworker.html": [ @@ -625903,7 +629039,7 @@ "testharness" ], "uievents/OWNERS": [ - "0826698a2b0359d4b9201d5e7b2c9ceadfcf8ca5", + "d9038d2dcd0e077cfa7dbab516f2a8d74de2986d", "support" ], "uievents/README.md": [ @@ -626335,7 +629471,7 @@ "testharness" ], "url/OWNERS": [ - "b5b8607bc77103038bb7712364c150c072a7b4aa", + "e41e711c143c9d39073b5cec75224014fab87e9a", "support" ], "url/README.md": [ @@ -626451,7 +629587,7 @@ "testharness" ], "url/urltestdata.json": [ - "0d888ff45fc4575ac193410701c08f05e58a5364", + "d2b5d10aa9151eff2b6aa31932cd8adccd5836ba", "support" ], "user-timing/OWNERS": [ @@ -626598,6 +629734,10 @@ "f6ae98a534bfc2d0b57ef11f8f1ebb3d72629c3c", "manual" ], + "viewport/viewport-attribute-event-handlers-manual.html": [ + "09901d9056f2e31f630becdd07f800e00496700a", + "manual" + ], "viewport/viewport-dimensions-custom-scrollbars-manual.html": [ "ccef0829da2e4ebcad983235f97a6f3f767a0f51", "manual" @@ -627563,7 +630703,7 @@ "support" ], "wai-aria/tools/make_tests.pl": [ - "0b85da0135983b2f69b881fab53d18b56c0033ff", + "684cc354d423a16d5de60114f01810cd76ad620b", "support" ], "wai-aria/tree_orientation_horizontal-manual.html": [ @@ -628527,7 +631667,7 @@ "support" ], "webdriver/tests/state/get_element_attribute.py": [ - "7d531acbe34c1f48f519158f813c5bce88b33259", + "1e25aaf5c3ab4c24130566d7823830a11a86393d", "wdspec" ], "webdriver/tests/state/get_element_property.py": [ @@ -628563,7 +631703,7 @@ "support" ], "webdriver/tests/support/fixtures.py": [ - "aae800a366f9d7a53afb0bae99bde204da63591a", + "ed33ffdd2084ba3c65d82ff7ce7996d45ba98ce5", "support" ], "webdriver/tests/support/http_request.py": [ @@ -638415,7 +641555,7 @@ "support" ], "webrtc/RTCConfiguration-iceCandidatePoolSize.html": [ - "7816790d82628acb7cf04e0a046046884c1207e7", + "6b55bd01a1422f2315cae765a7d539bf81151c1f", "testharness" ], "webrtc/RTCConfiguration-iceServers.html": [ @@ -638499,7 +641639,7 @@ "testharness" ], "webrtc/RTCPeerConnection-createAnswer.html": [ - "7811d3d2100fb58d7ab3ac441a626687c0126fd0", + "d70701dac44c536f793b124c0b1f86e7a08b2fd5", "testharness" ], "webrtc/RTCPeerConnection-createDataChannel.html": [ @@ -638531,7 +641671,7 @@ "testharness" ], "webrtc/RTCPeerConnection-helper.js": [ - "a89f8545bb5a5e832d4efa9674abbf55551344b2", + "e3b2656366be168b5f2e3cde9461a4e69a51c9ef", "support" ], "webrtc/RTCPeerConnection-iceConnectionState.html": [ @@ -638571,43 +641711,43 @@ "testharness" ], "webrtc/RTCPeerConnection-setLocalDescription-answer.html": [ - "61ed2df93379695ab2af6a726512bfd6700cd027", + "e215aa042c67a23ae776b83d662a035a22e03810", "testharness" ], "webrtc/RTCPeerConnection-setLocalDescription-offer.html": [ - "093c44489deb0541c19d8f90a024e91285d0989a", + "9f30ee4801fbcd574d90c3f15a733c448f148649", "testharness" ], "webrtc/RTCPeerConnection-setLocalDescription-pranswer.html": [ - "403b01796ca156e3a3157fbc0a64929348749a6e", + "9653d2176c51b638b0c03dec363d2a2fb8386281", "testharness" ], "webrtc/RTCPeerConnection-setLocalDescription-rollback.html": [ - "353808ea44c2a7b79458cd9fa7b7ffd23b868431", + "293081a9ebd031cc4919a01ec323630394d401a8", "testharness" ], "webrtc/RTCPeerConnection-setLocalDescription.html": [ - "7a5a44a4b431e811ebbe505ce63d6c0e9a5ed39b", + "b4cac26716f01ff80c902d3536dc0d2de6d85388", "testharness" ], "webrtc/RTCPeerConnection-setRemoteDescription-answer.html": [ - "0d904a91df760946158b1252476870d67faf8587", + "3f85858a7afe6a5346b2d47f5505d25caef2668b", "testharness" ], "webrtc/RTCPeerConnection-setRemoteDescription-offer.html": [ - "91a70d6ec4387e88e779621a72baf282bd74d21c", + "ce5345bbaf5b5230b1fd53bbb55ab4439c3eb979", "testharness" ], "webrtc/RTCPeerConnection-setRemoteDescription-pranswer.html": [ - "35b884aa8bdbebbe646ae27ebedf5ae722790d48", + "6ddea8760cbacc775ee99aa700fd71883cfb9bd7", "testharness" ], "webrtc/RTCPeerConnection-setRemoteDescription-rollback.html": [ - "ee83d6611ac113b96730c3ab103f5c2b1c8be1ba", + "6142a9b3b95bb26634af5300bc24981f2b4cb2a4", "testharness" ], "webrtc/RTCPeerConnection-setRemoteDescription.html": [ - "3fa920f546dbb273634a25adf578e9489debb3b5", + "2a2e3f9ff0a5912fa260d7124f7f5a9c3862c533", "testharness" ], "webrtc/RTCPeerConnectionIceEvent-constructor.html": [ @@ -638691,7 +641831,7 @@ "testharness" ], "webrtc/RTCSctpTransport-constructor.html": [ - "311250883925fc2d94e2716f4eddcdb46ed9da57", + "b92f3acf5113a475b58892f48406aafc9634be07", "testharness" ], "webrtc/RTCStats-helper.js": [ @@ -638863,7 +642003,7 @@ "testharness" ], "websockets/OWNERS": [ - "891fabbcf4359695999272da171ad3177d5f3e7e", + "10f99e83578e8082173bb1da68f7fb6f1c371d58", "support" ], "websockets/README.md": [ @@ -639131,11 +642271,11 @@ "testharness" ], "websockets/constructor/010.html": [ - "c0c6f54f8c9290e6fbf8a1ddf22e6a1362ef586d", + "bac5f0dca1508252e49dcf61ca3f095664bfaf89", "testharness" ], "websockets/constructor/011.html": [ - "60f0ca813c13a6003a3f376ffbddd38a8a7a6f98", + "47314c9d8762f552694791286e2607bab72ec39d", "testharness" ], "websockets/constructor/012.html": [ @@ -639875,7 +643015,7 @@ "testharness" ], "webstorage/storage_enumerate.html": [ - "6d7c52b7b8fef7b6e987d4fade5fb1271266c6bb", + "68a6b26b33dbad422b25d95f67ffa7d057662894", "testharness" ], "webstorage/storage_functions_not_overwritten.html": [ @@ -640051,7 +643191,7 @@ "support" ], "webvr/idlharness.html": [ - "236974fe82ab29908e849d25c5ce748f5c0509c3", + "ef6ad8bff43a6423b9b3e7deb8017a8b3fa0c112", "testharness" ], "webvr/webvr-disabled-by-feature-policy.https.sub.html": [ @@ -640087,7 +643227,7 @@ "support" ], "webvtt/OWNERS": [ - "a630f47bc188f4fb7b4ee83653437339f4d70575", + "3927364206320a3898eb0fec28e2a879bb04d606", "support" ], "webvtt/README.md": [ @@ -640219,7 +643359,7 @@ "support" ], "webvtt/parsing/cue-text-parsing/dat/entities.dat": [ - "8c2d324c5770804fd4c1edcf797b57c3e53cf411", + "02613e33aa1f565f3a1918b12dea5a6f2ac9debb", "support" ], "webvtt/parsing/cue-text-parsing/dat/tags.dat": [ @@ -640239,7 +643379,7 @@ "support" ], "webvtt/parsing/cue-text-parsing/tests/entities.html": [ - "547e1da2425b38577e4369c9523e34ca72c8f502", + "3e4a9ea6beeb9068ab685f8edb0238bb12f42c5e", "testharness" ], "webvtt/parsing/cue-text-parsing/tests/tags.html": [ @@ -642863,7 +646003,7 @@ "support" ], "workers/OWNERS": [ - "3648bbedbe71884c7d375289fb63250f968be14f", + "424c4c3664d3eb0c5123b4a05c55ee78a1dbbba5", "support" ], "workers/README.md": [ @@ -643898,6 +647038,10 @@ "671ecb263ceb15ca28ef9cfc2ee6efa6e08a70fb", "support" ], + "workers/worker-performance.worker.js": [ + "d1759a707897f66bf013e888ed188023145e2622", + "testharness" + ], "x-frame-options/deny.sub.html": [ "5a589f4b4c6f2503104b33ae7002dcc5c4153eb7", "testharness" diff --git a/testing/web-platform/meta/mozilla-sync b/testing/web-platform/meta/mozilla-sync index 011c2f8e31e6..b03072e1935d 100644 --- a/testing/web-platform/meta/mozilla-sync +++ b/testing/web-platform/meta/mozilla-sync @@ -1,2 +1,2 @@ -local: fb22415719a9d971a2646fa2d1b74e134ca00c3d -upstream: 12dd602c7b478057bfd70e4243eea395cc1d1876 +local: ba69e294fc80f23d54fc68050f1b7d63d341aa9c +upstream: a2419b0305a7cc5053a9588fbe336ba8ccb096a3 diff --git a/testing/web-platform/moz.build b/testing/web-platform/moz.build index 4d6454e02077..426d047864d3 100644 --- a/testing/web-platform/moz.build +++ b/testing/web-platform/moz.build @@ -102,9 +102,6 @@ with Files("tests/apng/**"): with Files("tests/assumptions/**"): BUG_COMPONENT = ("Testing", "web-platform-tests") -with Files("tests/auxclick/**"): - BUG_COMPONENT = ("Core", "DOM: Events") - with Files("tests/background-fetch/**"): BUG_COMPONENT = ("Core", "DOM: Service Workers") @@ -120,9 +117,6 @@ with Files("tests/bluetooth/**"): with Files("tests/clear-site-data/**"): BUG_COMPONENT = ("Core", "DOM: Security") -with Files("tests/clipboard/**"): - BUG_COMPONENT = ("Core", "DOM") - with Files("tests/clipboard-apis/**"): BUG_COMPONENT = ("Core", "DOM") @@ -157,9 +151,6 @@ with Files("tests/css/**"): with Files("tests/css-cascade/**"): BUG_COMPONENT = ("Core", "CSS Parsing and Computation") -with Files("tests/css-font-display/**"): - BUG_COMPONENT = ("Core", "Layout: Text") - with Files("tests/css-font-loading/**"): BUG_COMPONENT = ("Core", "Layout: Text") @@ -331,9 +322,6 @@ with Files("tests/mediacapture-record/**"): with Files("tests/mediacapture-streams/**"): BUG_COMPONENT = ("Core", "Audio/Video: MediaStreamGraph") -with Files("tests/microdata/**"): - BUG_COMPONENT = ("Core", "DOM") - with Files("tests/mixed-content/**"): BUG_COMPONENT = ("Core", "DOM: Security") diff --git a/testing/web-platform/tests/2dcontext/tools/current-work-canvas.xhtml b/testing/web-platform/tests/2dcontext/tools/current-work-canvas.xhtml index b41ad7d4d620..1baf354028c4 100644 --- a/testing/web-platform/tests/2dcontext/tools/current-work-canvas.xhtml +++ b/testing/web-platform/tests/2dcontext/tools/current-work-canvas.xhtml @@ -1,42 +1,67 @@ -HTML Standard

4.12.5 The canvas element

Support: canvasChrome for Android 59+Chrome 4+UC Browser for Android 11.4+iOS Safari 3.2+Firefox 3.6+IE 9+Samsung Internet 4+Opera Mini (limited) all+Safari 4+Android Browser 3+Opera 9+Edge 12+

Source: caniuse.com

-
Categories
-
Flow content.
-
Phrasing content.
-
Embedded content.
-
Contexts in which this element can be used:
-
Where embedded content is expected.
-
Content model:
-
Transparent.
-
Transparent, but with no interactive content descendants except for a elements, button elements, input elements whose type attribute are in the Checkbox or Radio Button states, and input elements that are buttons.
-
Content attributes:
-
Global attributes
-
width
-
height
-
DOM interface:
-
-
interface HTMLCanvasElement : HTMLElement {
-           attribute unsigned long width;
-           attribute unsigned long height;
+  
Categories:
Flow content.
Phrasing content.
Embedded content.
Palpable content.
Contexts in which this element can be used:
Where embedded content is expected.
Content model:
Transparent, but with no interactive content descendants except + for a elements, img elements with + usemap attributes, button elements, + input elements whose type attribute are in + the Checkbox or Radio Button states, input elements that are + buttons, select elements with a multiple attribute or a display size greater than 1, and elements that would not be + interactive content except for having the tabindex attribute specified.
Tag omission in text/html:
Neither tag is omissible.
Content attributes:
Global attributes
width — Horizontal dimension
height — Vertical dimension
DOM interface:
+
typedef (CanvasRenderingContext2D or WebGLRenderingContext) RenderingContext;
 
-  DOMString toDataURL(in optional DOMString type, in any... args);
-  void toBlob(in FileCallback? callback, in optional DOMString type, in any... args);
+[Exposed=Window,
+ HTMLConstructor]
+interface HTMLCanvasElement : HTMLElement {
+  [CEReactions] attribute unsigned long width;
+  [CEReactions] attribute unsigned long height;
 
-  object? getContext(in DOMString contextId, in any... args);
-};
-
-

The canvas element provides scripts with a - resolution-dependent bitmap canvas, which can be used for rendering - graphs, game graphics, or other visual images on the fly.

+ RenderingContext? getContext(DOMString contextId, any... arguments); -

Authors should not use the canvas element in a - document when a more suitable element is available. For example, it - is inappropriate to use a canvas element to render a - page heading: if the desired presentation of the heading is - graphically intense, it should be marked up using appropriate - elements (typically h1) and then styled using CSS and - supporting technologies such as XBL.

+ USVString toDataURL(optional DOMString type, optional any quality); + void toBlob(BlobCallback _callback, optional DOMString type, optional any quality); + OffscreenCanvas transferControlToOffscreen(); +}; -

When authors use the canvas element, they must also - provide content that, when presented to the user, conveys - essentially the same function or purpose as the bitmap canvas. This - content may be placed as content of the canvas - element. The contents of the canvas element, if any, - are the element's fallback content.

+callback BlobCallback = void (Blob? blob);
+
-

In interactive visual media, if scripting is enabled for the - canvas element, and if support for canvas - elements has been enabled, the canvas element - represents embedded content consisting of - a dynamically created image.

+

The canvas element provides scripts with a resolution-dependent bitmap canvas, + which can be used for rendering graphs, game graphics, art, or other visual images on the fly.

-

In non-interactive, static, visual media, if the - canvas element has been previously painted on (e.g. if - the page was viewed in an interactive visual medium and is now being - printed, or if some script that ran during the page layout process - painted on the element), then the canvas element - represents embedded content with the - current image and size. Otherwise, the element represents its - fallback content instead.

+

Authors should not use the canvas element in a document when a more suitable + element is available. For example, it is inappropriate to use a canvas element to + render a page heading: if the desired presentation of the heading is graphically intense, it + should be marked up using appropriate elements (typically h1) and then styled using + CSS and supporting technologies such as Web Components.

-

In non-visual media, and in visual media if scripting is disabled for the - canvas element or if support for canvas - elements has been disabled, the canvas element - represents its fallback content - instead.

+

When authors use the canvas element, they must also provide content that, when + presented to the user, conveys essentially the same function or purpose as the + canvas's bitmap. This content may be placed as content of the canvas + element. The contents of the canvas element, if any, are the element's fallback + content.

- -

When a canvas element represents - embedded content, the user can still focus descendants - of the canvas element (in the fallback - content). When an element is focused, it is the target of - keyboard interaction events (even though the element itself is not - visible). This allows authors to make an interactive canvas - keyboard-accessible: authors should have a one-to-one mapping of - interactive regions to focusable elements in the fallback - content. (Focus has no effect on mouse interaction - events.) [DOMEVENTS]

+
-

The canvas element has two attributes to control the - size of the coordinate space: width and height. These - attributes, when specified, must have values that are valid non-negative - integers. The rules for parsing - non-negative integers must be used to obtain their numeric - values. If an attribute is missing, or if parsing its value returns - an error, then the default value must be used instead. The - width attribute defaults to - 300, and the height - attribute defaults to 150.

+

In interactive visual media, if scripting is enabled for + the canvas element, and if support for canvas elements has been enabled, + then the canvas element represents embedded content + consisting of a dynamically created image, the element's bitmap.

-

The intrinsic dimensions of the canvas element equal - the size of the coordinate space, with the numbers interpreted in - CSS pixels. However, the element can be sized arbitrarily by a - style sheet. During rendering, the image is scaled to fit this layout - size.

+

In non-interactive, static, visual media, if the canvas element has been + previously associated with a rendering context (e.g. if the page was viewed in an interactive + visual medium and is now being printed, or if some script that ran during the page layout process + painted on the element), then the canvas element represents + embedded content with the element's current bitmap and size. Otherwise, the element + represents its fallback content instead.

-
+

In non-visual media, and in visual media if scripting is + disabled for the canvas element or if support for canvas elements + has been disabled, the canvas element represents its fallback + content instead.

-

The size of the coordinate space does not necessarily represent - the size of the actual bitmap that the user agent will use - internally or during rendering. On high-definition displays, for - instance, the user agent may internally use a bitmap with two device - pixels per unit in the coordinate space, so that the rendering - remains at high quality throughout.

+ +

When a canvas element represents embedded content, the + user can still focus descendants of the canvas element (in the fallback + content). When an element is focused, it is the target of keyboard interaction + events (even though the element itself is not visible). This allows authors to make an interactive + canvas keyboard-accessible: authors should have a one-to-one mapping of interactive regions to focusable areas in the fallback content. (Focus has no + effect on mouse interaction events.) [UIEVENTS]

-

When the canvas element is created, and subsequently - whenever the width and height attributes are set (whether - to a new value or to the previous value), the bitmap and any - associated contexts must be cleared back to their initial state and - reinitialized with the newly specified coordinate space - dimensions.

+

An element whose nearest canvas element ancestor is being rendered + and represents embedded content is an element that is being used as + relevant canvas fallback content.

-

When the canvas is initialized, its bitmap must be cleared to - transparent black.

+
-

The width and - height IDL - attributes must reflect the respective content - attributes of the same name, with the same defaults.

+

The canvas element has two attributes to control the size of the element's bitmap: + width and height. These attributes, when specified, must have + values that are valid non-negative integers. The rules for parsing non-negative integers must be used to obtain their + numeric values. If an attribute is missing, or if parsing its value returns an error, then the + default value must be used instead. The width + attribute defaults to 300, and the height attribute + defaults to 150.

-
+

The intrinsic dimensions of the canvas element when it + represents embedded content are equal to the dimensions of the + element's bitmap.

+ +

The user agent must use a square pixel density consisting of one pixel of image data per + coordinate space unit for the bitmaps of a canvas and its rendering contexts.

+ +

A canvas element can be sized arbitrarily by a style sheet, its + bitmap is then subject to the 'object-fit' CSS property.

+ + + +
+ +

The bitmaps of canvas elements, the bitmaps of ImageBitmap objects, + as well as some of the bitmaps of rendering contexts, such as those described in the sections on + the CanvasRenderingContext2D and ImageBitmapRenderingContext objects + below, have an origin-clean flag, which can be + set to true or false. Initially, when the canvas element or ImageBitmap + object is created, its bitmap's origin-clean + flag must be set to true.

+ +

A canvas element can have a rendering context bound to it. Initially, it does not + have a bound rendering context. To keep track of whether it has a rendering context or not, and + what kind of rendering context it is, a canvas also has a canvas context mode, which is initially none but can be changed to either placeholder, 2d, bitmaprenderer, or webgl by algorithms defined in this specification.

+ +

When its canvas context mode is none, a canvas element has no rendering context, + and its bitmap must be fully transparent black with an intrinsic width equal to the + numeric value of the element's width attribute and an + intrinsic height equal to the numeric value of the element's height attribute, those values being interpreted in CSS pixels, and being updated as the attributes are set, changed, or + removed.

+ +

When its canvas context mode is placeholder, a canvas element has no + rendering context. It serves as a placeholder for an OffscreenCanvas object, and + the content of the canvas element is updated by calling the commit() method of the OffscreenCanvas + object's rendering context.

+ +

When a canvas element represents embedded content, it provides a + paint source whose width is the element's intrinsic width, whose height + is the element's intrinsic height, and whose appearance is the element's bitmap.

+ +

Whenever the width and height content attributes are set, removed, changed, or + redundantly set to the value they already have, then the user agent must perform the action + from the row of the following table that corresponds to the canvas element's context mode.

+ +
+

Context Mode

+
+

Action

+ +
+

2d

+
+

Follow the steps to set bitmap + dimensions to the numeric values of the width + and height content attributes.

+ +
+

webgl

+
+

Follow the behavior defined in the WebGL specification. [WEBGL]

+ +
+

bitmaprenderer

+
+

If the context's bitmap + mode is set to blank, + run the steps to set an ImageBitmapRenderingContext's output bitmap, + passing the canvas element's rendering context.

+ +
+

placeholder

+
+

Do nothing.

+ +
+

none

+
+

Do nothing.

+
+ +

The width and height IDL attributes must reflect the + respective content attributes of the same name, with the same defaults.

+ + + +
+ + +
context = canvas . getContext(contextId [, ... ] )
+ +

Returns an object that exposes an API for drawing on the canvas. The first argument + specifies the desired API, either "2d", "bitmaprenderer" or "webgl". Subsequent arguments are handled by that API.

+ +

This specification defines the "2d" and "bitmaprenderer" contexts below. There is also a + specification that defines a "webgl" context. + [WEBGL]

+ +

Returns null if the given context ID is not supported, or if the canvas has already been + initialized with another context type (e.g. trying to get a "2d" context after getting a "webgl" context).

+ +
+ + + +

The getContext(contextId, + arguments...) method of the canvas element, when invoked, + must run the steps in the cell of the following table whose column header describes the + canvas element's canvas context + mode and whose row header describes the method's first argument.

+ +
+ none + 2d + bitmaprenderer + webgl + placeholder +
"2d" + + + Follow the 2D context creation algorithm defined in the section below, passing + it the canvas element and the method's arguments..., to obtain a + CanvasRenderingContext2D object; if this does not throw an exception, then + set the canvas element's context + mode to 2d, and return the + CanvasRenderingContext2D object. + + + Return the same object as was returned the last time the method was invoked with this same + first argument. + + Return null. + + Return null. + + Throw an "InvalidStateError" DOMException. + +
"bitmaprenderer" + + + Follow the ImageBitmapRenderingContext creation algorithm defined + in the section below, passing it the canvas element and the method's + arguments..., to obtain an ImageBitmapRenderingContext object; then + set the canvas element's context + mode to bitmaprenderer, and return the + ImageBitmapRenderingContext object. + + + Return null. + + Return the same object as was returned the last time the method was invoked with this same + first argument. + + Return null. + + Throw an "InvalidStateError" DOMException. + +
"webgl", if the user agent supports the WebGL feature in its current configuration + + + Follow the instructions given in the WebGL specification's Context Creation section to + obtain either a WebGLRenderingContext or null; if the returned value is null, + then return null and abort these steps, otherwise, set the canvas element's + context mode to webgl, and return the WebGLRenderingContext + object [WEBGL] + + + Return null. + + Return null. + + Return the same object as was returned the last time the method was invoked with this same + first argument. + + Throw an "InvalidStateError" DOMException. + +
An unsupported value* + + Return null. + + Return null. + + Return null. + + Return null. + + Throw an "InvalidStateError" DOMException. + +
+ +

* For example, the "webgl" + value in the case of a user agent having exhausted the graphics hardware's abilities and having no + software fallback implementation.

+ +
+ + + +
url = canvas . toDataURL( [ type [, quality ] ] )
+ +

Returns a data: URL for the image in the + canvas.

+ +

The first argument, if provided, controls the type of the image to be returned (e.g. PNG or + JPEG). The default is "image/png"; that type is also used if the given type isn't + supported. The second argument applies if the type is an image format that supports variable + quality (such as "image/jpeg"), and is a number in the range 0.0 to 1.0 inclusive + indicating the desired quality level for the resulting image.

+ +

When trying to use types other than "image/png", authors can check if the image + was really returned in the requested format by checking to see if the returned string starts + with one of the exact strings "data:image/png," or "data:image/png;". If it does, the image is PNG, and thus the requested type was + not supported. (The one exception to this is if the canvas has either no height or no width, in + which case the result might simply be "data:,".)

+ +
canvas . toBlob(callback [, type [, quality ] ] )
+ +

Creates a Blob object representing a file containing the image in the canvas, + and invokes a callback with a handle to that object.

+ +

The second argument, if provided, controls the type of the image to be returned (e.g. PNG or + JPEG). The default is "image/png"; that type is also used if the given type isn't + supported. The third argument applies if the type is an image format that supports variable + quality (such as "image/jpeg"), and is a number in the range 0.0 to 1.0 inclusive + indicating the desired quality level for the resulting image.

+ +
canvas . transferControlToOffscreen()
+

Returns a newly created OffscreenCanvas object that uses the + canvas element as a placeholder. Once the canvas element has become a + placeholder for an OffscreenCanvas object, its intrinsic size can no longer be + changed, and it cannot have a rendering context. The content of the placeholder canvas is + updated by calling the commit() method of the + OffscreenCanvas object's rendering context. +

+
+ + + +

The toDataURL(type, + quality) method, when invoked, must run these steps:

+ +
  1. If this canvas element's bitmap's origin-clean flag is set to false, then throw a + "SecurityError" DOMException and abort these steps.

    + + +
  2. If this canvas element's bitmap has no pixels (i.e. either its horizontal + dimension or its vertical dimension is zero) then return the string "data:," and abort these steps. (This is the shortest data: URL; it represents the empty string in a text/plain resource.)

  3. Let file be a + serialization of this canvas element's bitmap as a file, passing + type and quality if they were given.

  4. If file is null then return "data:,".

  5. Return a data: URL representing + file. [RFC2397]

    + + + +
+ +

The toBlob(callback, type, + quality) method, when invoked, must run these steps:

+ +
  1. If this canvas element's bitmap's origin-clean flag is set to false, then throw a + "SecurityError" DOMException and abort these steps.

    + + +
  2. +

    If this canvas element's bitmap has no pixels (i.e. either its horizontal + dimension or its vertical dimension is zero) then let result be null.

    + +

    Otherwise, let result be a Blob object representing a serialization of this canvas element's + bitmap as a file, passing type and quality if they were given. [FILEAPI]

    +
  3. Return, but continue running these steps in parallel.

  4. Queue a task to invoke + the BlobCallback callback with result as its argument. The + task source for this task is the + canvas blob serialization task + source.

+ +

The transferControlToOffscreen() method, + when invoked, must run these steps:

+ +
  1. If this canvas element's context + mode is not set to none, throw an + "InvalidStateError" DOMException and abort these + steps.

  2. Let offscreenCanvas be a new OffscreenCanvas object with its + width and height equal to the values of the width + and height content attributes of this + canvas element.

  3. Set the placeholder canvas + element of offscreenCanvas to be a weak reference to this canvas + element.

  4. Set this canvas element's context + mode to placeholder.

  5. Return offscreenCanvas.

+ + + + + +
4.12.5.1 The 2D rendering context
+ + + +
typedef (HTMLImageElement or
+         SVGImageElement) HTMLOrSVGImageElement;
+
+typedef (HTMLOrSVGImageElement or
+         HTMLVideoElement or
+         HTMLCanvasElement or
+         ImageBitmap or
+         OffscreenCanvas) CanvasImageSource;
+
+enum CanvasFillRule { "nonzero", "evenodd" };
+
+dictionary CanvasRenderingContext2DSettings {
+  boolean alpha = true;
+};
+
+enum ImageSmoothingQuality { "low", "medium", "high" };
+
+interface CanvasRenderingContext2D {
+  // back-reference to the canvas
+  readonly attribute HTMLCanvasElement canvas;
+};
+CanvasRenderingContext2D implements CanvasState;
+CanvasRenderingContext2D implements CanvasTransform;
+CanvasRenderingContext2D implements CanvasCompositing;
+CanvasRenderingContext2D implements CanvasImageSmoothing;
+CanvasRenderingContext2D implements CanvasFillStrokeStyles;
+CanvasRenderingContext2D implements CanvasShadowStyles;
+CanvasRenderingContext2D implements CanvasFilters;
+CanvasRenderingContext2D implements CanvasRect;
+CanvasRenderingContext2D implements CanvasDrawPath;
+CanvasRenderingContext2D implements CanvasUserInterface;
+CanvasRenderingContext2D implements CanvasText;
+CanvasRenderingContext2D implements CanvasDrawImage;
+CanvasRenderingContext2D implements CanvasImageData;
+CanvasRenderingContext2D implements CanvasPathDrawingStyles;
+CanvasRenderingContext2D implements CanvasTextDrawingStyles;
+CanvasRenderingContext2D implements CanvasPath;
+
+[NoInterfaceObject, Exposed=(Window,Worker)]
+interface CanvasState {
+  // state
+  void save(); // push state on state stack
+  void restore(); // pop state stack and restore state
+};
+
+[NoInterfaceObject, Exposed=(Window,Worker)]
+interface CanvasTransform {
+  // transformations (default transform is the identity matrix)
+  void scale(unrestricted double x, unrestricted double y);
+  void rotate(unrestricted double angle);
+  void translate(unrestricted double x, unrestricted double y);
+  void transform(unrestricted double a, unrestricted double b, unrestricted double c, unrestricted double d, unrestricted double e, unrestricted double f);
+
+  [NewObject] DOMMatrix getTransform();
+  void setTransform(unrestricted double a, unrestricted double b, unrestricted double c, unrestricted double d, unrestricted double e, unrestricted double f);
+  void setTransform(optional DOMMatrix2DInit transform);
+  void resetTransform();
+
+};
+
+[NoInterfaceObject, Exposed=(Window,Worker)]
+interface CanvasCompositing {
+  // compositing
+  attribute unrestricted double globalAlpha; // (default 1.0)
+  attribute DOMString globalCompositeOperation; // (default source-over)
+};
+
+[NoInterfaceObject, Exposed=(Window,Worker)]
+interface CanvasImageSmoothing {
+  // image smoothing
+  attribute boolean imageSmoothingEnabled; // (default true)
+  attribute ImageSmoothingQuality imageSmoothingQuality; // (default low)
+
+};
+
+[NoInterfaceObject, Exposed=(Window,Worker)]
+interface CanvasFillStrokeStyles {
+  // colors and styles (see also the CanvasPathDrawingStyles and CanvasTextDrawingStyles interfaces)
+  attribute (DOMString or CanvasGradient or CanvasPattern) strokeStyle; // (default black)
+  attribute (DOMString or CanvasGradient or CanvasPattern) fillStyle; // (default black)
+  CanvasGradient createLinearGradient(double x0, double y0, double x1, double y1);
+  CanvasGradient createRadialGradient(double x0, double y0, double r0, double x1, double y1, double r1);
+  CanvasPattern? createPattern(CanvasImageSource image, [TreatNullAs=EmptyString] DOMString repetition);
+
+};
+
+[NoInterfaceObject, Exposed=(Window,Worker)]
+interface CanvasShadowStyles {
+  // shadows
+  attribute unrestricted double shadowOffsetX; // (default 0)
+  attribute unrestricted double shadowOffsetY; // (default 0)
+  attribute unrestricted double shadowBlur; // (default 0)
+  attribute DOMString shadowColor; // (default transparent black)
+};
+
+[NoInterfaceObject, Exposed=(Window,Worker)]
+interface CanvasFilters {
+  // filters
+  attribute DOMString filter; // (default "none")
+};
+
+[NoInterfaceObject, Exposed=(Window,Worker)]
+interface CanvasRect {
+  // rects
+  void clearRect(unrestricted double x, unrestricted double y, unrestricted double w, unrestricted double h);
+  void fillRect(unrestricted double x, unrestricted double y, unrestricted double w, unrestricted double h);
+  void strokeRect(unrestricted double x, unrestricted double y, unrestricted double w, unrestricted double h);
+};
+
+[NoInterfaceObject, Exposed=(Window,Worker)]
+interface CanvasDrawPath {
+  // path API (see also CanvasPath)
+  void beginPath();
+  void fill(optional CanvasFillRule fillRule = "nonzero");
+  void fill(Path2D path, optional CanvasFillRule fillRule = "nonzero");
+  void stroke();
+  void stroke(Path2D path);
+  void clip(optional CanvasFillRule fillRule = "nonzero");
+  void clip(Path2D path, optional CanvasFillRule fillRule = "nonzero");
+  void resetClip();
+  boolean isPointInPath(unrestricted double x, unrestricted double y, optional CanvasFillRule fillRule = "nonzero");
+  boolean isPointInPath(Path2D path, unrestricted double x, unrestricted double y, optional CanvasFillRule fillRule = "nonzero");
+  boolean isPointInStroke(unrestricted double x, unrestricted double y);
+  boolean isPointInStroke(Path2D path, unrestricted double x, unrestricted double y);
+};
+
+[Exposed=Window,
+ NoInterfaceObject]
+interface CanvasUserInterface {
+  void drawFocusIfNeeded(Element element);
+  void drawFocusIfNeeded(Path2D path, Element element);
+  void scrollPathIntoView();
+  void scrollPathIntoView(Path2D path);
+};
+
+[Exposed=Window,
+ NoInterfaceObject]
+interface CanvasText {
+  // text (see also the CanvasPathDrawingStyles and CanvasTextDrawingStyles interfaces)
+  void fillText(DOMString text, unrestricted double x, unrestricted double y, optional unrestricted double maxWidth);
+  void strokeText(DOMString text, unrestricted double x, unrestricted double y, optional unrestricted double maxWidth);
+  TextMetrics measureText(DOMString text);
+};
+
+[NoInterfaceObject, Exposed=(Window,Worker)]
+interface CanvasDrawImage {
+  // drawing images
+  void drawImage(CanvasImageSource image, unrestricted double dx, unrestricted double dy);
+  void drawImage(CanvasImageSource image, unrestricted double dx, unrestricted double dy, unrestricted double dw, unrestricted double dh);
+  void drawImage(CanvasImageSource image, unrestricted double sx, unrestricted double sy, unrestricted double sw, unrestricted double sh, unrestricted double dx, unrestricted double dy, unrestricted double dw, unrestricted double dh);
+};
+
+[NoInterfaceObject, Exposed=(Window,Worker)]
+interface CanvasImageData {
+  // pixel manipulation
+  ImageData createImageData(long sw, long sh);
+  ImageData createImageData(ImageData imagedata);
+  ImageData getImageData(long sx, long sy, long sw, long sh);
+  void putImageData(ImageData imagedata, long dx, long dy);
+  void putImageData(ImageData imagedata, long dx, long dy, long dirtyX, long dirtyY, long dirtyWidth, long dirtyHeight);
+};
+
+enum CanvasLineCap { "butt", "round", "square" };
+enum CanvasLineJoin { "round", "bevel", "miter" };
+enum CanvasTextAlign { "start", "end", "left", "right", "center" };
+enum CanvasTextBaseline { "top", "hanging", "middle", "alphabetic", "ideographic", "bottom" };
+enum CanvasDirection { "ltr", "rtl", "inherit" };
+
+[NoInterfaceObject, Exposed=(Window,Worker)]
+interface CanvasPathDrawingStyles {
+  // line caps/joins
+  attribute unrestricted double lineWidth; // (default 1)
+  attribute CanvasLineCap lineCap; // (default "butt")
+  attribute CanvasLineJoin lineJoin; // (default "miter")
+  attribute unrestricted double miterLimit; // (default 10)
+
+  // dashed lines
+  void setLineDash(sequence<unrestricted double> segments); // default empty
+  sequence<unrestricted double> getLineDash();
+  attribute unrestricted double lineDashOffset;
+};
+
+[Exposed=Window,
+ NoInterfaceObject]
+interface CanvasTextDrawingStyles {
+  // text
+  attribute DOMString font; // (default 10px sans-serif)
+  attribute CanvasTextAlign textAlign; // (default: "start")
+  attribute CanvasTextBaseline textBaseline; // (default: "alphabetic")
+  attribute CanvasDirection direction; // (default: "inherit")
+};
+
+[NoInterfaceObject, Exposed=(Window,Worker)]
+interface CanvasPath {
+  // shared path API methods
+  void closePath();
+  void moveTo(unrestricted double x, unrestricted double y);
+  void lineTo(unrestricted double x, unrestricted double y);
+  void quadraticCurveTo(unrestricted double cpx, unrestricted double cpy, unrestricted double x, unrestricted double y);
+  void bezierCurveTo(unrestricted double cp1x, unrestricted double cp1y, unrestricted double cp2x, unrestricted double cp2y, unrestricted double x, unrestricted double y);
+  void arcTo(unrestricted double x1, unrestricted double y1, unrestricted double x2, unrestricted double y2, unrestricted double radius); 
+  void arcTo(unrestricted double x1, unrestricted double y1, unrestricted double x2, unrestricted double y2, unrestricted double radiusX, unrestricted double radiusY, unrestricted double rotation); 
+  void rect(unrestricted double x, unrestricted double y, unrestricted double w, unrestricted double h);
+  void arc(unrestricted double x, unrestricted double y, unrestricted double radius, unrestricted double startAngle, unrestricted double endAngle, optional boolean anticlockwise = false); 
+  void ellipse(unrestricted double x, unrestricted double y, unrestricted double radiusX, unrestricted double radiusY, unrestricted double rotation, unrestricted double startAngle, unrestricted double endAngle, optional boolean anticlockwise = false); 
+};
+
+[Exposed=(Window,Worker)]
+interface CanvasGradient {
+  // opaque object
+  void addColorStop(double offset, DOMString color);
+};
+
+[Exposed=(Window,Worker)]
+interface CanvasPattern {
+  // opaque object
+  void setTransform(optional DOMMatrix2DInit transform);
+};
+
+[Exposed=Window]
+interface TextMetrics {
+  // x-direction
+  readonly attribute double width; // advance width
+  readonly attribute double actualBoundingBoxLeft;
+  readonly attribute double actualBoundingBoxRight;
+
+  // y-direction
+  readonly attribute double fontBoundingBoxAscent;
+  readonly attribute double fontBoundingBoxDescent;
+  readonly attribute double actualBoundingBoxAscent;
+  readonly attribute double actualBoundingBoxDescent;
+  readonly attribute double emHeightAscent;
+  readonly attribute double emHeightDescent;
+  readonly attribute double hangingBaseline;
+  readonly attribute double alphabeticBaseline;
+  readonly attribute double ideographicBaseline;
+};
+
+[Constructor(unsigned long sw, unsigned long sh),
+ Constructor(Uint8ClampedArray data, unsigned long sw, optional unsigned long sh),
+ Exposed=(Window,Worker),
+ Serializable]
+interface ImageData {
+  readonly attribute unsigned long width;
+  readonly attribute unsigned long height;
+  readonly attribute Uint8ClampedArray data;
+};
+
+[Constructor,
+ Constructor(Path2D path),
+ Constructor(sequence<Path2D> paths, optional CanvasFillRule fillRule = "nonzero"),
+ Constructor(DOMString d),
+ Exposed=(Window,Worker)]
+interface Path2D {
+  void addPath(Path2D path, optional DOMMatrix2DInit transform);
+};
+Path2D implements CanvasPath;
+ + + +

To maintain compatibility with existing Web content, user agents need to + enumerate methods defined in CanvasUserInterface immediately after the stroke() method on CanvasRenderingContext2D + objects.

+ +
context = canvas . getContext('2d' [, { [ alpha: false ] } ] )
+ +

Returns a CanvasRenderingContext2D object that is permanently bound to a + particular canvas element.

+ +

If the alpha setting is + provided and set to false, then the canvas is forced to always be opaque.

+ +
context . canvas
+ +

Returns the canvas element.

+ +
+ + + +

A CanvasRenderingContext2D object has an output bitmap that + is initialized when the object is created.

+ + +

The output bitmap has an origin-clean flag, which can be set to true or false. + Initially, when one of these bitmaps is created, its origin-clean flag must be set to true.

+ + +

The CanvasRenderingContext2D object also has an alpha flag, which can be set to true or false. Initially, + when the context is created, its alpha flag must be + set to true. When a CanvasRenderingContext2D object has its alpha flag set to false, then its alpha channel must be + fixed to 1.0 (fully opaque) for all pixels, and attempts to change the alpha component of any + pixel must be silently ignored.

+ +

Thus, the bitmap of such a context starts off as fully-opaque black instead of + fully-transparent black; clearRect() always + results in fully-opaque black pixels, every fourth byte from getImageData() is always 255, the putImageData() method effectively ignores every + fourth byte in its input, and so on. However, the alpha component of styles and images drawn + onto the canvas are still honoured up to the point where they would impact the output + bitmap's alpha channel; for instance, drawing a 50% transparent white square on a freshly + created output bitmap with its alpha + flag set to false will result in a fully-opaque gray square.

+ +
+ +

The CanvasRenderingContext2D 2D rendering context represents a flat linear + Cartesian surface whose origin (0,0) is at the top left corner, with the coordinate space having + x values increasing when going right, and y values increasing when going + down. The x-coordinate of the right-most edge is equal to the width of the rendering + context's output bitmap in CSS pixels; similarly, the + y-coordinate of the bottom-most edge is equal to the height of the rendering context's + output bitmap in CSS pixels.

+ +

The size of the coordinate space does not necessarily represent the size of the actual bitmaps + that the user agent will use internally or during rendering. On high-definition displays, for + instance, the user agent may internally use bitmaps with two device pixels per unit in the + coordinate space, so that the rendering remains at high quality throughout. Anti-aliasing can + similarly be implemented using over-sampling with bitmaps of a higher resolution than the final + image on the display.

+ +
+ +

The 2D context creation algorithm, which is passed a target (a + canvas element) and optionally some arguments, consists of running the following + steps:

+ +
  1. If the algorithm was passed some arguments, then let arg be the first such + argument. Otherwise, let arg be undefined.

  2. Let settings be the result of coercing the arg context arguments for 2D.

  3. Create a new CanvasRenderingContext2D object.

  4. Initialize its canvas attribute to point to + target.

  5. Let the new CanvasRenderingContext2D object's output bitmap be + the same bitmap as target's bitmap (so that they are shared).

  6. Set bitmap dimensions to the + numeric values of target's width and + height content attributes.

  7. + +

    Process each of the members of settings as follows:

    + +
    alpha
    If false, then set the new CanvasRenderingContext2D object's alpha flag to false.
    + +
  8. Return the new CanvasRenderingContext2D object.

+ +
+ +
+ +

When a user agent is required to coerce context arguments for 2D, it must run these + steps:

+ +
  1. Let input be the argument to coerce.

  2. Let jsval be the result of converting + input to a JavaScript value. (This can throw an exception.)

  3. Let dict be the result of converting + jsval to the dictionary type CanvasRenderingContext2DSettings. (This can + throw an exception.)

  4. Return dict.

+ +
+ +

When the user agent is to set bitmap + dimensions to width and height, it must run these steps:

+ +
  1. Reset the rendering context to its default state.

  2. Resize the output bitmap to the new width and height + and clear it to fully transparent black.

  3. Let canvas be the canvas element to which the rendering + context's canvas attribute was initialized.

  4. If the numeric value of canvas's width + content attribute differs from width, then set canvas's width content attribute to the shortest possible string + representing width as a valid non-negative integer.

  5. If the numeric value of canvas's height + content attribute differs from height, then set canvas's height content attribute to the shortest possible string + representing height as a valid non-negative integer.

Only one square appears to be drawn in the following example:

-
  // canvas is a reference to a <canvas> element
-  var context = canvas.getContext('2d');
-  context.fillRect(0,0,50,50);
-  canvas.setAttribute('width', '300'); // clears the canvas
-  context.fillRect(0,100,50,50);
-  canvas.width = canvas.width; // clears the canvas
-  context.fillRect(100,0,50,50); // only this square remains
+
// canvas is a reference to a <canvas> element
+var context = canvas.getContext('2d');
+context.fillRect(0,0,50,50);
+canvas.setAttribute('width', '300'); // clears the canvas
+context.fillRect(0,100,50,50);
+canvas.width = canvas.width; // clears the canvas
+context.fillRect(100,0,50,50); // only this square remains
-
context = canvas . getContext(contextId [, ... ])
+
-
+

When the user agent is to run the unbinding + steps for a rendering context, it must run these steps:

-

Returns an object that exposes an API for drawing on the - canvas. The first argument specifies the desired API. Subsequent - arguments are handled by that API.

+
  1. Reset the rendering context to its default state.

  2. Clear the CanvasRenderingContext2D object's output bitmap to a + transparent black.

  3. Set the CanvasRenderingContext2D object's origin-clean flag to true.

  4. Let the CanvasRenderingContext2D object have no output + bitmap.

- +

When the user agent is to run the binding + steps to bind the rendering context to the canvas element target, it + must run these steps:

-

This specification defines the "2d" context below. There is also - a specification that defines a "webgl" context. [WEBGL]

+
  1. Reset the rendering context to its default state.

  2. Resize the CanvasRenderingContext2D object's output bitmap to + the dimensions of target's bitmap and clear it to fully transparent black.

  3. Set the CanvasRenderingContext2D object's origin-clean flag to true.

  4. Let the CanvasRenderingContext2D object's output bitmap be target's bitmap.

- +
-

The list of defined contexts is given on the WHATWG Wiki - CanvasContexts page. [WHATWGWIKI] +

The canvas attribute must return the + value it was initialized to when the object was created.

-

Returns null if the given context ID is not supported or if the - canvas has already been initialized with some other (incompatible) - context type (e.g. trying to get a "2d" context after getting a - "webgl" context).

+
-
+

Whenever the CSS value currentColor is used as a color in the CanvasRenderingContext2D + API, the computed value of the currentColor keyword is + the computed value of the 'color' property on the canvas + element at the time that the color is specified (e.g. when the appropriate attribute is set, or + when the method is called; not when the color is rendered or otherwise used). If the computed + value of the 'color' property is undefined for a particular case (e.g. because the element is + not in a document), then the computed value of the 'color' property + for the purposes of determining the computed value of the currentColor + keyword is fully opaque black. [CSSCOLOR]

-
+

In the case of addColorStop() on + CanvasGradient, the "computed value of the 'color' + property" for the purposes of determining the computed value of the currentColor keyword is always fully opaque black (there is no associated + element). [CSSCOLOR]

-

A canvas element can have a primary - context, which is the first context to have been obtained for - that element. When created, a canvas element must not - have a primary context.

+

This is because CanvasGradient objects are + canvas-neutral — a CanvasGradient object created by one + canvas can be used by another, and there is therefore no way to know which is the + "element in question" at the time that the color is specified.

+

Similar concerns exist with font-related properties; the rules for those are + described in detail in the relevant section below.

-

The getContext(contextId, args...) - method of the canvas element, when invoked, must run - the following steps:

+ -
  1. Let contextId be the first argument to - the method.

  2. +
    -
  3. +

    The CanvasFillRule enumeration is used to select the fill rule + algorithm by which to determine if a point is inside or outside a path.

    -

    If contextId is not the name of a context - supported by the user agent, return null and abort these - steps.

    +

    The value "nonzero" value + indicates the non-zero winding rule, wherein -

    An example of this would be a user agent that - theoretically supports the "webgl" 3D context, in the case - where the platform does not have hardware support for OpenGL and - the user agent does not have a software OpenGL implementation. - Despite the user agent recognising the "webgl" name, it would return - null at this step because that context is not, in practice, - supported at the time of the call.

    + a point is considered to be outside a shape if the number of times a half-infinite straight + line drawn from that point crosses the shape's path going in one direction is equal to the + number of times it crosses the path going in the other direction. -
  4. +

    -
  5. If the element has a primary context and that - context's entry in the WHATWG Wiki - CanvasContexts page does not list contextId - as a context with which it is compatible, return null and abort - these steps. [WHATWGWIKI]

  6. -
  7. If the element does not have a primary context, - let the element's primary context be contextId.

  8. +

    The "evenodd" value indicates + the even-odd rule, wherein -

  9. If the getContext() method has - already been invoked on this element for the same contextId, return the same object as was returned - that time, and abort these steps. The additional arguments are - ignored.

  10. + a point is considered to be outside a shape if the number of times a half-infinite straight + line drawn from that point crosses the shape's path is even. -
  11. Return a new object for contextId, as defined by the specification - given for contextId's entry in the WHATWG Wiki - CanvasContexts page. [WHATWGWIKI]

  12. +

    -

New context types may be registered in the WHATWG Wiki - CanvasContexts page. [WHATWGWIKI]

+

If a point is not outside a shape, it is inside the shape.

-

Anyone is free to edit the WHATWG Wiki CanvasContexts page at any - time to add a new context type. These new context types must be - specified with the following information:

-
Keyword
+
-

The value of contextID that will return - the object for the new API.

+

The ImageSmoothingQuality enumeration is used to express a preference for the + interpolation quality to use when smoothing images.

+

The "low" value + indicates a preference for a low level of image interpolation quality. Low-quality image + interpolation may be more computationally efficient than higher settings.

-
Specification
+

The "medium" value + indicates a preference for a medium level of image interpolation quality.

-

A link to a formal specification of the context type's - API. It could be another page on the Wiki, or a link to an external - page. If the type does not have a formal specification, an informal - description can be substituted until such time as a formal - specification is available.

+

The "high" value + indicates a preference for a high level of image interpolation quality. High-quality image + interpolation may be more computationally expensive than lower settings.

+

Bilinear scaling is an example of a relatively fast, lower-quality image-smoothing + algorithm. Bicubic or Lanczos scaling are examples of image-smoothing algorithms that produce + higher-quality output. This specification does not mandate that specific interpolation algorithms + be used.

-
Compatible with
-

The list of context types that are compatible with this one - (i.e. that operate on the same underlying bitmap). This list must - be transitive and symmetric; if one context type is defined as - compatible with another, then all types it is compatible with must - be compatible with all types the other is compatible with.

+
4.12.5.1.1 Implementation notes
-

Vendors may also define experimental contexts using the syntax - vendorname-context, for example, - moz-3d. Such contexts should be registered in the - WHATWG Wiki CanvasContexts page.

+

This section is non-normative.

-
+

The output bitmap, when it is not directly displayed by the user agent, + implementations can, instead of updating this bitmap, merely remember the sequence of drawing + operations that have been applied to it until such time as the bitmap's actual data is needed + (for example because of a call to drawImage(), or + the createImageBitmap() factory method). In many + cases, this will be more memory efficient.

-
url = canvas . toDataURL( [ type, ... ])
+

The bitmap of a canvas element is the one bitmap that's pretty much always going + to be needed in practice. The output bitmap of a rendering context, when it has one, + is always just an alias to a canvas element's bitmap.

-
+

Additional bitmaps are sometimes needed, e.g. to enable fast drawing when the canvas is being + painted at a different size than its intrinsic size, + or to enable double buffering so that graphics updates, like page scrolling for example, can be + processed concurrently while canvas draw commands are being executed.

-

Returns a data: URL for the image in the canvas.

+
4.12.5.1.2 The canvas state
-

The first argument, if provided, controls the type of the image - to be returned (e.g. PNG or JPEG). The default is image/png; that type is also used if the given - type isn't supported. The other arguments are specific to the - type, and control the way that the image is generated, as given in - the table below.

+

Objects that implement the CanvasState interface maintain a stack of drawing + states. Drawing states consist of:

-

When trying to use types other than "image/png", - authors can check if the image was really returned in the - requested format by checking to see if the returned string starts - with one of the exact strings "data:image/png," or "data:image/png;". If it does, the image is PNG, - and thus the requested type was not supported. (The one exception - to this is if the canvas has either no height or no width, in - which case the result might simply be "data:,".)

+ -
+

The current default path and the rendering context's bitmaps are not + part of the drawing state. The current default path is persistent, and can only be + reset using the beginPath() method. The bitmaps + depend on whether and how the rendering context is bound to a canvas element.

-
canvas . toBlob(callback [, type, ... ])
- -
- -

Creates a Blob object representing a file - containing the image in the canvas, and invokes a callback with a - handle to that object.

- -

The second argument, if provided, controls the type of the - image to be returned (e.g. PNG or JPEG). The default is image/png; that type is also used if the given - type isn't supported. The other arguments are specific to the - type, and control the way that the image is generated, as given in - the table below.

- -
- -
- -

The toDataURL() method - must run the following steps:

- -
  1. If the canvas has no pixels (i.e. either its horizontal - dimension or its vertical dimension is zero) then return the string - "data:," and abort these steps. (This is the - shortest data: - URL; it represents the empty string in a text/plain resource.)

  2. - -
  3. Let file be a serialization of the - image as a file, using the method's arguments (if any) as - the arguments.

  4. - -
  5. Return a data: URL representing file. [RFC2397]

    - - - -

The toBlob() method - must run the following steps:

- -
  1. Let callback be the first - argument.

  2. - -
  3. Let arguments be the second and - subsequent arguments to the method, if any.

  4. - -
  5. Let file be a serialization of the - image as a file, using arguments.

  6. - -
  7. Return, but continue running these steps - asynchronously.

  8. - -
  9. If callback is null, abort these - steps.

  10. - -
  11. Queue a task to invoke the - FileCallback callback with a - Blob object representing file as - its argument. The task source for this task is the - canvas blob serialization task source. [FILESYSTEMAPI] [FILEAPI]

  12. - -

When a user agent is to create a serialization of the image - as a file, optionally with some given arguments, it must create an image file in the format - given by the first value of arguments, or, if - there are no arguments, in the PNG format. [PNG]

- -

If arguments is not empty, the first value - must be interpreted as a MIME type - giving the format to use. If the type has any parameters, it must be - treated as not supported.

- -

For example, the value "image/png" would - mean to generate a PNG image, the value "image/jpeg" - would mean to generate a JPEG image, and the value - "image/svg+xml" would mean to generate an SVG image - (which would probably require that the implementation actually keep - enough information to reliably render an SVG image from the canvas).

- -

User agents must support PNG ("image/png"). User - agents may support other types. If the user agent does not support - the requested type, it must create the file using the PNG format. [PNG]

- -

User agents must convert the provided type to ASCII lowercase - before establishing if they support that type.

- -

For image types that do not support an alpha channel, the - serialized image must be the canvas image composited onto a solid - black background using the source-over operator.

- -

If the first argument in arguments gives a - type corresponding to one of the types given in the first column of - the following table, and the user agent supports that type, then the - subsequent arguments, if any, must be treated as described in the - second cell of that row.

- -
- -
Type Other arguments Reference -
image/jpeg - The second argument, if it is a - number in the range 0.0 to 1.0 inclusive, must - be treated as the desired quality level. If it is not a number or is outside that range, the - user agent must use its default value, as if the argument had - been omitted. - [JPEG] -
- -

For the purposes of these rules, an argument is considered to be - a number if it is converted to an IDL double value by the rules for - handling arguments of type any in the Web IDL - specification. [WEBIDL]

- -

Other arguments must be ignored and must not cause the user agent - to raise an exception. A future version of this specification will - probably define other parameters to be passed to these methods to - allow authors to more carefully control compression settings, image - metadata, etc.

- -
- - - -
- -
4.8.11.1 The 2D context
- - - - - -

This specification defines the 2d context type, whose - API is implemented using the CanvasRenderingContext2D - interface.

- -
- -

When the getContext() - method of a canvas element is to return a new object for the contextId 2d, the user agent must return a - new CanvasRenderingContext2D object. Any additional - arguments are ignored.

- -
- -

The 2D context represents a flat Cartesian surface whose origin - (0,0) is at the top left corner, with the coordinate space having - x values increasing when going right, and y values increasing when going down.

- -
interface CanvasRenderingContext2D {
-
-  // back-reference to the canvas
-  readonly attribute HTMLCanvasElement canvas;
-
-  // state
-  void save(); // push state on state stack
-  void restore(); // pop state stack and restore state
-
-  // transformations (default transform is the identity matrix)
-  void scale(in double x, in double y);
-  void rotate(in double angle);
-  void translate(in double x, in double y);
-  void transform(in double a, in double b, in double c, in double d, in double e, in double f);
-  void setTransform(in double a, in double b, in double c, in double d, in double e, in double f);
-
-  // compositing
-           attribute double globalAlpha; // (default 1.0)
-           attribute DOMString globalCompositeOperation; // (default source-over)
-
-  // colors and styles
-           attribute any strokeStyle; // (default black)
-           attribute any fillStyle; // (default black)
-  CanvasGradient createLinearGradient(in double x0, in double y0, in double x1, in double y1);
-  CanvasGradient createRadialGradient(in double x0, in double y0, in double r0, in double x1, in double y1, in double r1);
-  CanvasPattern createPattern(in HTMLImageElement image, in DOMString repetition);
-  CanvasPattern createPattern(in HTMLCanvasElement image, in DOMString repetition);
-  CanvasPattern createPattern(in HTMLVideoElement image, in DOMString repetition);
-
-  // line caps/joins
-           attribute double lineWidth; // (default 1)
-           attribute DOMString lineCap; // "butt", "round", "square" (default "butt")
-           attribute DOMString lineJoin; // "round", "bevel", "miter" (default "miter")
-           attribute double miterLimit; // (default 10)
-
-  // shadows
-           attribute double shadowOffsetX; // (default 0)
-           attribute double shadowOffsetY; // (default 0)
-           attribute double shadowBlur; // (default 0)
-           attribute DOMString shadowColor; // (default transparent black)
-
-  // rects
-  void clearRect(in double x, in double y, in double w, in double h);
-  void fillRect(in double x, in double y, in double w, in double h);
-  void strokeRect(in double x, in double y, in double w, in double h);
-
-  // path API
-  void beginPath();
-  void closePath();
-  void moveTo(in double x, in double y);
-  void lineTo(in double x, in double y);
-  void quadraticCurveTo(in double cpx, in double cpy, in double x, in double y);
-  void bezierCurveTo(in double cp1x, in double cp1y, in double cp2x, in double cp2y, in double x, in double y);
-  void arcTo(in double x1, in double y1, in double x2, in double y2, in double radius);
-  void rect(in double x, in double y, in double w, in double h);
-  void arc(in double x, in double y, in double radius, in double startAngle, in double endAngle, in optional boolean anticlockwise);
-  void fill();
-  void stroke();
-  void drawSystemFocusRing(in Element element);
-  boolean drawCustomFocusRing(in Element element);
-  void scrollPathIntoView();
-  void clip();
-  boolean isPointInPath(in double x, in double y);
-
-  // text
-           attribute DOMString font; // (default 10px sans-serif)
-           attribute DOMString textAlign; // "start", "end", "left", "right", "center" (default: "start")
-           attribute DOMString textBaseline; // "top", "hanging", "middle", "alphabetic", "ideographic", "bottom" (default: "alphabetic")
-  void fillText(in DOMString text, in double x, in double y, in optional double maxWidth);
-  void strokeText(in DOMString text, in double x, in double y, in optional double maxWidth);
-  TextMetrics measureText(in DOMString text);
-
-  // drawing images
-  void drawImage(in HTMLImageElement image, in double dx, in double dy);
-  void drawImage(in HTMLImageElement image, in double dx, in double dy, in double dw, in double dh);
-  void drawImage(in HTMLImageElement image, in double sx, in double sy, in double sw, in double sh, in double dx, in double dy, in double dw, in double dh);
-  void drawImage(in HTMLCanvasElement image, in double dx, in double dy);
-  void drawImage(in HTMLCanvasElement image, in double dx, in double dy, in double dw, in double dh);
-  void drawImage(in HTMLCanvasElement image, in double sx, in double sy, in double sw, in double sh, in double dx, in double dy, in double dw, in double dh);
-  void drawImage(in HTMLVideoElement image, in double dx, in double dy);
-  void drawImage(in HTMLVideoElement image, in double dx, in double dy, in double dw, in double dh);
-  void drawImage(in HTMLVideoElement image, in double sx, in double sy, in double sw, in double sh, in double dx, in double dy, in double dw, in double dh);
-
-  // pixel manipulation
-  ImageData createImageData(in double sw, in double sh);
-  ImageData createImageData(in ImageData imagedata);
-  ImageData getImageData(in double sx, in double sy, in double sw, in double sh);
-  void putImageData(in ImageData imagedata, in double dx, in double dy);
-  void putImageData(in ImageData imagedata, in double dx, in double dy, in double dirtyX, in double dirtyY, in double dirtyWidth, in double dirtyHeight);
-};
-
-interface CanvasGradient {
-  // opaque object
-  void addColorStop(in double offset, in DOMString color);
-};
-
-interface CanvasPattern {
-  // opaque object
-};
-
-interface TextMetrics {
-  readonly attribute double width;
-};
-
-interface ImageData {
-  readonly attribute unsigned long width;
-  readonly attribute unsigned long height;
-  readonly attribute CanvasPixelArray data;
-};
-
-interface CanvasPixelArray {
-  readonly attribute unsigned long length;
-  getter octet (in unsigned long index);
-  setter void (in unsigned long index, [Clamp] in octet value);
-};
- -
context . canvas
- -
- -

Returns the canvas element.

- -
- -
- -

The canvas - attribute must return the canvas element that the - context paints on.

- -

Except where otherwise specified, for the 2D context interface, - any method call with a numeric argument whose value is infinite or a - NaN value must be ignored.

- - - -

Whenever the CSS value currentColor is used - as a color in this API, the "computed value of the 'color' property" - for the purposes of determining the computed value of the currentColor keyword is the computed value of the - 'color' property on the element in question at the time that the - color is specified (e.g. when the appropriate attribute is set, or - when the method is called; not when the color is rendered or - otherwise used). If the computed value of the 'color' property is - undefined for a particular case (e.g. because the element is not - in a Document), then the "computed value - of the 'color' property" for the purposes of determining the - computed value of the currentColor keyword is - fully opaque black. [CSSCOLOR]

- -

In the case of addColorStop() on - CanvasGradient, the "computed value of the 'color' - property" for the purposes of determining the computed value of the - currentColor keyword is always fully opaque - black (there is no associated element). [CSSCOLOR]

- -

This is because CanvasGradient objects - are canvas-neutral — a - CanvasGradient object created by one - canvas can be used by another, and there is therefore - no way to know which is the "element in question" at the time that - the color is specified.

- -
- - - -
4.8.11.1.1 The canvas state
- -

Each context maintains a stack of drawing states. Drawing states consist of:

- -

The current path and the current bitmap are not part - of the drawing state. The current path is persistent, and can only - be reset using the beginPath() method. The - current bitmap is a property of the canvas, not the context.

- -
context . save()
- -
+
context . save()

Pushes the current state onto the stack.

-
- -
context . restore()
- -
+
context . restore()

Pops the top state on the stack, restoring the context to that state.

-
+
-
+ -

The save() - method must push a copy of the current drawing state onto the - drawing state stack.

+

The save() method, when invoked, must push + a copy of the current drawing state onto the drawing state stack.

-

The restore() method - must pop the top entry in the drawing state stack, and reset the - drawing state it describes. If there is no saved state, the method - must do nothing.

+

The restore() method, when invoked, + must pop the top entry in the drawing state stack, and reset the drawing state it describes. If + there is no saved state, then the method must do nothing.

- +

When the user agent is to reset the rendering context to its default state, it must + clear the drawing state stack and everything that drawing state consists of to + initial values.

-
+ + -
4.8.11.1.2 Transformations
-

The transformation matrix is applied to coordinates when creating - shapes and paths.

+
4.12.5.1.3 Line styles
-
- -

When the context is created, the transformation matrix must - initially be the identity transform. It may then be adjusted using - the transformation methods.

- -

The transformations must be performed in reverse order. For - instance, if a scale transformation that doubles the width is - applied, followed by a rotation transformation that rotates drawing - operations by a quarter turn, and a rectangle twice as wide as it is - tall is then drawn on the canvas, the actual result will be a - square.

- -
- -
context . scale(x, y)
- -
- -

Changes the transformation matrix to apply a scaling transformation with the given characteristics.

- -
- -
context . rotate(angle)
- -
- -

Changes the transformation matrix to apply a rotation transformation with the given characteristics. The angle is in radians.

- -
- -
context . translate(x, y)
- -
- -

Changes the transformation matrix to apply a translation transformation with the given characteristics.

- -
- -
context . transform(a, b, c, d, e, f)
- -
- -

Changes the transformation matrix to apply the matrix given by the arguments as described below.

- -
- -
context . setTransform(a, b, c, d, e, f)
- -
- -

Changes the transformation matrix to the matrix given by the arguments as described below.

- -
- -
- -

The scale(x, y) method must - add the scaling transformation described by the arguments to the - transformation matrix. The x argument represents - the scale factor in the horizontal direction and the y argument represents the scale factor in the - vertical direction. The factors are multiples.

- -

The rotate(angle) method must add the rotation - transformation described by the argument to the transformation - matrix. The angle argument represents a - clockwise rotation angle expressed in radians.

- -

The translate(x, y) method must - add the translation transformation described by the arguments to the - transformation matrix. The x argument represents - the translation distance in the horizontal direction and the y argument represents the translation distance in the - vertical direction. The arguments are in coordinate space units.

- -

The transform(a, b, c, d, e, f) method must replace the current - transformation matrix with the result of multiplying the current - transformation matrix with the matrix described by:

- -
- - - - - - - - - - -
ace
bdf
001

The arguments a, b, c, d, e, and f are sometimes called - m11, m12, m21, m22, dx, - and dy or m11, m21, m12, m22, dx, and dy. Care should be taken in particular with the order - of the second and third arguments (b and c) as their order varies from API to API and APIs - sometimes use the notation m12/m21 and sometimes m21/m12 for those positions.

- -
- -

The setTransform(a, b, c, d, e, - f) method must reset the current - transform to the identity matrix, and then invoke the transform(a, b, c, d, e, - f) method with the same arguments.

- -
- - -
4.8.11.1.3 Compositing
- -
context . globalAlpha [ = value ]
- -
- -

Returns the current alpha value applied to rendering operations.

- -

Can be set, to change the alpha value. Values outside of the - range 0.0 .. 1.0 are ignored.

- -
- - -
context . globalCompositeOperation [ = value ]
- -
- -

Returns the current composition operation, from the list below.

- -

Can be set, to change the composition operation. Unknown values - are ignored.

- -
- -
- -

All drawing operations are affected by the global compositing - attributes, globalAlpha and globalCompositeOperation.

- - - -

The globalAlpha - attribute gives an alpha value that is applied to shapes and images - before they are composited onto the canvas. The value must be in the - range from 0.0 (fully transparent) to 1.0 (no additional - transparency). If an attempt is made to set the attribute to a value - outside this range, including Infinity and Not-a-Number (NaN) - values, the attribute must retain its previous value. When the - context is created, the globalAlpha attribute must - initially have the value 1.0.

- -

The globalCompositeOperation - attribute sets how shapes and images are drawn onto the existing - bitmap, once they have had globalAlpha and the - current transformation matrix applied. It must be set to a value - from the following list. In the descriptions below, the source - image, A, is the shape or image being rendered, - and the destination image, B, is the current - state of the bitmap.

- -
- -
source-atop
- -
A atop B. Display the - source image wherever both images are opaque. Display the - destination image wherever the destination image is opaque but the - source image is transparent. Display transparency elsewhere.
- -
source-in
- -
A in B. Display the - source image wherever both the source image and destination image - are opaque. Display transparency elsewhere.
- -
source-out
- -
A out B. Display the - source image wherever the source image is opaque and the - destination image is transparent. Display transparency - elsewhere.
- -
source-over (default)
- -
A over B. Display the - source image wherever the source image is opaque. Display the - destination image elsewhere.
- - -
destination-atop
- -
B atop A. Same as source-atop but using the - destination image instead of the source image and vice versa.
- -
destination-in
- -
B in A. Same as source-in but using the destination - image instead of the source image and vice versa.
- -
destination-out
- -
B out A. Same as source-out but using the destination - image instead of the source image and vice versa.
- -
destination-over
- -
B over A. Same as source-over but using the - destination image instead of the source image and vice versa.
- - - - -
lighter
- -
A plus B. Display the - sum of the source image and destination image, with color values - approaching 255 (100%) as a limit.
- - -
copy
- -
A (B is - ignored). Display the source image instead of the destination - image.
- - -
xor
- -
A xor B. Exclusive OR - of the source image and destination image.
- - -
vendorName-operationName
- -
Vendor-specific extensions to the list of - composition operators should use this syntax.
- -
- -

The operators in the above list must be treated as described by - the Porter-Duff operator given at the start of their description - (e.g. A over B). They are to - be applied as part of the drawing model, at which point the - clipping region is also applied. (Without a clipping - region, these operators act on the whole bitmap with every - operation.) [PORTERDUFF]

- -

These values are all case-sensitive — they must be used - exactly as shown. User agents must not recognize values that are not - a case-sensitive match for one of the values given - above.

- -

On setting, if the user agent does not recognize the specified - value, it must be ignored, leaving the value of globalCompositeOperation - unaffected.

- -

When the context is created, the globalCompositeOperation - attribute must initially have the value - source-over.

- -
- - -
4.8.11.1.4 Colors and styles
- -
context . strokeStyle [ = value ]
- -
- -

Returns the current style used for stroking shapes.

- -

Can be set, to change the stroke style.

- -

The style can be either a string containing a CSS color, or a - CanvasGradient or CanvasPattern - object. Invalid values are ignored.

- -
- -
context . fillStyle [ = value ]
- -
- -

Returns the current style used for filling shapes.

- -

Can be set, to change the fill style.

- -

The style can be either a string containing a CSS color, or a - CanvasGradient or CanvasPattern - object. Invalid values are ignored.

- -
- -
- - - -

The strokeStyle - attribute represents the color or style to use for the lines around - shapes, and the fillStyle - attribute represents the color or style to use inside the - shapes.

- -

Both attributes can be either strings, - CanvasGradients, or CanvasPatterns. On - setting, strings must be parsed as CSS <color> values and the color - assigned, and CanvasGradient and - CanvasPattern objects must be assigned themselves. [CSSCOLOR] If the value is a string but - cannot be parsed as a CSS <color> value, or is - neither a string, a CanvasGradient, nor a - CanvasPattern, then it must be ignored, and the - attribute must retain its previous value.

- -

When set to a CanvasPattern or - CanvasGradient object, the assignment is - live, meaning that changes made to the object after the - assignment do affect subsequent stroking or filling of shapes.

- -

On getting, if the value is a color, then the serialization of the color - must be returned. Otherwise, if it is not a color but a - CanvasGradient or CanvasPattern, then the - respective object must be returned. (Such objects are opaque and - therefore only useful for assigning to other attributes or for - comparison to other gradients or patterns.)

- -

The serialization of a color for a color value is a - string, computed as follows: if it has alpha equal to 1.0, then the - string is a lowercase six-digit hex value, prefixed with a "#" - character (U+0023 NUMBER SIGN), with the first two digits - representing the red component, the next two digits representing the - green component, and the last two digits representing the blue - component, the digits being in the range 0-9 a-f (U+0030 to U+0039 - and U+0061 to U+0066). Otherwise, the color value has alpha less - than 1.0, and the string is the color value in the CSS rgba() functional-notation format: the literal - string rgba (U+0072 U+0067 U+0062 U+0061) - followed by a U+0028 LEFT PARENTHESIS, a base-ten integer in the - range 0-255 representing the red component (using digits 0-9, U+0030 - to U+0039, in the shortest form possible), a literal U+002C COMMA - and U+0020 SPACE, an integer for the green component, a comma and a - space, an integer for the blue component, another comma and space, a - U+0030 DIGIT ZERO, if the alpha value is greater than zero then a - U+002E FULL STOP (representing the decimal point), if the alpha - value is greater than zero then one or more digits in the range 0-9 - (U+0030 to U+0039) representing the fractional part of the alpha - value, and finally a U+0029 RIGHT PARENTHESIS.

- -

When the context is created, the strokeStyle and fillStyle attributes must - initially have the string value #000000.

- -
- -

There are two types of gradients, linear gradients and radial - gradients, both represented by objects implementing the opaque - CanvasGradient interface.

- -

Once a gradient has been created (see below), - stops are placed along it to define how the colors are distributed - along the gradient. The color of the gradient at - each stop is the color specified for that stop. Between each such - stop, the colors and the alpha component must be linearly - interpolated over the RGBA space without premultiplying the alpha - value to find the color to use at that offset. Before the first - stop, the color must be the color of the first stop. After the last - stop, the color must be the color of the last stop. When there are - no stops, the gradient is transparent black.

- -
gradient . addColorStop(offset, color)
- -
- -

Adds a color stop with the given color to the gradient at the - given offset. 0.0 is the offset at one end of the gradient, 1.0 is - the offset at the other end.

- -

Throws an INDEX_SIZE_ERR exception if the offset - is out of range. Throws a SYNTAX_ERR exception if the - color cannot be parsed.

- -
- -
gradient = context . createLinearGradient(x0, y0, x1, y1)
- -
- -

Returns a CanvasGradient object that represents a - linear gradient that paints along the line given by the - coordinates represented by the arguments.

- -

If any of the arguments are not finite numbers, throws a - NOT_SUPPORTED_ERR exception.

- -
- -
gradient = context . createRadialGradient(x0, y0, r0, x1, y1, r1)
- -
- -

Returns a CanvasGradient object that represents a - radial gradient that paints along the cone given by the circles - represented by the arguments.

- -

If any of the arguments are not finite numbers, throws a - NOT_SUPPORTED_ERR exception. If either of the radii - are negative, throws an INDEX_SIZE_ERR exception.

- -
- -
- -

The addColorStop(offset, color) - method on the CanvasGradient interface adds a new stop - to a gradient. If the offset is less than 0, - greater than 1, infinite, or NaN, then an - INDEX_SIZE_ERR exception must be raised. If the color cannot be parsed as a CSS <color> - value, then a SYNTAX_ERR exception must be - raised. Otherwise, the gradient must have a new stop placed, at - offset offset relative to the whole gradient, - and with the color obtained by parsing color as - a CSS <color> value. If multiple stops are added at the same - offset on a gradient, they must be placed in the order added, with - the first one closest to the start of the gradient, and each - subsequent one infinitesimally further along towards the end point - (in effect causing all but the first and last stop added at each - point to be ignored).

- -

The createLinearGradient(x0, y0, x1, - y1) method takes four arguments - that represent the start point (x0, y0) and end point (x1, y1) of the gradient. If any of the arguments to createLinearGradient() - are infinite or NaN, the method must raise a - NOT_SUPPORTED_ERR exception. Otherwise, the method must - return a linear CanvasGradient initialized with the - specified line.

- -

Linear gradients must be rendered such that all points on a line - perpendicular to the line that crosses the start and end points have - the color at the point where those two lines cross (with the colors - coming from the interpolation and - extrapolation described above). The points in the linear - gradient must be transformed as described by the current transformation - matrix when rendering.

- -

If x0 = x1 and y0 = y1, then - the linear gradient must paint nothing.

- -

The createRadialGradient(x0, y0, r0, - x1, y1, r1) method takes six arguments, the - first three representing the start circle with origin (x0, y0) and radius r0, and the last three representing the end circle - with origin (x1, y1) and - radius r1. The values are in coordinate space - units. If any of the arguments are infinite or NaN, a - NOT_SUPPORTED_ERR exception must be raised. If either - of r0 or r1 are negative, an - INDEX_SIZE_ERR exception must be raised. Otherwise, - the method must return a radial CanvasGradient - initialized with the two specified circles.

- -

Radial gradients must be rendered by following these steps:

- -
  1. If x0 = x1 and y0 = y1 and r0 = r1, then the radial gradient must - paint nothing. Abort these steps.

  2. - -
  3. - -

    Let x(ω) = (x1-x0)ω + x0

    - -

    Let y(ω) = (y1-y0)ω + y0

    - -

    Let r(ω) = (r1-r0)ω + r0

    - -

    Let the color at ω be the color at - that position on the gradient (with the colors coming from the interpolation and extrapolation - described above).

    - -
  4. - -
  5. For all values of ω where r(ω) > 0, - starting with the value of ω nearest to - positive infinity and ending with the value of ω nearest to negative infinity, draw the - circumference of the circle with radius r(ω) at position (x(ω), y(ω)), with the color at ω, but only painting on the parts of the - canvas that have not yet been painted on by earlier circles in this - step for this rendering of the gradient.

  6. - -

This effectively creates a cone, touched by the two - circles defined in the creation of the gradient, with the part of - the cone before the start circle (0.0) using the color of the first - offset, the part of the cone after the end circle (1.0) using the - color of the last offset, and areas outside the cone untouched by - the gradient (transparent black).

- -

The points in the radial gradient must be transformed as - described by the current - transformation matrix when rendering.

- -

Gradients must be painted only where the relevant stroking or - filling effects requires that they be drawn.

- - - -
- -

Patterns are represented by objects implementing the opaque - CanvasPattern interface.

- -
pattern = context . createPattern(image, repetition)
- -
- -

Returns a CanvasPattern object that uses the given image - and repeats in the direction(s) given by the repetition argument.

- -

The allowed values for repetition are repeat (both directions), repeat-x (horizontal only), repeat-y (vertical only), and no-repeat (neither). If the repetition argument is empty, the value repeat is used.

- -

If the image has no image data, throws an - INVALID_STATE_ERR exception. If the second argument - isn't one of the allowed values, throws a SYNTAX_ERR - exception. If the image isn't yet fully decoded, then the method - returns null.

- -
- -
- -

To create objects of this type, the createPattern(image, repetition) - method is used. The first argument gives the image to use as the - pattern (either an HTMLImageElement, - HTMLCanvasElement, or HTMLVideoElement - object). Modifying this image after calling the createPattern() method - must not affect the pattern. The second argument must be a string - with one of the following values: repeat, - repeat-x, repeat-y, - no-repeat. If the empty string is specified, - repeat must be assumed. If an unrecognized value - is given, then the user agent must raise a SYNTAX_ERR - exception. User agents must recognize the four values described above - exactly (e.g. they must not do case folding). Except as specified - below, the method must return a CanvasPattern object - suitably initialized.

- -

The image argument is an instance of either - HTMLImageElement, HTMLCanvasElement, or - HTMLVideoElement.

- -

If the image argument is an - HTMLImageElement object that is not fully decodable, or if the image argument is an HTMLVideoElement - object whose readyState - attribute is either HAVE_NOTHING or HAVE_METADATA, then the - implementation must return null.

- -

If the image argument is an - HTMLCanvasElement object with either a horizontal - dimension or a vertical dimension equal to zero, then the - implementation must raise an INVALID_STATE_ERR - exception.

- - -

Patterns must be painted so that the top left of the first image - is anchored at the origin of the coordinate space, and images are - then repeated horizontally to the left and right (if the - repeat-x string was specified) or vertically up and - down (if the repeat-y string was specified) or in all - four directions all over the canvas (if the repeat - string was specified). The images are not scaled by this process; - one CSS pixel of the image must be painted on one coordinate space - unit. Of course, patterns must actually be painted only where the - stroking or filling effect requires that they be drawn, and are - affected by the current transformation matrix.

- -

If the original image data is a bitmap image, the value painted - at a point in the area of the repetitions is computed by filtering - the original image data. The user agent may use any filtering - algorithm (for example bilinear interpolation or nearest-neighbor). - When the filtering algorithm requires a pixel value from outside the - original image data, it must instead use the value from wrapping the - pixel's coordinates to the original image's dimensions. (That is, - the filter uses 'repeat' behavior, regardless of the value of - repetition.) - - -

When the createPattern() method - is passed an animated image as its image - argument, the user agent must use the poster frame of the animation, - or, if there is no poster frame, the first frame of the - animation.

- - -

When the image argument is an - HTMLVideoElement, then the frame at the current - playback position must be used as the source image, and the - source image's dimensions must be the intrinsic width and - intrinsic height - of the media resource (i.e. after any aspect-ratio - correction has been applied).

- - - - -
- - - -
4.8.11.1.5 Line styles
- -
context . lineWidth [ = value ]
- -
+
context . lineWidth [ = value ]
styles . lineWidth [ = value ]

Returns the current line width.

-

Can be set, to change the line width. Values that are not - finite values greater than zero are ignored.

+

Can be set, to change the line width. Values that are not finite values greater than zero are + ignored.

-
- -
context . lineCap [ = value ]
- -
+
context . lineCap [ = value ]
styles . lineCap [ = value ]

Returns the current line cap style.

Can be set, to change the line cap style.

-

The possible line cap styles are butt, - round, and square. Other values are - ignored.

+

The possible line cap styles are "butt", "round", and "square". Other values are ignored.

-
- -
context . lineJoin [ = value ]
- -
+
context . lineJoin [ = value ]
styles . lineJoin [ = value ]

Returns the current line join style.

Can be set, to change the line join style.

-

The possible line join styles are bevel, - round, and miter. Other values are - ignored.

+

The possible line join styles are "bevel", "round", and "miter". Other values are ignored.

-
- -
context . miterLimit [ = value ]
- -
+
context . miterLimit [ = value ]
styles . miterLimit [ = value ]

Returns the current miter limit ratio.

-

Can be set, to change the miter limit ratio. Values that are - not finite values greater than zero are ignored.

+

Can be set, to change the miter limit ratio. Values that are not finite values greater than + zero are ignored.

-
+
context . setLineDash(segments)
styles . setLineDash(segments)
-
+

Sets the current line dash pattern (as used when stroking). The argument is a list of + distances for which to alternately have the line on and the line off.

-

The lineWidth - attribute gives the width of lines, in coordinate space units. On - getting, it must return the current value. On setting, zero, - negative, infinite, and NaN values must be ignored, leaving the - value unchanged; other values must change the current value to the - new value.

+
segments = context . getLineDash()
segments = styles . getLineDash()
-

When the context is created, the lineWidth attribute must - initially have the value 1.0.

+

Returns a copy of the current line dash pattern. The array returned will always have an even + number of entries (i.e. the pattern is normalized).

-

The lineCap attribute - defines the type of endings that UAs will place on the end of - lines. The three valid values are butt, - round, and square. The butt - value means that the end of each line has a flat edge perpendicular - to the direction of the line (and that no additional line cap is - added). The round value means that a semi-circle with - the diameter equal to the width of the line must then be added on to - the end of the line. The square value means that a - rectangle with the length of the line width and the width of half - the line width, placed flat against the edge perpendicular to the - direction of the line, must be added at the end of each line.

+
context . lineDashOffset
styles . lineDashOffset
-

On getting, it must return the current value. On setting, if the - new value is one of the literal strings butt, - round, and square, then the current value - must be changed to the new value; other values must ignored, leaving - the value unchanged.

+

Returns the phase offset (in the same units as the line dash pattern).

-

When the context is created, the lineCap attribute must - initially have the value butt.

+

Can be set, to change the phase offset. Values that are not finite values are ignored.

-

The lineJoin - attribute defines the type of corners that UAs will place where two - lines meet. The three valid values are bevel, - round, and miter.

+
-

On getting, it must return the current value. On setting, if the - new value is one of the literal strings bevel, - round, and miter, then the current value - must be changed to the new value; other values must be ignored, - leaving the value unchanged.

+ -

When the context is created, the lineJoin attribute must - initially have the value miter.

+

Objects that implement the CanvasPathDrawingStyles interface have attributes and + methods (defined in this section) that control how lines are treated by the object.

-

A join exists at any point in a subpath shared by two consecutive - lines. When a subpath is closed, then a join also exists at its - first point (equivalent to its last point) connecting the first and - last lines in the subpath.

+

The lineWidth attribute gives the + width of lines, in coordinate space units. On getting, it must return the current value. On + setting, zero, negative, infinite, and NaN values must be ignored, leaving the value unchanged; + other values must change the current value to the new value.

-

In addition to the point where the join occurs, two additional - points are relevant to each join, one for each line: the two corners - found half the line width away from the join point, one - perpendicular to each line, each on the side furthest from the other - line.

+

When the object implementing the CanvasPathDrawingStyles interface is created, the + lineWidth attribute must initially have the value + 1.0.

-

A filled triangle connecting these two opposite corners with a - straight line, with the third point of the triangle being the join - point, must be rendered at all joins. The lineJoin attribute controls - whether anything else is rendered. The three aforementioned values - have the following meanings:

+
-

The bevel value means that this is all that is - rendered at joins.

+

The lineCap attribute defines the type + of endings that UAs will place on the end of lines. The three valid values are "butt", "round", and "square".

-

The round value means that a filled arc connecting - the two aforementioned corners of the join, abutting (and not - overlapping) the aforementioned triangle, with the diameter equal to - the line width and the origin at the point of the join, must be - rendered at joins.

+

On getting, it must return the current value. On setting, the current value must be changed + to the new value.

-

The miter value means that a second filled triangle - must (if it can given the miter length) be rendered at the join, - with one line being the line between the two aforementioned corners, - abutting the first triangle, and the other two being continuations of - the outside edges of the two joining lines, as long as required to - intersect without going over the miter length.

+

When the object implementing the CanvasPathDrawingStyles interface is created, the + lineCap attribute must initially have the value + "butt".

-

The miter length is the distance from the point where the join - occurs to the intersection of the line edges on the outside of the - join. The miter limit ratio is the maximum allowed ratio of the - miter length to half the line width. If the miter length would cause - the miter limit ratio to be exceeded, this second triangle must not - be rendered.

+
-

The miter limit ratio can be explicitly set using the miterLimit - attribute. On getting, it must return the current value. On setting, - zero, negative, infinite, and NaN values must be ignored, leaving - the value unchanged; other values must change the current value to - the new value.

+

The lineJoin attribute defines the type + of corners that UAs will place where two lines meet. The three valid values are + "bevel", "round", and "miter".

-

When the context is created, the miterLimit attribute must - initially have the value 10.0.

+

On getting, it must return the current value. On setting, the current value must be changed + to the new value.

- +
+ +

When the lineJoin attribute has the value "miter", strokes use the miter limit ratio to decide how to render joins. The + miter limit ratio can be explicitly set using the miterLimit attribute. On getting, it must return + the current value. On setting, zero, negative, infinite, and NaN values must be ignored, leaving + the value unchanged; other values must change the current value to the new value.

+ + +

When the object implementing the CanvasPathDrawingStyles interface is created, the + miterLimit attribute must initially have the value + 10.0.

+ +
+ +

Each CanvasPathDrawingStyles object has a dash list, which is either + empty or consists of an even number of non-negative numbers. Initially, the dash list + must be empty.

+ +

The setLineDash() method, when + invoked, must run these steps:

+ +
  1. Let a be the argument.

  2. If any value in a is not finite (e.g. an Infinity or a NaN value), or + if any value is negative (less than zero), then abort these steps (without throwing an exception; + user agents could show a message on a developer console, though, as that would be helpful for + debugging).

  3. If the number of elements in a is odd, then let a + be the concatenation of two copies of a.

  4. Let the object's dash list be a.

+ +

When the getLineDash() method is + invoked, it must return a sequence whose values are the values of the object's dash + list, in the same order.

+ +

It is sometimes useful to change the "phase" of the dash pattern, e.g. to achieve a "marching + ants" effect. The phase can be set using the lineDashOffset attribute. On getting, it must + return the current value. On setting, infinite and NaN values must be ignored, leaving the value + unchanged; other values must change the current value to the new value.

+ +

When the object implementing the CanvasPathDrawingStyles interface is created, the + lineDashOffset attribute must initially have + the value 0.0.

+ +
+ +

When a user agent is to trace a path, given an object style + that implements the CanvasPathDrawingStyles interface, it must run the following + algorithm. This algorithm returns a new path.

+ +
  1. Let path be a copy of the path being traced.

  2. Prune all zero-length line segments from path.

  3. Remove from path any subpaths containing no lines (i.e. subpaths with + just one point).

  4. Replace each point in each subpath of path other than the first point + and the last point of each subpath by a join that joins the line leading to that point to + the line leading out of that point, such that the subpaths all consist of two points (a starting + point with a line leading out of it, and an ending point with a line leading into it), one or + more lines (connecting the points and the joins), and zero or more joins (each connecting one + line to another), connected together such that each subpath is a series of one or more lines with + a join between each one and a point on each end.

  5. Add a straight closing line to each closed subpath in path connecting + the last point and the first point of that subpath; change the last point to a join (from the + previously last line to the newly added closing line), and change the first point to a join (from + the newly added closing line to the first line).

    + +
  6. If the styles dash list is empty, then jump to the step + labeled convert.

  7. Let pattern width be the concatenation of all the entries of the styles dash list, in coordinate space units.

    + +
  8. For each subpath subpath in path, run the + following substeps. These substeps mutate the subpaths in path in + vivo.

    + +
    1. Let subpath width be the length of all the lines of subpath, in coordinate space units.

      + +
    2. Let offset be the value of the styles lineDashOffset, in coordinate space + units.

    3. + +

      While offset is greater than pattern width, + decrement it by pattern width.

      + +

      While offset is less than zero, increment it by pattern + width.

      + +
    4. Define L to be a linear coordinate line defined along all lines in + subpath, such that the start of the first line in the subpath is defined + as coordinate 0, and the end of the last line in the subpath is defined as coordinate subpath width.

    5. Let position be zero minus offset.

    6. Let index be 0.

    7. Let current state be off (the other states being on + and zero-on).

    8. Dash on: Let segment length be + the value of the styles dash + list's indexth entry.

    9. Increment position by segment length.

    10. If position is greater than subpath width, + then end these substeps for this subpath and start them again for the next subpath; if there + are no more subpaths, then jump to the step labeled convert instead.

    11. If segment length is non-zero, then let current state be + on.

    12. Increment index by one.

    13. Dash off: Let segment + length be the value of the styles dash list's indexth entry.

    14. Let start be the offset position on L.

    15. Increment position by segment length.

    16. If position is less than zero, then jump to the step labeled + post-cut.

    17. If start is less than zero, then let start be + zero.

    18. If position is greater than subpath width, + then let end be the offset subpath width on L. Otherwise, let end be the offset position on L.

    19. + +

      Jump to the first appropriate step:

      + +
      If segment length is zero and current state is + off
      + +

      Do nothing, just continue to the next step.

      + +
      If current state is off
      + +

      Cut the line on which end finds itself short at end and place a point there, cutting the subpath that it was in in two; + remove all line segments, joins, points, and subpaths that are between start and end; and finally place a single point at start with no lines connecting to it.

      + +

      The point has a directionality for the purposes of drawing line caps (see below). + The directionality is the direction that the original line had at that point (i.e. when L was defined above).

      + +
      Otherwise
      + +

      Cut the line on which start finds itself into two at start and place a point there, cutting the subpath that it was in in two, and + similarly cut the line on which end finds itself short at end and place a point there, cutting the subpath that it was in in + two, and then remove all line segments, joins, points, and subpaths that are between start and end.

      + +

      If start and end are the same point, then this + results in just the line being cut in two and two points being inserted there, with nothing + being removed, unless a join also happens to be at that point, in which case the join must + be removed.

      + +
      + +
    20. Post-cut: If position is greater than subpath width, then jump to the step labeled convert.

    21. If segment length is greater than zero, then let + positioned-at-on-dash be false.

    22. Increment index by one. If it is equal to the number of entries in + the styles dash list, then let index be + 0.

    23. Return to the step labeled dash on.

    + +
  9. + +

    Convert: This is the step that converts the path to a new path that represents its + stroke.

    + +

    Create a new path that describes the edge of the areas + that would be covered if a straight line of length equal to the styles + lineWidth was swept along each subpath in path while being kept at an angle such that the line is orthogonal to the path + being swept, replacing each point with the end cap necessary to satisfy the styles lineCap attribute as + described previously and elaborated below, and replacing each join with the join necessary to + satisfy the styles lineJoin + type, as defined below.

    + +

    Caps: Each point has a flat edge perpendicular to the direction of the line + coming out of it. This is then augmented according to the value of the styles lineCap. The "butt" value means that no additional line cap is added. The "round" value means that a semi-circle with the diameter equal to the styles lineWidth width must + additionally be placed on to the line coming out of each point. The "square" value means that a rectangle with the length of the styles lineWidth width and the + width of half the styles lineWidth width, placed flat against the edge + perpendicular to the direction of the line coming out of the point, must be added at each + point.

    + +

    Points with no lines coming out of them must have two caps placed back-to-back as if it was + really two points connected to each other by an infinitesimally short straight line in the + direction of the point's directionality (as defined above).

    + +

    Joins: In addition to the point where a join occurs, two additional points + are relevant to each join, one for each line: the two corners found half the line width away + from the join point, one perpendicular to each line, each on the side furthest from the other + line.

    + +

    A triangle connecting these two opposite corners with a straight line, with the third point + of the triangle being the join point, must be added at all joins. The lineJoin attribute controls whether anything else is + rendered. The three aforementioned values have the following meanings:

    + +

    The "bevel" value means that this is all that is rendered at + joins.

    + +

    The "round" value means that an arc connecting the two aforementioned + corners of the join, abutting (and not overlapping) the aforementioned triangle, with the + diameter equal to the line width and the origin at the point of the join, must be added at + joins.

    + +

    The "miter" value means that a second triangle must (if it can given + the miter length) be added at the join, with one line being the line between the two + aforementioned corners, abutting the first triangle, and the other two being continuations of + the outside edges of the two joining lines, as long as required to intersect without going over + the miter length.

    + +

    The miter length is the distance from the point where the join occurs to the intersection of + the line edges on the outside of the join. The miter limit ratio is the maximum allowed ratio of + the miter length to half the line width. If the miter length would cause the miter limit ratio + (as set by the style miterLimit attribute) to be exceeded, then this second + triangle must not be added.

    + + + +

    The subpaths in the newly created path must be oriented such that for any point, the number + of times a half-infinite straight line drawn from that point crosses a subpath is even if and + only if the number of times a half-infinite straight line drawn from that same point crosses a + subpath going in one direction is equal to the number of times it crosses a subpath going in the + other direction.

    + +
  10. Return the newly created path.

+ + + + + + +
4.12.5.1.4 Text styles
+ +
context . font [ = value ]
styles . font [ = value ]
+ +

Returns the current font settings.

+ +

Can be set, to change the font. The syntax is the same as for the CSS 'font' + property; values that cannot be parsed as CSS font values are ignored.

+ +

Relative keywords and lengths are computed relative to the font of the canvas + element.

+ +
context . textAlign [ = value ]
styles . textAlign [ = value ]
+ +

Returns the current text alignment settings.

+ +

Can be set, to change the alignment. The possible values are and their meanings are given + below. Other values are ignored. The default is "start".

+ +
context . textBaseline [ = value ]
styles . textBaseline [ = value ]
+ +

Returns the current baseline alignment settings.

+ +

Can be set, to change the baseline alignment. The possible values and their meanings are + given below. Other values are ignored. The default is "alphabetic".

+ +
context . direction [ = value ]
styles . direction [ = value ]
+ +

Returns the current directionality.

+ +

Can be set, to change the directionality. The possible values and their meanings are given + below. Other values are ignored. The default is "inherit".

+ +
+ + + +

Objects that implement the CanvasTextDrawingStyles interface have attributes + (defined in this section) that control how text is laid out (rasterized or outlined) by the + object. Such objects can also have a font style source object. For + CanvasRenderingContext2D objects, this is the canvas element + referenced by the context's canvas property.

+ + + +

The font IDL attribute, on setting, must + be parsed as a CSS <'font'> + value (but without supporting property-independent style sheet syntax like 'inherit'), and + the resulting font must be assigned to the context, with the 'line-height' component + forced to 'normal', with the 'font-size' component converted to CSS pixels, and with system fonts being computed to explicit values. If the + new value is syntactically incorrect (including using property-independent style sheet syntax like + 'inherit' or 'initial'), then it must be ignored, without assigning a new font value. [CSS]

+ +

Font family names must be interpreted in the context of the font style source + object when the font is to be used; any fonts embedded using @font-face or loaded using FontFace objects that are visible to the + font style source object must therefore be available once they are loaded. (Each font style source + object has a font source, which determines what fonts are available.) If a font + is used before it is fully loaded, or if the font style source object does not have + that font in scope at the time the font is to be used, then it must be treated as if it was an + unknown font, falling back to another as described by the relevant CSS specifications. [CSSFONTS] [CSSFONTLOAD]

+ +

On getting, the font attribute must return the serialized form of the current font of the context (with + no 'line-height' component). [CSSOM]

+ +
+ +

For example, after the following statement:

+ +
context.font = 'italic 400 12px/2 Unknown Font, sans-serif';
+ +

...the expression context.font would evaluate to the string "italic 12px "Unknown Font", sans-serif". The "400" + font-weight doesn't appear because that is the default value. The line-height doesn't appear + because it is forced to "normal", the default value.

+

When the object implementing the CanvasTextDrawingStyles interface is created, the + font of the context must be set to 10px sans-serif. When the 'font-size' component is + set to lengths using percentages, 'em' or 'ex' units, or the 'larger' or + 'smaller' keywords, these must be interpreted relative to the computed value of the + 'font-size' property of the font style source object at the time that + the attribute is set, if it is an element. When the 'font-weight' component is set to + the relative values 'bolder' and 'lighter', these must be interpreted relative to the + computed value of the 'font-weight' property of the font style + source object at the time that the attribute is set, if it is an element. If the computed values are undefined for a particular case (e.g. because + the font style source object is not an element or is not being + rendered), then the relative keywords must be interpreted relative to the normal-weight + 10px sans-serif default.

+ +

The textAlign IDL attribute, on + getting, must return the current value. On setting, the current value must be changed to the new + value. When the object implementing the CanvasTextDrawingStyles interface is + created, the textAlign attribute must initially + have the value start.

+ +

The textBaseline IDL attribute, on + getting, must return the current value. On setting, the current value must be changed to the new + value. When the object implementing the CanvasTextDrawingStyles interface is + created, the textBaseline attribute must + initially have the value alphabetic.

+ +

The direction IDL attribute, on + getting, must return the current value. On setting, the current value must be changed to the new + value. When the object implementing the CanvasTextDrawingStyles interface is + created, the direction attribute must initially + have the value "inherit".

+ + + +

The textAlign attribute's allowed keywords are + as follows:

+ +
start +

Align to the start edge of the text (left side in left-to-right text, right side in + right-to-left text).

end +

Align to the end edge of the text (right side in left-to-right text, left side in + right-to-left text).

left +

Align to the left.

right +

Align to the right.

center +

Align to the center.

+ +

The textBaseline + attribute's allowed keywords correspond to alignment points in the + font:

+ +

The top of the em square is roughly at the top of the glyphs in a font, the hanging baseline is where some glyphs like आ are anchored, the middle is half-way between the top of the em square and the bottom of the em square, the alphabetic baseline is where characters like Á, ÿ, f, and Ω are anchored, the ideographic baseline is where glyphs like 私 and 達 are anchored, and the bottom of the em square is roughly at the bottom of the glyphs in a font. The top and bottom of the bounding box can be far from these baselines, due to glyphs extending far outside the em square.

+ +

The keywords map to these alignment points as follows:

+ +
top +
The top of the em square
hanging +
The hanging baseline
middle +
The middle of the em square
alphabetic +
The alphabetic baseline
ideographic +
The ideographic baseline
bottom +
The bottom of the em square
+ +

The direction attribute's allowed keywords are + as follows:

+ +
ltr + +

Treat input to the text preparation algorithm as left-to-right text.

rtl + +

Treat input to the text preparation algorithm as right-to-left text.

inherit + +

Default to the directionality of the canvas element or Document + as appropriate.

+ +

The text preparation algorithm is as follows. It takes as input a string text + , a CanvasTextDrawingStyles object target, and an optional length + maxWidth. It returns an array of glyph shapes, each positioned on a common coordinate + space, a physical alignment whose value is one of left, right, and + center, and an inline box. (Most callers of this algorithm ignore the + physical alignment and the inline box.)

+ +
  1. If maxWidth was provided but is less than or equal to zero or equal to NaN, + then return an empty array.

  2. Replace all ASCII whitespace in text with U+0020 SPACE + characters.

  3. Let font be the current font of target, as given + by that object's font attribute.

  4. + +

    Apply the appropriate step from the following list to determine the value of direction:

    + +
    If the target object's direction attribute has the value "ltr"
    Let direction be 'ltr'.
    If the target object's direction attribute has the value "rtl"
    Let direction be 'rtl'.
    If the target object's font style source object is an + element
    Let direction be the directionality of the target object's font style source object.
    If the target object's font style source object is a + Document with a non-null document element
    Let direction be the directionality of the target + object's font style source object's document element.
    Otherwise
    Let direction be 'ltr'.
    + +
  5. Form a hypothetical infinitely-wide CSS line box containing a single + inline box containing the text text, with all the properties at their + initial values except the 'font' property of the inline box set to + font, the 'direction' property of the inline box set to + direction, and the 'white-space' property set to 'pre'. [CSS]

  6. If maxWidth was provided and the hypothetical width of the + inline box in the hypothetical line box is greater than + maxWidth CSS pixels, then change font to have a + more condensed font (if one is available or if a reasonably readable one can be synthesized by + applying a horizontal scale factor to the font) or a smaller font, and return to the previous + step.

  7. + +

    The anchor point is a point on the inline box, and the physical + alignment is one of the values left, right, and center. These + variables are determined by the textAlign and + textBaseline values as follows:

    + +

    Horizontal position:

    + +
    If textAlign is left
    If textAlign is start and direction is + 'ltr'
    If textAlign is end and direction is 'rtl'
    Let the anchor point's horizontal position be the left edge of the + inline box, and let physical alignment be left.
    If textAlign is right
    If textAlign is end and direction is 'ltr'
    If textAlign is start and direction is + 'rtl'
    Let the anchor point's horizontal position be the right edge of the + inline box, and let physical alignment be right.
    If textAlign is center
    Let the anchor point's horizontal position be half way between the left + and right edges of the inline box, and let physical alignment be + center.
    + +

    Vertical position:

    + +
    If textBaseline is top
    Let the anchor point's vertical position be the top of the em box of + the first available font of the inline box.
    If textBaseline is hanging
    Let the anchor point's vertical position be the hanging baseline of the + first available font of the inline box.
    If textBaseline is middle
    Let the anchor point's vertical position be half way between the bottom + and the top of the em box of the first available font of the inline box.
    If textBaseline is alphabetic
    Let the anchor point's vertical position be the alphabetic baseline of + the first available font of the inline box.
    If textBaseline is ideographic
    Let the anchor point's vertical position be the ideographic baseline of + the first available font of the inline box.
    If textBaseline is bottom
    Let the anchor point's vertical position be the bottom of the em box of + the first available font of the inline box.
    + +
  8. -
    4.8.11.1.6 Shadows
    +

    Let result be an array constructed by iterating over each glyph in the + inline box from left to right (if any), adding to the array, for each glyph, the + shape of the glyph as it is in the inline box, positioned on a coordinate space + using CSS pixels with its origin is at the anchor + point.

    + +
  9. Return result, physical alignment, and the inline + box.

+ + +
4.12.5.1.5 Building paths
-

All drawing operations are affected by the four global shadow - attributes.

+

Objects that implement the CanvasPath interface have a path. A path has a list of zero or + more subpaths. Each subpath consists of a list of one or more points, connected by straight or + curved line segments, and a flag indicating whether the subpath is closed or not. A + closed subpath is one where the last point of the subpath is connected to the first point of the + subpath by a straight line. Subpaths with only one point are ignored when painting the path.

-
context . shadowColor [ = value ]
- -
- -

Returns the current shadow color.

- -

Can be set, to change the shadow color. Values that cannot be parsed as CSS colors are ignored.

- -
- -
context . shadowOffsetX [ = value ]
-
context . shadowOffsetY [ = value ]
- -
- -

Returns the current shadow offset.

- -

Can be set, to change the shadow offset. Values that are not finite numbers are ignored.

- -
- -
context . shadowBlur [ = value ]
- -
- -

Returns the current level of blur applied to shadows.

- -

Can be set, to change the blur level. Values that are not finite numbers greater than or equal to zero are ignored.

- -
- -
- -

The shadowColor - attribute sets the color of the shadow.

- -

When the context is created, the shadowColor attribute - initially must be fully-transparent black.

- -

On getting, the serialization of the color must be returned.

- -

On setting, the new value must be parsed as a CSS - <color> value and the color assigned. If the value - cannot be parsed as a CSS <color> value then it must be - ignored, and the attribute must retain its previous value. [CSSCOLOR]

- -

The shadowOffsetX - and shadowOffsetY - attributes specify the distance that the shadow will be offset in - the positive horizontal and positive vertical distance - respectively. Their values are in coordinate space units. They are - not affected by the current transformation matrix.

- -

When the context is created, the shadow offset attributes must - initially have the value 0.

- -

On getting, they must return their current value. On setting, the - attribute being set must be set to the new value, except if the - value is infinite or NaN, in which case the new value must be - ignored.

- -

The shadowBlur - attribute specifies the level of the blurring effect. (The units do - not map to coordinate space units, and are not affected by the - current transformation matrix.)

- -

When the context is created, the shadowBlur attribute must - initially have the value 0.

- -

On getting, the attribute must return its current value. On - setting the attribute must be set to the new value, except if the - value is negative, infinite or NaN, in which case the new value must - be ignored.

- -

Shadows are only drawn - if the opacity component of the alpha component of the color - of shadowColor is - non-zero and either the shadowBlur is non-zero, or - the shadowOffsetX - is non-zero, or the shadowOffsetY is - non-zero.

- -

It is likely that this will change: browser - vendors have indicated an interest in changing the processing model - for shadows such that they only draw when the composition operator - is "source-over" (the default). Read - more...

- -

When shadows are drawn, they must be rendered as follows:

- -
  1. Let A be an infinite transparent black - bitmap on which the source image for which a shadow is being - created has been rendered.

  2. - -
  3. Let B be an infinite transparent black - bitmap, with a coordinate space and an origin identical to A.

  4. - -
  5. Copy the alpha channel of A to B, offset by shadowOffsetX in the - positive x direction, and shadowOffsetY in the - positive y direction.

  6. - -
  7. If shadowBlur is greater than - 0:

    - -
    1. Let σ be half the value of - shadowBlur.

    2. - -
    3. Perform a 2D Gaussian Blur on B, - using σ as the standard deviation.

      -
    4. - -

    User agents may limit values of σ to - an implementation-specific maximum value to avoid exceeding - hardware limitations during the Gaussian blur operation.

    - -
  8. - -
  9. Set the red, green, and blue components of every pixel in - B to the red, green, and blue components - (respectively) of the color of shadowColor.

  10. - -
  11. Multiply the alpha component of every pixel in B by the alpha component of the color of shadowColor.

  12. - -
  13. The shadow is in the bitmap B, and is - rendered as part of the drawing model described below.

  14. - -
- -

If the current composition operation is copy, shadows effectively won't render - (since the shape will overwrite the shadow).

- - -
4.8.11.1.7 Simple shapes (rectangles)
- -

There are three methods that immediately draw rectangles to the - bitmap. They each take four arguments; the first two give the x and y coordinates of the top - left of the rectangle, and the second two give the width w and height h of the rectangle, - respectively.

- -
- -

The current - transformation matrix must be applied to the following four - coordinates, which form the path that must then be closed to get the - specified rectangle: (x, y), (x+w, y), - (x+w, - y+h), - (x, y+h).

- -

Shapes are painted without affecting the current path, and are - subject to the clipping region, - and, with the exception of clearRect(), also shadow effects, global alpha, and global composition - operators.

- -
- -
context . clearRect(x, y, w, h)
- -
- -

Clears all pixels on the canvas in the given rectangle to transparent black.

- -
- -
context . fillRect(x, y, w, h)
- -
- -

Paints the given rectangle onto the canvas, using the current fill style.

- -
- -
context . strokeRect(x, y, w, h)
- -
- -

Paints the box that outlines the given rectangle onto the canvas, using the current stroke style.

- -
- -
- -

The clearRect(x, y, w, h) method must clear the pixels in the - specified rectangle that also intersect the current clipping region - to a fully transparent black, erasing any previous image. If either - height or width are zero, this method has no effect.

- -

The fillRect(x, y, w, h) method must paint the specified - rectangular area using the fillStyle. If either height - or width are zero, this method has no effect.

- -

The strokeRect(x, y, w, h) method must stroke the specified - rectangle's path using the strokeStyle, lineWidth, lineJoin, and (if - appropriate) miterLimit attributes. If - both height and width are zero, this method has no effect, since - there is no path to stroke (it's a point). If only one of the two is - zero, then the method will draw a line instead (the path for the - outline is just a straight line along the non-zero dimension).

- -
- - -
4.8.11.1.8 Complex shapes (paths)
- -

The context always has a current path. There is only one current - path, it is not part of the drawing state.

- -

A path has a list of zero or more subpaths. Each - subpath consists of a list of one or more points, connected by - straight or curved lines, and a flag indicating whether the subpath - is closed or not. A closed subpath is one where the last point of - the subpath is connected to the first point of the subpath by a - straight line. Subpaths with fewer than two points are ignored when - painting the path.

- -
context . beginPath()
- -
- -

Resets the current path.

- -
- -
context . moveTo(x, y)
- -
+

Paths have a need new subpath flag. When this + flag is set, certain APIs create a new subpath rather than extending the previous one. When a + path is created, its need new subpath flag must be + set.

+ +

When an object implementing the CanvasPath interface is created, its path must be initialized to zero subpaths.

+ +
context . moveTo(x, y)
path . moveTo(x, y)

Creates a new subpath with the given point.

-
+
context . closePath()
path . closePath()
-
context . closePath()
+

Marks the current subpath as closed, and starts a new subpath with a point the same as the + start and end of the newly closed subpath.

-
+
context . lineTo(x, y)
path . lineTo(x, y)
-

Marks the current subpath as closed, and starts a new subpath with a point the same as the start and end of the newly closed subpath.

- -
- -
context . lineTo(x, y)
- -
- -

Adds the given point to the current subpath, connected to the previous one by a straight line.

- -
- -
context . quadraticCurveTo(cpx, cpy, x, y)
- -
- -

Adds the given point to the current subpath, connected to the previous one by a quadratic Bézier curve with the given control point.

- -
- -
context . bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y)
- -
- -

Adds the given point to the current subpath, connected to the previous one by a cubic Bézier curve with the given control points.

- -
- -
context . arcTo(x1, y1, x2, y2, radius)
- -
- -

Adds an arc with the given control points and radius to the - current subpath, connected to the previous point by a straight +

Adds the given point to the current subpath, connected to the previous one by a straight line.

-

Throws an INDEX_SIZE_ERR exception if the given +

context . quadraticCurveTo(cpx, cpy, x, y)
path . quadraticCurveTo(cpx, cpy, x, y)
+ +

Adds the given point to the current subpath, connected to the previous one by a quadratic + Bézier curve with the given control point.

+ +
context . bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y)
path . bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y)
+ +

Adds the given point to the current subpath, connected to the previous one by a cubic + Bézier curve with the given control points.

+ +
context . arcTo(x1, y1, x2, y2, radiusX [, radiusY, rotation ] )
path . arcTo(x1, y1, x2, y2, radiusX [, radiusY, rotation ] )
+ +

Adds an arc with the given control points and radius to the current subpath, connected to the + previous point by a straight line.

+ +

If two radii are provided, then the first controls the width of the arc's ellipse, and the + second controls the height. If only one is provided, or if they are the same, then the arc is + from a circle. In the case of an ellipse, the rotation argument controls the clockwise + inclination of the ellipse relative to the x-axis.

+ +

Throws an "IndexSizeError" DOMException if the given radius is negative.

-
+
+ + + + +
-
context . arc(x, y, radius, startAngle, endAngle [, anticlockwise ] )
-
-

Adds points to the subpath such that the arc described by the - circumference of the circle described by the arguments, starting - at the given start angle and ending at the given end angle, going - in the given direction (defaulting to clockwise), is added to the - path, connected to the previous point by a straight line.

+
context . arc(x, y, radius, startAngle, endAngle [, anticlockwise ] )
path . arc(x, y, radius, startAngle, endAngle [, anticlockwise ] )
-

Throws an INDEX_SIZE_ERR exception if the given +

Adds points to the subpath such that the arc described by the circumference of the circle + described by the arguments, starting at the given start angle and ending at the given end angle, + going in the given direction (defaulting to clockwise), is added to the path, connected to the + previous point by a straight line.

+ +

Throws an "IndexSizeError" DOMException if the given radius is negative.

-
+
+ + +
-
context . rect(x, y, w, h)
-
+ +
context . ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle [, anticlockwise] )
path . ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle [, anticlockwise] )
+ +

Adds points to the subpath such that the arc described by the circumference of the ellipse + described by the arguments, starting at the given start angle and ending at the given end angle, + going in the given direction (defaulting to clockwise), is added to the path, connected to the + previous point by a straight line.

+ +

Throws an "IndexSizeError" DOMException if the given + radius is negative.

+ +
context . rect(x, y, w, h)
path . rect(x, y, w, h)

Adds a new closed subpath to the path, representing the given rectangle.

-
+
+ + + +

The following methods allow authors to manipulate the paths + of objects implementing the CanvasPath interface.

+ +

For objects implementing the CanvasDrawPath and CanvasTransform + interfaces, the points passed to the methods, and the resulting lines added to current + default path by these methods, must be transformed according to the current transformation matrix before being added to + the path.

+ +

The moveTo(x, y) + method, when invoked, must run these steps:

+ +
  1. If either of the arguments are infinite or NaN, then abort these steps.

  2. Create a new subpath with the specified point as its first (and only) point.

+ +

When the user agent is to ensure there is a subpath for a coordinate (x, + y) on a path, the user agent must check to see if + the path has its need new subpath flag set. If it + does, then the user agent must create a new subpath with the point (x, y) as + its first (and only) point, as if the moveTo() method + had been called, and must then unset the path's need new + subpath flag.

+ + +

The closePath() method, when invoked, + must do nothing if the object's path has no subpaths. Otherwise, it must mark the last subpath as + closed, create a new subpath whose first point is the same as the previous subpath's first point, + and finally add this new subpath to the path.

+ +

If the last subpath had more than one point in its list of points, then this is + equivalent to adding a straight line connecting the last point back to the first point, thus + "closing" the shape, and then repeating the last (possibly implied) moveTo() call.

+ + +

New points and the lines connecting them are added to subpaths using the methods described + below. In all cases, the methods only modify the last subpath in the object's path.

+ + +

The lineTo(x, y) + method, when invoked, must run these steps:

+ +
  1. If either of the arguments are infinite or NaN, then abort these steps.

  2. If the object's path has no subpaths, then ensure there is a subpath for + (x, y).

  3. Otherwise, connect the last point in the subpath to the given point (x, + y) using a straight line, and then add the given point (x, y) to + the subpath.

+ +

The quadraticCurveTo(cpx, + cpy, x, y) method, when invoked, must run these + steps:

+ +
  1. If any of the arguments are infinite or NaN, then abort these steps.

  2. Ensure there is a subpath for (cpx, + cpy)

  3. Connect the last point in the subpath to the given point (x, y) + using a quadratic Bézier curve with control point (cpx, cpy). [BEZIER]

  4. Add the given point (x, y) to the subpath.

-
context . fill()
+

The bezierCurveTo(cp1x, + cp1y, cp2x, cp2y, x, y) + method, when invoked, must run these steps:

-
+
  1. If any of the arguments are infinite or NaN, then abort these steps.

  2. Ensure there is a subpath for (cp1x, + cp1y).

  3. Connect the last point in the subpath to the given point (x, y) + using a cubic Bézier curve with control points (cp1x, cp1y) and + (cp2x, cp2y). [BEZIER]

  4. Add the point (x, y) to the subpath.

-

Fills the subpaths with the current fill style.

+
-
+

The arcTo(x1, y1, x2, + y2, radiusX, radiusY, rotation) method, + when invoked, must run these steps:

-
context . stroke()
+
  1. If any of the arguments are infinite or NaN, then abort these steps.

  2. Ensure there is a subpath for (x1, + y1).

  3. If either radiusX or radiusY are negative, then throw an + "IndexSizeError" DOMException.

  4. If radiusY is omitted, then set radiusY to + radiusX.

  5. Let the point (x0, y0) be the last point in the subpath, transformed + by the inverse of the current transformation + matrix (so that it is in the same coordinate system as the points passed to the + method).

  6. If the point (x0, y0) is equal to the point (x1, + y1), or if the point (x1, y1) is equal to the point + (x2, y2), or if both radiusX and radiusY are zero, + then add the point (x1, y1) to the subpath, and connect that point to the + previous point (x0, y0) by a straight line.

  7. Otherwise, if the points (x0, y0), (x1, y1), + and (x2, y2) all lie on a single straight line, then add the point + (x1, y1) to the subpath, and connect that point to the previous point + (x0, y0) by a straight line.

  8. Otherwise, let The Arc be the shortest arc given by circumference of the + ellipse that has radius radiusX on the major axis and radius radiusY on the + minor axis, and whose semi-major axis is rotated rotation radians clockwise from the + positive x-axis, and that has one point tangent to the half-infinite line that crosses the point + (x0, y0) and ends at the point (x1, y1), and that has + a different point tangent to the half-infinite line that ends at the point (x1, + y1) and crosses the point (x2, y2). The points at which this + ellipse touches these two lines are called the start and end tangent points respectively. Connect + the point (x0, y0) to the start tangent point by a straight line, adding + the start tangent point to the subpath, and then connect the start tangent point to the end + tangent point by The Arc, adding the end tangent point to the subpath.

-
+
-

Strokes the subpaths with the current stroke style.

+

The arc(x, y, + radius, startAngle, endAngle, anticlockwise) and ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise) methods draw arcs.

-
+

The arc() method is equivalent to the ellipse() method in the case where the two radii are equal. + When the arc() method is invoked, it must act as if the + ellipse() method had been invoked with the radiusX and radiusY arguments set to the value of the radius argument, the rotation argument set to zero, and the + other arguments set to the same values as their identically named arguments on the arc() method.

-
context . drawSystemFocusRing(element)
+

The ellipse() method, when invoked, must run these + steps:

-
+
  1. If any of the arguments are infinite or NaN, then abort these steps.

  2. If either radiusX or radiusY are negative, then throw an + "IndexSizeError" DOMException.

  3. If the object's path has any subpaths, then add a straight line from the last point in the + subpath to the start point of the arc.

  4. +

    Add the start and end points of the arc to the subpath, and connect them with an arc. The arc + and its start and end points are defined as follows:

    -

    If the given element is focused, draws a focus ring around the - current path, following the platform conventions for focus - rings.

    +

    Consider an ellipse that has its origin at (x, y), that has a + major-axis radius radiusX and a minor-axis radius radiusY, and that is + rotated about its origin such that its semi-major axis is inclined rotation radians + clockwise from the x-axis.

    -
+

If anticlockwise is false and endAngle-startAngle is equal to or greater than , or, if anticlockwise is true and startAngle-endAngle is equal to or greater than , then the arc is the whole circumference of this ellipse, and the point + at startAngle along this circle's circumference, measured in radians clockwise from + the ellipse's semi-major axis, acts as both the start point and the end point.

-
shouldDraw = context . drawCustomFocusRing(element)
+

Otherwise, the points at startAngle and endAngle along this circle's + circumference, measured in radians clockwise from the ellipse's semi-major axis, are the start + and end points respectively, and the arc is the path along the circumference of this ellipse + from the start point to the end point, going anti-clockwise if anticlockwise is true, + and clockwise otherwise. Since the points are on the ellipse, as opposed to being simply angles + from zero, the arc can never cover an angle greater than + radians.

-
+

Even if the arc covers the entire circumference of the ellipse and there are no + other points in the subpath, the path is not closed unless the closePath() method is appropriately invoked.

+ -

If the given element is focused, and the user has configured - his system to draw focus rings in a particular manner (for - example, high contrast focus rings), draws a focus ring around the - current path and returns false.

+
-

Otherwise, returns true if the given element is focused, and - false otherwise. This can thus be used to determine when to draw a - focus ring (see the - example below).

+

The rect(x, y, w, + h) method, when invoked, must run these steps:

-
+
  1. If any of the arguments are infinite or NaN, then abort these steps.

  2. Create a new subpath containing just the four points (x, y), + (x+w, y), (x+w, + y+h), (x, y+h), in that order, with those + four points connected by straight lines.

  3. Mark the subpath as closed.

  4. Create a new subpath with the point (x, y) as the only point in the + subpath.

-
context . scrollPathIntoView()
+ -
+ -

Scrolls the current path into view. This is especially useful - on devices with small screens, where the whole canvas might not be - visible at once.

-
-
context . clip()
+
4.12.5.1.6 Path2D objects
-
+

Path2D objects can be used to declare paths that are then later used on + objects implementing the CanvasDrawPath interface. In addition to many of the APIs + described in earlier sections, Path2D objects have methods to combine paths, and to + add text to paths.

-

Further constrains the clipping region to the given path.

+
path = new Path2D()
-
+

Creates a new empty Path2D object.

-
context . isPointInPath(x, y)
+
path = new Path2D(path)
-
+

Creates a new Path2D object that is a copy of the argument.

-

Returns true if the given point is in the current path.

+
path = new Path2D(paths [, fillRule ] )
-
+

Creates a new Path2D object that describes a path that outlines the given paths, using the given fill rule.

-
+
path = new Path2D(d)
-

Initially, the context's path must have zero subpaths.

+

Creates a new path with the path described by the argument, interpreted as SVG path data. [SVG]

-

The points and lines added to the path by these methods must be - transformed according to the current transformation - matrix as they are added.

+
path . addPath(path [, transform ] )
+

Adds to the path the path given by the argument.

-

The beginPath() - method must empty the list of subpaths so that the context once - again has zero subpaths.

+
+ -

The moveTo(x, y) method must - create a new subpath with the specified point as its first (and - only) point.

+

The Path2D() constructor, when invoked, must return a + newly created Path2D object.

-

When the user agent is to ensure there is a subpath - for a coordinate (x, y), the - user agent must check to see if the context has any subpaths, and if - it does not, then the user agent must create a new subpath with the - point (x, y) as its first - (and only) point, as if the moveTo() method had been - called.

+
+

The Path2D(path) + constructor, when invoked, must return a newly created Path2D object, to which the + subpaths of the argument are added. (In other words, it returns a copy of the argument.)

-

The closePath() - method must do nothing if the context has no subpaths. Otherwise, it - must mark the last subpath as closed, create a new subpath whose - first point is the same as the previous subpath's first point, and - finally add this new subpath to the path.

+
-

If the last subpath had more than one point in its - list of points, then this is equivalent to adding a straight line - connecting the last point back to the first point, thus "closing" - the shape, and then repeating the last (possibly implied) moveTo() call.

+

The Path2D(paths, + fillRule) constructor, when invoked, must run these steps:

+
  1. -

    New points and the lines connecting them are added to subpaths - using the methods described below. In all cases, the methods only - modify the last subpath in the context's paths.

    +

    Run the appropriate step from the following list, based on the constructor's second + argument:

    +
    If it is "nonzero"
    -

    The lineTo(x, y) method must - ensure there is a subpath for (x, y) if the context has - no subpaths. Otherwise, it must connect the last point in the - subpath to the given point (x, y) using a straight line, and must then add the given - point (x, y) to the - subpath.

    +

    Let merged path be a path that + consists of a set of non-overlapping subpaths that exactly outline the points from which, in + any of the paths provided in the constructor's first + argument, the number of times a half-infinite straight line drawn from that point crosses a + subpath going in one direction is not equal to the number of times it crosses a subpath going + in the other direction.

    +
    If it is "evenodd"
    -

    The quadraticCurveTo(cpx, cpy, x, - y) method must ensure there - is a subpath for (cpx, - cpy), and then must connect the last - point in the subpath to the given point (x, y) using a quadratic Bézier curve with control - point (cpx, cpy), and must - then add the given point (x, y) to the subpath. [BEZIER]

    +

    Let merged path be a path that + consists of a set of non-overlapping subpaths that exactly outline the points from which, in + any of the paths provided in the constructor's first + argument, the number of times a half-infinite straight line drawn from that point crosses that + path is odd.

    +
    -

    The bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y) method must - ensure there is a subpath for (cp1x, cp1y), and then must - connect the last point in the subpath to the given point (x, y) using a cubic Bézier - curve with control points (cp1x, cp1y) and (cp2x, cp2y). Then, it must add the point (x, y) to the subpath. [BEZIER]

    +

    The subpaths in merged path must be oriented such that for any point, + the number of times a half-infinite straight line drawn from that point crosses a subpath is + even if and only if the number of times a half-infinite straight line drawn from that same point + crosses a subpath going in one direction is equal to the number of times it crosses a subpath + going in the other direction.

    -

    The arcTo(x1, y1, x2, - y2, radius) - method must first ensure there is a subpath for (x1, y1). Then, the behavior depends on the - arguments and the last point in the subpath, as described below.

    +
  2. Add all the subpaths in merged path to the Path2D + object.

  3. Set the Path2D object's need new subpath flag.

-

Negative values for radius must cause the - implementation to raise an INDEX_SIZE_ERR - exception.

- -

Let the point (x0, y0) be - the last point in the subpath.

- -

If the point (x0, y0) is - equal to the point (x1, y1), - or if the point (x1, y1) is - equal to the point (x2, y2), - or if the radius radius is zero, then the method - must add the point (x1, y1) - to the subpath, and connect that point to the previous point (x0, y0) by a straight line.

- -

Otherwise, if the points (x0, y0), (x1, y1), and (x2, y2) all lie on a single straight line, then the - method must add the point (x1, y1) to the subpath, and connect that point to the - previous point (x0, y0) by a - straight line.

- -

Otherwise, let The Arc be the shortest arc - given by circumference of the circle that has radius radius, and that has one point tangent to the - half-infinite line that crosses the point (x0, - y0) and ends at the point (x1, y1), and that has a different - point tangent to the half-infinite line that ends at the point (x1, y1) and crosses the point - (x2, y2). The points at - which this circle touches these two lines are called the start and - end tangent points respectively. The method must connect the point - (x0, y0) to the start - tangent point by a straight line, adding the start tangent point to - the subpath, and then must connect the start tangent point to the - end tangent point by The Arc, adding the end - tangent point to the subpath.

- -

The arc(x, y, radius, - startAngle, endAngle, anticlockwise) method draws an arc. If - the context has any subpaths, then the method must add a straight - line from the last point in the subpath to the start point of the - arc. In any case, it must draw the arc between the start point of - the arc and the end point of the arc, and add the start and end - points of the arc to the subpath. The arc and its start and end - points are defined as follows:

- -

Consider a circle that has its origin at (x, - y) and that has radius radius. The points at startAngle - and endAngle along this circle's circumference, - measured in radians clockwise from the positive x-axis, are the - start and end points respectively.

- -

If the anticlockwise argument is omitted or - false and endAngle-startAngle is equal to or greater than , or, if the anticlockwise - argument is true and startAngle-endAngle is - equal to or greater than , then the arc - is the whole circumference of this circle.

- -

Otherwise, the arc is the path along the circumference of this - circle from the start point to the end point, going anti-clockwise - if the anticlockwise argument is true, and - clockwise otherwise. Since the points are on the circle, as opposed - to being simply angles from zero, the arc can never cover an angle - greater than radians. If the two points are the - same, or if the radius is zero, then the arc is defined as being of - zero length in both directions.

- -

Negative values for radius must cause the - implementation to raise an INDEX_SIZE_ERR - exception.

- -

The rect(x, y, w, h) method must create a new subpath - containing just the four points (x, y), (x+w, - y), (x+w, y+h), - (x, y+h), with those four points connected by straight - lines, and must then mark the subpath as closed. It must then create - a new subpath with the point (x, y) as the only point in the subpath.

- - - - - -

The fill() - method must fill all the subpaths of the current path, using - fillStyle, and using - the non-zero winding number rule. Open subpaths must be implicitly - closed when being filled (without affecting the actual - subpaths).

- -

Thus, if two overlapping but otherwise independent - subpaths have opposite windings, they cancel out and result in no - fill. If they have the same winding, that area just gets painted - once.

- -

The stroke() method - must calculate the strokes of all the subpaths of the current path, - using the lineWidth, - lineCap, lineJoin, and (if - appropriate) miterLimit attributes, and - then fill the combined stroke area using the strokeStyle - attribute.

- -

Since the subpaths are all stroked as one, - overlapping parts of the paths in one stroke operation are treated - as if their union was what was painted.

- -

Paths, when filled or stroked, must be painted without affecting - the current path, and must be subject to shadow effects, global alpha, the clipping region, and global composition - operators. (Transformations affect the path when the path is - created, not when it is painted, though the stroke style is - still affected by the transformation during painting.)

- -

Zero-length line segments must be pruned before stroking a - path. Empty subpaths must be ignored.

- -

The drawSystemFocusRing(element) method, when invoked, must run - the following steps:

- -
  1. If element is not focused or is not a - descendant of the element with whose context the method is - associated, then abort these steps.

  2. - -
  3. - -

    If the user has requested the use of particular focus rings - (e.g. high-contrast focus rings), or if the element would have a focus ring drawn around it, - then draw a focus ring of the appropriate style along the path, - following platform conventions, and abort these steps.

    - -

    Some platforms only draw focus rings around - elements that have been focused from the keyboard, and not those - focused from the mouse. Other platforms simply don't draw focus - rings around some elements at all unless relevant accessibility - features are enabled. This API is intended to follow these - conventions. User agents that implement distinctions based on the - manner in which the element was focused are encouraged to classify - focus driven by the focus() method - based on the kind of user interaction event from which the call - was triggered (if any).

    - -

    The focus ring should not be subject to the shadow effects, the global alpha, or the global composition - operators, but should be subject to the clipping region.

    - -
  4. - -
  5. - -

    Optionally, inform the user that the - focus is at the location given by the path. User agents may wait - until the next time the event loop reaches its - "update the rendering" step to optionally inform the user.

    - -
  6. - -

The drawCustomFocusRing(element) method, when invoked, must run - the following steps:

- -
  1. If element is not focused or is not a - descendant of the element with whose context the method is - associated, then return false and abort these steps.

  2. - -
  3. - -

    If the user has requested the use of particular focus rings - (e.g. high-contrast focus rings), then draw a focus ring of the - appropriate style along the path, return false, and abort these - steps.

    - -

    The focus ring should not be subject to the shadow effects, the global alpha, or the global composition - operators, but should be subject to the clipping region.

    - -
  4. - -
  5. - -

    Optionally, inform the user that the - focus is at the location given by the path. User agents may wait - until the next time the event loop reaches its - "update the rendering" step to optionally inform the user.

    - -
  6. - -
  7. Return true.

  8. - -

The scrollPathIntoView() - method, when invoked, must run the following steps:

- -
  1. Let notional child be a hypothetical - element that is a rendered child of the canvas element - whose dimensions are exactly the rectangle of the bounding box of - the current path.

  2. - -
  3. Scroll notional child into view with the align to top flag set.

    - -
  4. Optionally, inform the user that the - caret and/or selection cover the specified - rectangle of the canvas. User agents may wait until the next - time the event loop reaches its "update the rendering" - step to optionally inform the user.

  5. +
    -

"Inform the user", as used in this - section, could mean calling a system accessibility API, which would - notify assistive technologies such as magnification tools. To - properly drive magnification based on a focus change, a system - accessibility API driving a screen magnifier needs the bounds for - the newly focused object. The methods above are intended to enable - this by allowing the user agent to report the bounding box of the - path used to render the focus ring as the bounds of the element element passed as an argument, if that - element is focused, and the bounding box of the area to which the - user agent is scrolling as the bounding box of the current - selection.

+

The Path2D(d) + constructor, when invoked, must run these steps:

-

The clip() - method must create a new clipping region by calculating - the intersection of the current clipping region and the area - described by the current path, using the non-zero winding number - rule. Open subpaths must be implicitly closed when computing the - clipping region, without affecting the actual subpaths. The new +

  1. + +

    Parse and interpret the d argument according to the SVG specification's + rules for path data, thus obtaining an SVG path. [SVG]

    + +

    The resulting path could be empty. SVG defines error handling rules for parsing + and applying path data.

    + +
  2. Let (x, y) be the last point in the SVG + path.

  3. Create a new Path2D object and add all the subpaths in the SVG path, if any, + to that Path2D object.

    + +
  4. Create a new subpath in the Path2D object with (x, y) as the only point in the subpath.

  5. Return the Path2D object as the constructed object.

+ +
+ +

The addPath(b, + transform) method, when invoked on a Path2D object + a, must run these steps:

+ +
  1. If the Path2D object b has no subpaths, then abort these + steps.

  2. Create a copy of all the subpaths in b. Let this copy be known as c.

  3. Let matrix be the result of creating a DOMMatrix from a dictionary + transform, with ignore3D set to true.

  4. Transform all the coordinates and lines in c by the transform matrix + matrix.

  5. Let (x, y) be the last point in the last subpath + of c.

  6. Add all the subpaths in c to a.

  7. Create a new subpath in a with (x, y) as the only point in the subpath.

+ + + + +
4.12.5.1.7 Transformations
+ +

Objects that implement the CanvasTransform interface have a current + transformation matrix, as well as methods (described in this section) to manipulate it. When + an object implementing the CanvasTransform interface is created, its transformation + matrix must be initialized to the identity transform.

+ +

The current transformation matrix is applied to coordinates when creating the + current default path, and when painting text, shapes, and Path2D + objects, on objects implementing the CanvasTransform interface.

+ + +

Most of the API uses DOMMatrix objects rather than this API. This API + remains mostly for historical reasons.

+ + + +

The transformations must be performed in reverse order.

+ +

For instance, if a scale transformation that doubles the width is applied to the + canvas, followed by a rotation transformation that rotates drawing operations by a quarter turn, + and a rectangle twice as wide as it is tall is then drawn on the canvas, the actual result will be + a square.

+ + + +
context . scale(x, y)
+ +

Changes the current transformation matrix to apply a scaling transformation + with the given characteristics.

+ +
context . rotate(angle)
+ +

Changes the current transformation matrix to apply a rotation transformation + with the given characteristics. The angle is in radians.

+ +
context . translate(x, y)
+ +

Changes the current transformation matrix to apply a translation transformation + with the given characteristics.

+ +
context . transform(a, b, c, d, e, f)
+ +

Changes the current transformation matrix to apply the matrix given by the + arguments as described below.

+ +
matrix = context . getTransform()
+ +

Returns a copy of the current transformation matrix, as a newly created + DOMMatrix object.

+ +
context . setTransform(a, b, c, d, e, f)
+ +

Changes the current transformation matrix to the matrix given by the + arguments as described below.

+ +
context . setTransform(transform)
+ +

Changes the current transformation matrix to the matrix represented by + the passed DOMMatrix2DInit dictionary.

+ +
context . resetTransform()
+ +

Changes the current transformation matrix to the identity transform.

+ +
+ + + +

The scale(x, y) + method, when invoked, must run these steps:

+ +
  1. If either of the arguments are infinite or NaN, then abort these steps.

  2. Add the scaling transformation described by the arguments to the current + transformation matrix. The x argument represents the scale factor in the + horizontal direction and the y argument represents the scale factor in the vertical + direction. The factors are multiples.

+ +

The rotate(angle) method, + when invoked, must run these steps:

+ +
  1. If angle is infinite or NaN, then abort these steps.

  2. Add the rotation transformation described by the argument to the current + transformation matrix. The angle argument represents a clockwise rotation angle + expressed in radians.

+ +

The translate(x, + y) method, when invoked, must run these steps:

+ +
  1. If either of the arguments are infinite or NaN, then abort these steps.

  2. Add the translation transformation described by the arguments to the current + transformation matrix. The x argument represents the translation distance in + the horizontal direction and the y argument represents the translation distance in the + vertical direction. The arguments are in coordinate space units.

+ +

The transform(a, b, + c, d, e, f) method, when invoked, must + run these steps:

+ +
  1. If any of the arguments are infinite or NaN, then abort these steps.

  2. Replace the current transformation matrix with the result of multiplying the + current transformation matrix with the matrix described by:

+ + + +
ace
bdf
001
+ +

The arguments a, b, c, d, + e, and f are sometimes called m11, m12, + m21, m22, dx, and dy or m11, + m21, m12, m22, dx, and dy. Care ought to be + taken in particular with the order of the second and third arguments (b and + c) as their order varies from API to API and APIs sometimes use the notation + m12/m21 and sometimes m21/m12 for those positions.

+ + + +

The getTransform() method, when + invoked, must return a newly created DOMMatrix representing a copy of the + current transformation matrix matrix of the context.

+ +

This returned object is not live, so updating it will not affect the + current transformation matrix, and updating the current transformation + matrix will not affect an already returned DOMMatrix.

+ +

The setTransform(a, b, + c, d, e, f) method, when invoked, must + run these steps:

+ +
  1. If any of the arguments are infinite or NaN, then abort these steps.

  2. Reset the current transformation matrix to the identity matrix.

  3. Invoke the transform(a, b, c, + d, e, f) method with the same arguments.

+ +

The setTransform(transform) method, when invoked, + must reset the current transformation matrix to the value represented by the result + of creating a DOMMatrix from a + dictionary transform, with ignore3D set to true.

+ +

The resetTransform() method, + when invoked, must reset the current transformation matrix to the identity + matrix.

+ + + + + +
4.12.5.1.8 Image sources for 2D rendering contexts
+ +

Some methods on the CanvasDrawImage and CanvasFillStrokeStyles + interfaces take the union type CanvasImageSource as an argument.

+ +

This union type allows objects implementing any of the following interfaces to be used as image + sources:

+ + + +

Although not formally specified as such, SVG image + elements are expected to be implemented nearly identical to img elements. That is, + SVG image elements share the fundamental concepts and features of + img elements.

+ +

The ImageBitmap interface can be created from a number of other + image-representing types, including ImageData.

+ +

When a user agent is required to check the usability of the image + argument, where image is a CanvasImageSource object, the + user agent must run these steps, which return either good, bad, or + aborted:

+ +
  1. If image is an HTMLOrSVGImageElement object that is in the broken state, then throw an + "InvalidStateError" DOMException, return aborted, + and abort these steps.

  2. If image is an HTMLOrSVGImageElement object that is not fully decodable, or if image is an + HTMLVideoElement object whose readyState + attribute is either HAVE_NOTHING or HAVE_METADATA, then return bad and abort these + steps.

  3. If image is an HTMLOrSVGImageElement object with an + intrinsic width or intrinsic height (or both) equal to zero, then + return bad and abort these steps.

  4. If image is an HTMLCanvasElement object with either a horizontal + dimension or a vertical dimension equal to zero, then return bad and abort these + steps.

  5. If image is an ImageBitmap object with its + [[Detached]] internal slot value set to true, then throw an + "InvalidStateError" DOMException, return aborted, + and abort these steps.

  6. Return good.

+ +

When a CanvasImageSource object represents an HTMLOrSVGImageElement, + the element's image must be used as the source image.

+ +

Specifically, when a CanvasImageSource object represents an animated image in an + HTMLOrSVGImageElement, the user agent must use the default image of the animation + (the one that the format defines is to be used when animation is not supported or is disabled), + or, if there is no such image, the first frame of the animation, when rendering the image for + CanvasRenderingContext2D APIs.

+ +

When a CanvasImageSource object represents an HTMLVideoElement, then + the frame at the current playback position when the method with the argument is + invoked must be used as the source image when rendering the image for + CanvasRenderingContext2D APIs, and the source image's dimensions must be the intrinsic width and intrinsic height of the media resource + (i.e. after any aspect-ratio correction has been applied).

+ +

When a CanvasImageSource object represents an HTMLCanvasElement, the + element's bitmap must be used as the source image.

+ +

When a CanvasImageSource object represents an element that is being + rendered and that element has been resized, the original image data of the source image + must be used, not the image as it is rendered (e.g. width and + height attributes on the source element have no effect on how + the object is interpreted when rendering the image for CanvasRenderingContext2D + APIs).

+ +

When a CanvasImageSource object represents an ImageBitmap, the + object's bitmap image data must be used as the source image.

+ +

The image argument is not origin-clean if it is an + HTMLOrSVGImageElement or HTMLVideoElement whose origin is + not the same as the origin specified by the entry settings + object, or if it is an HTMLCanvasElement whose bitmap's origin-clean flag is false.

+ + + +
4.12.5.1.9 Fill and stroke styles
+ +
context . fillStyle [ = value ]
+ +

Returns the current style used for filling shapes.

+ +

Can be set, to change the fill style.

+ +

The style can be either a string containing a CSS color, or a CanvasGradient or + CanvasPattern object. Invalid values are ignored.

+ +
context . strokeStyle [ = value ]
+ +

Returns the current style used for stroking shapes.

+ +

Can be set, to change the stroke style.

+ +

The style can be either a string containing a CSS color, or a CanvasGradient or + CanvasPattern object. Invalid values are ignored.

+ +
+ + + + + +

Objects that implement the CanvasFillStrokeStyles interface have attributes and + methods (defined in this section) that control how shapes are treated by the object.

+ +

The fillStyle attribute represents the + color or style to use inside shapes, and the strokeStyle attribute represents the color + or style to use for the lines around the shapes.

+ +

Both attributes can be either strings, CanvasGradients, or + CanvasPatterns. On setting, strings must be parsed as CSS <color> values and the color assigned, and + CanvasGradient and CanvasPattern objects must be assigned themselves. [CSSCOLOR] If the value is a string but cannot be parsed as a CSS + <color> value, then it must be ignored, and the attribute must retain its previous + value. + + If the new value is a CanvasPattern object that is marked as not origin-clean, then the + CanvasRenderingContext2D's origin-clean flag must be set to false. + +

+ +

When set to a CanvasPattern or CanvasGradient object, the assignment + is live, meaning that changes made to the object after the assignment do affect + subsequent stroking or filling of shapes.

+ +

On getting, if the value is a color, then the serialization of the color must be returned. Otherwise, if it is not a color but a + CanvasGradient or CanvasPattern, then the respective object must be + returned. (Such objects are opaque and therefore only useful for assigning to other attributes or + for comparison to other gradients or patterns.)

+ +

The serialization of a color for a color + value is a string, computed as follows: if it has alpha equal to 1.0, then the string is a + lowercase six-digit hex value, prefixed with a "#" character (U+0023 NUMBER SIGN), with the first + two digits representing the red component, the next two digits representing the green component, + and the last two digits representing the blue component, the digits being ASCII lower hex digits. Otherwise, the color value has alpha less than + 1.0, and the string is the color value in the CSS rgba() + functional-notation format: the literal string "rgba" (U+0072 U+0067 U+0062 + U+0061) followed by a U+0028 LEFT PARENTHESIS, a base-ten integer in the range 0-255 representing + the red component (using ASCII digits in the shortest form possible), a literal + U+002C COMMA and U+0020 SPACE, an integer for the green component, a comma and a space, an integer + for the blue component, another comma and space, a U+0030 DIGIT ZERO, if the alpha value is + greater than zero then a U+002E FULL STOP (representing the decimal point), if the alpha value is + greater than zero then one or more ASCII digits representing the fractional part of + the alpha, and finally a U+0029 + RIGHT PARENTHESIS. User agents must express the fractional part of the alpha value, if any, with + the level of precision necessary for the alpha value, when reparsed, to be interpreted as the same + alpha value.

+ + +

When the context is created, the fillStyle and strokeStyle attributes + must initially have the string value #000000.

+ +

When the value is a color, it must not be affected by the transformation matrix when used to + draw on bitmaps.

+ + + +
+ +

There are two types of gradients, linear gradients and radial gradients, both represented by + objects implementing the opaque CanvasGradient interface.

+ +

Once a gradient has been created (see below), stops are placed along it to + define how the colors are distributed along the gradient. The color of the + gradient at each stop is the color specified for that stop. Between each such stop, the colors and + the alpha component must be linearly interpolated over the RGBA space without premultiplying the + alpha value to find the color to use at that offset. Before the first stop, the color must be the + color of the first stop. After the last stop, the color must be the color of the last stop. When + there are no stops, the gradient is transparent black.

+ +
gradient . addColorStop(offset, color)
+ +

Adds a color stop with the given color to the gradient at the given offset. 0.0 is the offset + at one end of the gradient, 1.0 is the offset at the other end.

+ +

Throws an "IndexSizeError" DOMException if the offset + is out of range. Throws a "SyntaxError" DOMException if + the color cannot be parsed.

+ +
gradient = context . createLinearGradient(x0, y0, x1, y1)
+ +

Returns a CanvasGradient object that represents a + linear gradient that paints along the line given by the + coordinates represented by the arguments.

+ +
gradient = context . createRadialGradient(x0, y0, r0, x1, y1, r1)
+ +

Returns a CanvasGradient object that represents a + radial gradient that paints along the cone given by the circles + represented by the arguments.

+ +

If either of the radii are negative, throws an + "IndexSizeError" DOMException exception.

+ +
+ + + +

The addColorStop(offset, + color) method on the CanvasGradient interface adds a new stop + to a gradient. If the offset is less than 0 or greater than 1 then an + "IndexSizeError" DOMException must be thrown. If the + color cannot be parsed as a CSS <color> value, then a + "SyntaxError" DOMException must be thrown. Otherwise, the + gradient must have a new stop placed, at offset offset relative to the whole gradient, + and with the color obtained by parsing + color as a CSS <color> value. If multiple stops are added at the same + offset on a gradient, then they must be placed in the order added, with the first one closest to + the start of the gradient, and each subsequent one infinitesimally further along towards the end + point (in effect causing all but the first and last stop added at each point to be ignored).

+ +

The createLinearGradient(x0, + y0, x1, y1) method takes four arguments that + represent the start point (x0, y0) and end point (x1, + y1) of the gradient. The method, when invoked, must return a linear + CanvasGradient initialized with the specified line.

+ +

Linear gradients must be rendered such that all points on a line perpendicular to the line that + crosses the start and end points have the color at the point where those two lines cross (with the + colors coming from the interpolation and extrapolation described + above). The points in the linear gradient must be transformed as described by the current transformation matrix when rendering.

+ +

If x0 = x1 and y0 = y1, then the linear + gradient must paint nothing.

+ +

The createRadialGradient(x0, + y0, r0, x1, y1, r1) method + takes six arguments, the first three representing the start circle with origin (x0, + y0) and radius r0, and the last three representing the end circle with + origin (x1, y1) and radius r1. The values are in coordinate space + units. If either of r0 or r1 are negative, then an + "IndexSizeError" DOMException must be thrown. Otherwise, + the method, when invoked, must return a radial CanvasGradient initialized with the + two specified circles.

+ +

Radial gradients must be rendered by following these steps:

+ +
  1. If x0 = x1 and y0 = y1 and r0 = r1, then the radial gradient must + paint nothing. Abort these steps.

  2. + +

    Let x(ω) = (x1-x0)ω + x0

    + +

    Let y(ω) = (y1-y0)ω + y0

    + +

    Let r(ω) = (r1-r0)ω + r0

    + +

    Let the color at ω be the color at that position on the gradient + (with the colors coming from the interpolation and extrapolation + described above).

    + +
  3. For all values of ω where r(ω) > 0, starting with the value of ω nearest to positive infinity and ending with the value of ω nearest to negative infinity, draw the circumference of the circle with + radius r(ω) at position (x(ω), y(ω)), with the + color at ω, but only painting on the parts of the bitmap that have not + yet been painted on by earlier circles in this step for this rendering of the gradient.

+ +

This effectively creates a cone, touched by the two circles defined in the + creation of the gradient, with the part of the cone before the start circle (0.0) using the color + of the first offset, the part of the cone after the end circle (1.0) using the color of the last + offset, and areas outside the cone untouched by the gradient (transparent black).

+ +

The resulting radial gradient must then be transformed as described by the current transformation matrix when rendering.

+ +

Gradients must be painted only where the relevant stroking or filling effects requires that + they be drawn.

+ + + +
+ +

Patterns are represented by objects implementing the opaque CanvasPattern + interface.

+ +
pattern = context . createPattern(image, repetition)
+ +

Returns a CanvasPattern object that uses the given image and repeats in the + direction(s) given by the repetition argument.

+ +

The allowed values for repetition are repeat (both + directions), repeat-x (horizontal only), repeat-y + (vertical only), and no-repeat (neither). If the repetition argument is empty, the value repeat is used.

+ +

If the image isn't yet fully decoded, then nothing is drawn. If the image is a canvas with no + data, throws an "InvalidStateError" DOMException.

+ +
pattern . setTransform(transform)
+ +

Sets the transformation matrix that will be used when rendering the pattern during a fill or + stroke painting operation.

+ +
+ + + +

The createPattern(image, + repetition) method, when invoked, must run these steps:

+ +
  1. Let image be the first argument and repetition be + the second argument.

  2. Check the usability of the image argument. If this + returns aborted, then an exception has been thrown and the method doesn't return anything; + abort these steps. If it returns bad, then return null and abort these steps. Otherwise it + returns good; continue with these steps.

  3. If repetition is the empty string, then set it to "repeat".

    + +
  4. If repetition is not a case-sensitive match for one of + "repeat", "repeat-x", "repeat-y", or "no-repeat", then throw a + "SyntaxError" DOMException and abort these steps.

  5. Create a new CanvasPattern object with the image image + and the repetition behavior given by repetition.

  6. If the image argument is not origin-clean, then mark the + CanvasPattern object as not + origin-clean.

  7. Return the CanvasPattern object.

+ +

Modifying the image used when creating a CanvasPattern object + after calling the createPattern() method must + not affect the pattern(s) rendered by the CanvasPattern object.

+ +

Patterns have a transformation matrix, which controls how the pattern is used when it is + painted. Initially, a pattern's transformation matrix must be the identity transform.

+ +

The setTransform(transform) method, + when invoked, must reset the pattern's transformation matrix to the value represented by the + result of creating a DOMMatrix + from a dictionary transform, with ignore3D set to true.

+ +

When a pattern is to be rendered within an area, the user agent must run the following steps to + determine what is rendered:

+ +
  1. Create an infinite transparent black bitmap.

  2. + +

    Place a copy of the image on the bitmap, anchored such that its top left corner is at the + origin of the coordinate space, with one coordinate space unit per CSS + pixel of the image, then place repeated copies of this image horizontally to the left and + right, if the repetition behavior is "repeat-x", or vertically up and + down, if the repetition behavior is "repeat-y", or in all four + directions all over the bitmap, if the repetition behavior is "repeat".

    + +

    If the original image data is a bitmap image, then the value painted at a point in the area + of the repetitions is computed by filtering the original image data. When scaling up, if the + imageSmoothingEnabled attribute is + set to false, then the image must be rendered using nearest-neighbor interpolation. Otherwise, + the user agent may use any filtering algorithm (for example bilinear interpolation or + nearest-neighbor). User agents which support multiple filtering algorithms may use the value of + the imageSmoothingQuality attribute + to guide the choice of filtering algorithm. When such a filtering algorithm requires a pixel + value from outside the original image data, it must instead use the value from wrapping the + pixel's coordinates to the original image's dimensions. (That is, the filter uses 'repeat' + behavior, regardless of the value of the pattern's repetition behavior.)

    + +
  3. Transform the resulting bitmap according to the pattern's transformation matrix.

  4. Transform the resulting bitmap again, this time according to the current transformation matrix.

  5. Replace any part of the image outside the area in which the pattern is to be rendered with + transparent black.

  6. The resulting bitmap is what is to be rendered, with the same origin and same + scale.

+ +
+ +

If a radial gradient or repeated pattern is used when the transformation matrix is singular, + then the resulting style must be transparent black (otherwise the gradient or pattern would be + collapsed to a point or line, leaving the other pixels undefined). Linear gradients and solid + colors always define all points even with singular transformation matrices.

+ + + + + + +
4.12.5.1.10 Drawing rectangles to the bitmap
+ +

Objects that implement the CanvasRect interface provide the following methods for + immediately drawing rectangles to the bitmap. The methods each take four arguments; the first two + give the x and y coordinates of the top left of the rectangle, and the + second two give the width w and height h of the rectangle, respectively.

+ + + +

The current transformation matrix must be + applied to the following four coordinates, which form the path that must then be closed to get the + specified rectangle: (x, y), (x+w, y), (x+w, y+h), (x, y+h).

+ +

Shapes are painted without affecting the current default path, and are subject to + the clipping region, and, with the exception of clearRect(), also shadow + effects, global alpha, and global composition operators.

+ + + +
context . clearRect(x, y, w, h)
+ +

Clears all pixels on the bitmap in the given rectangle to transparent black.

+ +
context . fillRect(x, y, w, h)
+ +

Paints the given rectangle onto the bitmap, using the current fill style.

+ +
context . strokeRect(x, y, w, h)
+ +

Paints the box that outlines the given rectangle onto the bitmap, using the current stroke + style.

+ +
+ + + +

The clearRect(x, y, + w, h) method, when invoked, must run these steps:

+ +
  1. If any of the arguments are infinite or NaN, then abort these steps.

  2. Let pixels be the set of pixels in the specified rectangle that also + intersect the current clipping region.

  3. Clear the pixels in pixels to a fully transparent black, erasing any + previous image.

+ +

If either height or width are zero, this method has no effect, since the set of + pixels would be empty.

+ +

The fillRect(x, y, + w, h) method, when invoked, must must run these steps:

+ +
  1. If any of the arguments are infinite or NaN, then abort these steps.

  2. If either w or h are zero, then abort these steps.

  3. Paint the specified rectangular area using the fillStyle.

    +
+ +

The strokeRect(x, y, + w, h) method, when invoked, must run these steps:

+ +
  1. If any of the arguments are infinite or NaN, then abort these steps.

  2. Take the result of tracing the path described below, + using the CanvasPathDrawingStyles interface's line styles, and fill it with the + strokeStyle.

+ +

If both w and h are zero, the path has a single subpath + with just one point (x, y), and no lines, and this method + thus has no effect (the trace a path algorithm returns an empty path in that + case).

+ +

If just one of either w or h is zero, then the path has + a single subpath consisting of two points, with coordinates (x, y) and (x+w, y+h), in that order, connected by a single straight line.

+ +

Otherwise, the path has a single subpath consisting of four points, with coordinates (x, y), (x+w, y), (x+w, + y+h), and (x, y+h), + connected to each other in that order by straight lines.

+ + + + + +
4.12.5.1.11 Drawing text to the bitmap
+ +
context . fillText(text, x, y [, maxWidth ] )
context . strokeText(text, x, y [, maxWidth ] )
+ +

Fills or strokes (respectively) the given text at the given position. If a maximum width is + provided, the text will be scaled to fit that width if necessary.

+ +
metrics = context . measureText(text)
+ +

Returns a TextMetrics object with the metrics of the given text in the current + font.

+ +
metrics . width
metrics . actualBoundingBoxLeft
metrics . actualBoundingBoxRight
metrics . fontBoundingBoxAscent
metrics . fontBoundingBoxDescent
metrics . actualBoundingBoxAscent
metrics . actualBoundingBoxDescent
metrics . emHeightAscent
metrics . emHeightDescent
metrics . hangingBaseline
metrics . alphabeticBaseline
metrics . ideographicBaseline
+ +

Returns the measurement described below.

+ +
+ + + +

Objects that implement the CanvasText interface provide the following methods for + rendering text.

+ +

The fillText() and strokeText() methods take three or four arguments, + text, x, y, and optionally maxWidth, and render the + given text at the given (x, y) coordinates ensuring that the text + isn't wider than maxWidth if specified, using the current font, textAlign, and textBaseline values. Specifically, when the methods + are invoked, the user agent must run these steps:

+ +
  1. If any of the arguments are infinite or NaN, then abort these steps.

  2. Run the text preparation algorithm, passing it text, the object + implementing the CanvasText interface, and, if the maxWidth argument was + provided, that argument. Let glyphs be the result.

    + +
  3. Move all the shapes in glyphs to the right by x + CSS pixels and down by y CSS + pixels.

  4. + +

    Paint the shapes given in glyphs, as transformed by the current transformation matrix, with each CSS pixel in the coordinate space of glyphs mapped to one + coordinate space unit.

    + +

    For fillText(), fillStyle must be applied to the shapes and strokeStyle must be ignored. For strokeText(), the reverse holds: strokeStyle must be applied to the result of tracing the shapes using the object implementing the + CanvasText interface for the line styles, and fillStyle must be ignored.

    + +

    These shapes are painted without affecting the current path, and are subject to shadow effects, global + alpha, the clipping region, and global composition operators.

    + +
+ + + +

The measureText() method takes one + argument, text. When the method is invoked, the user agent must run the + text preparation algorithm, passing it text and the object implementing + the CanvasText interface, and then using the returned inline box must + create a new TextMetrics object with its attributes set as described in the following + list. + + If doing these measurements requires using a font that has an origin that is not the + same as that of the Document object that owns the + canvas element (even if "using a font" means just checking if that font has a + particular glyph in it before falling back to another font), then the method, when invoked, must + throw a "SecurityError" DOMException. + + Otherwise, it must return the new TextMetrics object. + [CSS] + (This is a fingerprinting vector.) +

+ + + +
width attribute

The width of that inline box, in CSS pixels. (The + text's advance width.)

actualBoundingBoxLeft attribute
+ +

The distance parallel to the baseline from the alignment point given by the textAlign attribute to the left side of the bounding + rectangle of the given text, in CSS pixels; positive numbers + indicating a distance going left from the given alignment point. + +

The sum of this value and the next (actualBoundingBoxRight) can be wider than + the width of the inline box (width), in + particular with slanted fonts where characters overhang their advance width.

+ +
actualBoundingBoxRight attribute
+ +

The distance parallel to the baseline from the alignment point given by the textAlign attribute to the right side of the bounding + rectangle of the given text, in CSS pixels; positive numbers + indicating a distance going right from the given alignment point.

+ +
fontBoundingBoxAscent attribute
+ +

The distance from the horizontal line indicated by the textBaseline attribute to the top of the highest + bounding rectangle of all the fonts used to render the text, in CSS + pixels; positive numbers indicating a distance going up from the given baseline.

+ +

This value and the next are useful when rendering a background that have to have + a consistent height even if the exact text being rendered changes. The actualBoundingBoxAscent attribute (and + its corresponding attribute for the descent) are useful when drawing a bounding box around + specific text.

+ +
fontBoundingBoxDescent attribute

The distance from the horizontal line indicated by the textBaseline attribute to the bottom of the lowest + bounding rectangle of all the fonts used to render the text, in CSS + pixels; positive numbers indicating a distance going down from the given + baseline.

actualBoundingBoxAscent attribute
+ +

The distance from the horizontal line indicated by the textBaseline attribute to the top of the bounding + rectangle of the given text, in CSS pixels; positive numbers + indicating a distance going up from the given baseline. + +

This number can vary greatly based on the input text, even if the first font + specified covers all the characters in the input. For example, the actualBoundingBoxAscent of a lowercase + "o" from an alphabetic baseline would be less than that of an uppercase "F". The value can + easily be negative; for example, the distance from the top of the em box (textBaseline value "top") to the top of the bounding rectangle when + the given text is just a single comma "," would likely (unless the font is + quite unusual) be negative.

+ +
actualBoundingBoxDescent attribute

The distance from the horizontal line indicated by the textBaseline attribute to the bottom of the bounding + rectangle of the given text, in CSS pixels; positive numbers + indicating a distance going down from the given baseline.

emHeightAscent attribute

The distance from the horizontal line indicated by the textBaseline attribute to the highest top of the em + squares in the line box, in CSS pixels; positive numbers + indicating that the given baseline is below the top of that em square (so this value will usually + be positive). Zero if the given baseline is the top of that em square; half the font size if the + given baseline is the middle of that em square.

emHeightDescent attribute

The distance from the horizontal line indicated by the textBaseline attribute to the lowest bottom of the em + squares in the line box, in CSS pixels; positive numbers + indicating that the given baseline is below the bottom of that em square (so this value will + usually be negative). (Zero if the given baseline is the bottom of that em square.)

hangingBaseline attribute

The distance from the horizontal line indicated by the textBaseline attribute to the hanging baseline of the + line box, in CSS pixels; positive numbers indicating that + the given baseline is below the hanging baseline. (Zero if the given baseline is the hanging + baseline.)

alphabeticBaseline attribute

The distance from the horizontal line indicated by the textBaseline attribute to the alphabetic baseline of + the line box, in CSS pixels; positive numbers indicating + that the given baseline is below the alphabetic baseline. (Zero if the given baseline is the + alphabetic baseline.)

ideographicBaseline attribute

The distance from the horizontal line indicated by the textBaseline attribute to the ideographic baseline of + the line box, in CSS pixels; positive numbers indicating + that the given baseline is below the ideographic baseline. (Zero if the given baseline is the + ideographic baseline.)

+ +

Glyphs rendered using fillText() and + strokeText() can spill out of the box given by the + font size (the em square size) and the width returned by measureText() (the text width). Authors are encouraged + to use the bounding box values described above if this is an issue.

+ +

A future version of the 2D context API might provide a way to render fragments of + documents, rendered using CSS, straight to the canvas. This would be provided in preference to a + dedicated way of doing multiline layout.

+ + + +
4.12.5.1.12 Drawing paths to the canvas
+ +

Objects that implement the CanvasDrawPath interface have a current default + path. There is only one current default path, it is not part of the + drawing state. The current default path is a path, as described above.

+ +
context . beginPath()
+ +

Resets the current default path.

+ +
context . fill( [ fillRule ] )
context . fill(path [, fillRule ] )
+ +

Fills the subpaths of the current default path or the given path with the + current fill style, obeying the given fill rule.

+ +
context . stroke()
context . stroke(path)
+ +

Strokes the subpaths of the current default path or the given path with the + current stroke style.

+ +
context . clip( [ fillRule ] )
context . clip(path [, fillRule ] )
+ +

Further constrains the clipping region to the current default path or the given + path, using the given fill rule to determine what points are in the path.

+ +
context . resetClip()
+ +

Unconstrains the clipping region.

+ +
context . isPointInPath(x, y [, fillRule ] )
context . isPointInPath(path, x, y [, fillRule ] )
+ +

Returns true if the given point is in the current default path or the given + path, using the given fill rule to determine what points are in the path.

+ +
context . isPointInStroke(x, y)
context . isPointInStroke(path, x, y)
+ +

Returns true if the given point would be in the region covered by the stroke of the + current default path or the given path, given the current stroke style.

+ +

Spec bugs: 28217

+ + + +

The beginPath() method, when invoked, + must empty the list of subpaths in the context's current default path so that the it + once again has zero subpaths.

+ +

Where the following method definitions use the term intended path, it means the + Path2D argument, if one was provided, or the current default path + otherwise.

+ +

When the intended path is a Path2D object, the coordinates and lines of its + subpaths must be transformed according to the + current transformation matrix on the object implementing the + CanvasTransform interface when used by these methods (without affecting the + Path2D object itself). When the intended path is the current default + path, it is not affected by the transform. (This is because transformations already affect + the current default path when it is constructed, so applying it when it is painted as + well would result in a double transformation.)

+ +

The fill() method, when invoked, must fill + all the subpaths of the intended path, using fillStyle, and using the fill rule indicated + by the fillRule argument. Open subpaths must be implicitly closed when being filled + (without affecting the actual subpaths).

+ +

The stroke() method, when invoked, must + trace the intended path, using this + CanvasPathDrawingStyles object for the line styles, and then fill the resulting path + using the strokeStyle attribute, using the non-zero winding rule.

+ +

As a result of how the algorithm to trace a path is defined, + overlapping parts of the paths in one stroke operation are treated as if their union was what was + painted.

+ +

The stroke style is affected by the transformation during painting, even + if the intended path is the current default path.

+ +

Paths, when filled or stroked, must be painted without affecting the current default + path or any Path2D objects, and must be subject to shadow effects, global + alpha, the clipping region, and global composition operators. (The effect + of transformations is described above and varies based on which path is being used.)

+ +
+ +

The clip() method, when invoked, must + create a new clipping region by calculating the intersection of the current clipping + region and the area described by the intended path, using the fill rule indicated by + the fillRule argument. Open subpaths must be implicitly closed when computing the + clipping region, without affecting the actual subpaths. The new clipping region replaces the + current clipping region.

+ +

When the context is initialized, the clipping region must be set to the largest infinite + surface (i.e. by default, no clipping occurs).

+ + + +

The resetClip() method, when invoked, + must create a new clipping region that is the largest infinite surface. The new clipping region replaces the current clipping region.

-

When the context is initialized, the clipping region must be set - to the rectangle with the top left corner at (0,0) and the width and - height of the coordinate space.

+
- +

The isPointInPath() method, when + invoked, must return true if the point given by the x and y coordinates + passed to the method, when treated as coordinates in the canvas coordinate space unaffected by the + current transformation, is inside the intended path as determined by the fill rule + indicated by the fillRule argument; and must return false otherwise. Open subpaths must + be implicitly closed when computing the area inside the path, without affecting the actual + subpaths. Points on the path itself must be considered to be inside the path. If either of the + arguments are infinite or NaN, then the method must return false.

-

The isPointInPath(x, y) method must - return true if the point given by the x and y coordinates passed to the method, when treated as - coordinates in the canvas coordinate space unaffected by the current - transformation, is inside the current path as determined by the - non-zero winding number rule; and must return false - otherwise. Points on the path itself are considered to be inside the - path. If either of the arguments is infinite or NaN, then the method - must return false.

+
-
+

The isPointInStroke() method, + when invoked, must return true if the point given by the x and y coordinates + passed to the method, when treated as coordinates in the canvas coordinate space unaffected by the + current transformation, is inside the path that results from tracing the intended path, using the non-zero winding rule, and using the + CanvasPathDrawingStyles interface for the line styles; and must return false + otherwise. Points on the resulting path must be considered to be inside the path. If either of the + arguments are infinite or NaN, then the method must return false.

+
+ +
-

This canvas element has a couple of checkboxes. The - path-related commands are highlighted:

+

This canvas element has a couple of checkboxes. The path-related commands are + highlighted:

<canvas height=400 width=750>
  <label><input type=checkbox id=showA> Show As</label>
@@ -2356,11 +2796,9 @@ hairline width with transform. ack Shaun Morris.
    }
    context.beginPath();
    context.rect(x-7, y-7, 12 + metrics.width+2, 14);
-   if (paint && context.drawCustomFocusRing(element)) {
-     context.strokeStyle = 'silver';
-     context.stroke();
-   }
-   context.restore();
+
+   context.drawFocusIfNeeded(element);
+   context.restore();
  }
  function drawBase() { /* ... */ }
  function drawAs() { /* ... */ }
@@ -2382,6 +2820,7 @@ hairline width with transform. ack Shaun Morris.
    var context = canvas.getContext('2d');
    var x = event.clientX;
    var y = event.clientY;
+   var node = event.target;
    while (node) {
      x -= node.offsetLeft - node.scrollLeft;
      y -= node.offsetTop - node.scrollTop;
@@ -2401,929 +2840,460 @@ hairline width with transform. ack Shaun Morris.
  document.getElementsByTagName('canvas')[0].addEventListener('click', processClick, false);
  redraw();
 </script>
- +
+
4.12.5.1.13 Drawing focus rings and scrolling paths into view
+
context . drawFocusIfNeeded(element)
context . drawFocusIfNeeded(path, element)
+

If the given element is focused, draws a focus ring around the current + default path or the given path, following the platform conventions for focus rings.

-
4.8.11.1.9 Text
+
context . scrollPathIntoView()
context . scrollPathIntoView(path)
-
context . font [ = value ]
+

Scrolls the current default path or the given path into view. This is especially + useful on devices with small screens, where the whole canvas might not be visible at once.

-
+
-

Returns the current font settings.

+ -

Can be set, to change the font. The syntax is the same as for - the CSS 'font' property; values that cannot be parsed as CSS font - values are ignored.

+ Objects that implement the CanvasUserInterface interface provide the following + methods to control drawing focus rings and scrolling paths into view. -

Relative keywords and lengths are computed relative to the font - of the canvas element.

+
-
+

The drawFocusIfNeeded(element) + method, when invoked, must run these steps:

-
context . textAlign [ = value ]
+
  1. If element is not focused or is not a descendant of the element with + whose context the method is associated, then abort these steps.

  2. -
    +

    Draw a focus ring of the appropriate style along the intended path, following platform + conventions.

    -

    Returns the current text alignment settings.

    +

    Some platforms only draw focus rings around elements that have been focused from + the keyboard, and not those focused from the mouse. Other platforms simply don't draw focus + rings around some elements at all unless relevant accessibility features are enabled. This API + is intended to follow these conventions. User agents that implement distinctions based on the + manner in which the element was focused are encouraged to classify focus driven by the focus() method based on the kind of user interaction event from which + the call was triggered (if any).

    -

    Can be set, to change the alignment. The possible values are - start, end, left, right, and center. Other values are ignored. The default is - start.

    +

    The focus ring should not be subject to the shadow effects, the + global alpha, the global composition operators, or any of + the members in the CanvasFillStrokeStyles, CanvasPathDrawingStyles, + CanvasTextDrawingStyles interfaces, but should be subject to the + clipping region. (The effect of transformations is described above and varies based + on which path is being used.)

    -
    +
  3. Inform the user that the focus is at the location given by the + intended path. User agents may wait until the next time the event loop reaches its + update the rendering step to optionally inform the user.

-
context . textBaseline [ = value ]
+

User agents should not implicitly close open subpaths in the intended path when drawing the + focus ring.

-
+

This might be a moot point, however. For example, if the focus ring is drawn as an + axis-aligned bounding rectangle around the points in the intended path, then whether the subpaths + are closed or not has no effect. This specification intentionally does not specify precisely how + focus rings are to be drawn: user agents are expected to honor their platform's native + conventions.

-

Returns the current baseline alignment settings.

+
-

Can be set, to change the baseline alignment. The possible - values and their meanings are given below. Other values are - ignored. The default is alphabetic.

+

The scrollPathIntoView() + method, when invoked, must run these steps:

-
+
  1. Let the specified rectangle be the rectangle of the bounding box of + the intended path.

  2. Let notional child be a hypothetical element that is a rendered child + of the canvas element whose dimensions are those of the specified + rectangle.

  3. Scroll notional child into + view with the align to top flag set.

    -
    context . fillText(text, x, y [, maxWidth ] )
    -
    context . strokeText(text, x, y [, maxWidth ] )
    +
  4. Optionally, inform the user that the caret or selection (or both) + cover the specified rectangle of the canvas. The user agent may wait until the next + time the event loop reaches its update the rendering step to + optionally inform the user.

-
+

"Inform the user", as used in this section, does not imply any persistent state + change. It could mean, for instance, calling a system accessibility API to notify assistive + technologies such as magnification tools so that the user's magnifier moves to the given area of + the canvas. However, it does not associate the path with the element, or provide a region for + tactile feedback, etc.

-

Fills or strokes (respectively) the given text at the given - position. If a maximum width is provided, the text will be scaled - to fit that width if necessary.

+ -
+
4.12.5.1.14 Drawing images
-
metrics = context . measureText(text)
+

Objects that implement the CanvasDrawImage interface have the drawImage method to draw images.

-
- -

Returns a TextMetrics object with the metrics of the given text in the current font.

- -
- -
metrics . width
- -
- -

Returns the advance width of the text that was passed to the - measureText() - method.

- -
- -
- -

The font IDL - attribute, on setting, must be parsed the same way as the 'font' - property of CSS (but without supporting property-independent style - sheet syntax like 'inherit'), and the resulting font must be - assigned to the context, with the 'line-height' component forced to - 'normal', with the 'font-size' component converted to CSS pixels, - and with system fonts being computed to explicit values. If the new - value is syntactically incorrect (including using - property-independent style sheet syntax like 'inherit' or - 'initial'), then it must be ignored, without assigning a new font - value. [CSS]

- -

Font names must be interpreted in the context of the - canvas element's stylesheets; any fonts embedded using - @font-face must therefore be available once - they are loaded. (If a font is referenced before it is fully loaded, - then it must be treated as if it was an unknown font, falling back - to another as described by the relevant CSS specifications.) [CSSFONTS]

- -

Only vector fonts should be used by the user agent; if a user - agent were to use bitmap fonts then transformations would likely - make the font look very ugly.

- -

On getting, the font - attribute must return the serialized form of the current font of the context - (with no 'line-height' component). [CSSOM]

- -
- -

For example, after the following statement:

- -
context.font = 'italic 400 12px/2 Unknown Font, sans-serif';
- -

...the expression context.font would - evaluate to the string "italic 12px "Unknown Font", sans-serif". The - "400" font-weight doesn't appear because that is the default - value. The line-height doesn't appear because it is forced to - "normal", the default value.

- -
- -

When the context is created, the font of the context must be set - to 10px sans-serif. When the 'font-size' component is set to lengths - using percentages, 'em' or 'ex' units, or the 'larger' or 'smaller' - keywords, these must be interpreted relative to the computed value - of the 'font-size' property of the corresponding canvas - element at the time that the attribute is set. When the - 'font-weight' component is set to the relative values 'bolder' and - 'lighter', these must be interpreted relative to the computed value - of the 'font-weight' property of the corresponding - canvas element at the time that the attribute is - set. If the computed values are undefined for a particular case - (e.g. because the canvas element is not in a - Document), then the relative keywords must be - interpreted relative to the normal-weight 10px sans-serif - default.

- -

The textAlign IDL - attribute, on getting, must return the current value. On setting, if - the value is one of start, end, left, right, or center, then the - value must be changed to the new value. Otherwise, the new value - must be ignored. When the context is created, the textAlign attribute must - initially have the value start.

- -

The textBaseline - IDL attribute, on getting, must return the current value. On - setting, if the value is one of top, hanging, middle, alphabetic, - ideographic, - or bottom, - then the value must be changed to the new value. Otherwise, the new - value must be ignored. When the context is created, the textBaseline attribute - must initially have the value alphabetic.

- -
- -

The textBaseline - attribute's allowed keywords correspond to alignment points in the - font:

- -

The top of the em square is roughly at the top of the glyphs in a font, the hanging baseline is where some glyphs like आ are anchored, the middle is half-way between the top of the em square and the bottom of the em square, the alphabetic baseline is where characters like Á, ÿ, f, and Ω are anchored, the ideographic baseline is where glyphs like 私 and 達 are anchored, and the bottom of the em square is roughly at the bottom of the glyphs in a font. The top and bottom of the bounding box can be far from these baselines, due to glyphs extending far outside the em square.

- -

The keywords map to these alignment points as follows:

- -
top -
The top of the em square
- -
hanging -
The hanging baseline
- -
middle -
The middle of the em square
- -
alphabetic -
The alphabetic baseline
- -
ideographic -
The ideographic baseline
- -
bottom -
The bottom of the em square
- -
- -

The fillText() and - strokeText() - methods take three or four arguments, text, x, y, and optionally maxWidth, and render the given text at the given (x, y) coordinates ensuring that the text isn't wider - than maxWidth if specified, using the current - font, textAlign, and textBaseline - values. Specifically, when the methods are called, the user agent - must run the following steps:

- -
  1. If maxWidth is present but less than or - equal to zero, return without doing anything; abort these - steps.

  2. - -
  3. Let font be the current font of the - context, as given by the font attribute.

  4. - -
  5. Replace all the space - characters in text with U+0020 SPACE - characters.

  6. - -
  7. Form a hypothetical infinitely wide CSS line box containing - a single inline box containing the text text, - with all the properties at their initial values except the 'font' - property of the inline box set to font, the - 'direction' property of the inline box set to the - directionality of the canvas element, and the - 'white-space' property set to 'pre'. [CSS]

  8. - - - -
  9. If the maxWidth argument was specified - and the hypothetical width of the inline box in the hypothetical - line box is greater than maxWidth CSS pixels, - then change font to have a more condensed font - (if one is available or if a reasonably readable one can be - synthesized by applying a horizontal scale factor to the font) or a - smaller font, and return to the previous step.

  10. - -
  11. - -

    Let the anchor point be a point on the - inline box, determined by the textAlign and textBaseline values, as - follows:

    - -

    Horizontal position:

    - -
    If textAlign is left
    -
    If textAlign is start and the directionality of the - canvas element is 'ltr'
    -
    If textAlign is end and the directionality of the - canvas element is 'rtl'
    - -
    Let the anchor point's horizontal - position be the left edge of the inline box.
    - - -
    If textAlign is right
    -
    If textAlign is end and the directionality of the - canvas element is 'ltr'
    -
    If textAlign is start and the directionality of the - canvas element is 'rtl'
    - -
    Let the anchor point's horizontal - position be the right edge of the inline box.
    - - -
    If textAlign is center
    - -
    Let the anchor point's horizontal - position be half way between the left and right edges of the - inline box.
    - -

    Vertical position:

    - -
    If textBaseline is top
    - -
    Let the anchor point's vertical position - be the top of the em box of the first available font of the - inline box.
    - - -
    If textBaseline is hanging
    - -
    Let the anchor point's vertical position - be the hanging baseline of the first available font of the inline - box.
    - - -
    If textBaseline is middle
    - -
    Let the anchor point's vertical position - be half way between the bottom and the top of the em box of the - first available font of the inline box.
    - - -
    If textBaseline is alphabetic
    - -
    Let the anchor point's vertical position - be the alphabetic baseline of the first available font of the inline - box.
    - - -
    If textBaseline is ideographic
    - -
    Let the anchor point's vertical position - be the ideographic baseline of the first available font of the inline - box.
    - - -
    If textBaseline is bottom
    - -
    Let the anchor point's vertical position - be the bottom of the em box of the first available font of the - inline box.
    - -
  12. - -
  13. - -

    Paint the hypothetical inline box as the shape given by the - text's glyphs, as transformed by the current transformation - matrix, and anchored and sized so that before applying the - current transformation - matrix, the anchor point is at (x, y) and each CSS pixel is - mapped to one coordinate space unit.

    - -

    For fillText() - fillStyle must be - applied to the glyphs and strokeStyle must be - ignored. For strokeText() the reverse - holds and strokeStyle must be - applied to the glyph outlines and fillStyle must be - ignored.

    - -

    Text is painted without affecting the current path, and is - subject to shadow effects, global alpha, the clipping region, and global composition - operators.

    - -
  14. - -

The measureText() - method takes one argument, text. When the method - is invoked, the user agent must replace all the space characters in text with - U+0020 SPACE characters, and then must form a hypothetical - infinitely wide CSS line box containing a single inline box - containing the text text, with all the - properties at their initial values except the 'white-space' property - of the inline element set to 'pre' and the 'font' property of the - inline element set to the current font of the context as given by - the font attribute, and - must then return a new TextMetrics object with its - width attribute set to - the width of that inline box, in CSS pixels. [CSS]

- -

The TextMetrics interface is used for the objects - returned from measureText(). It has one - attribute, width, which is set - by the measureText() - method.

- -

Glyphs rendered using fillText() and strokeText() can spill out - of the box given by the font size (the em square size) and the width - returned by measureText() (the text - width). This version of the specification does not provide a way to - obtain the bounding box dimensions of the text. If the text is to be - rendered and removed, care needs to be taken to replace the entire - area of the canvas that the clipping region covers, not just the box - given by the em square height and measured text width.

- - - - - - -
- -

A future version of the 2D context API may provide a - way to render fragments of documents, rendered using CSS, straight - to the canvas. This would be provided in preference to a dedicated - way of doing multiline layout.

- - - -
4.8.11.1.10 Images
- -

To draw images onto the canvas, the drawImage method - can be used.

+

This method can be invoked with three different sets of arguments:

-
  • drawImage(image, dx, dy) -
  • drawImage(image, dx, dy, dw, dh) -
  • drawImage(image, sx, sy, sw, sh, dx, dy, dw, dh) -

Each of those three can take either an - HTMLImageElement, an HTMLCanvasElement, or - an HTMLVideoElement for the image - argument.

+
  • drawImage(image, dx, dy) +
  • drawImage(image, dx, dy, dw, dh) +
  • drawImage(image, sx, sy, sw, sh, dx, dy, dw, dh) +
-
context . drawImage(image, dx, dy)
-
context . drawImage(image, dx, dy, dw, dh)
-
context . drawImage(image, sx, sy, sw, sh, dx, dy, dw, dh)
+ -
+
context . drawImage(image, dx, dy)
context . drawImage(image, dx, dy, dw, dh)
context . drawImage(image, sx, sy, sw, sh, dx, dy, dw, dh)

Draws the given image onto the canvas. The arguments are interpreted as follows:

-

The sx and sy parameters give the x and y coordinates of the source rectangle; the sw and sh arguments give the width and height of the source rectangle; the dx and dy give the x and y coordinates of the destination rectangle; and the dw and dh arguments give the width and height of the destination rectangle.

+

The sx and sy parameters give the x and y coordinates of the source rectangle; the sw and sh arguments give the width and height of the source rectangle; the dx and dy give the x and y coordinates of the destination rectangle; and the dw and dh arguments give the width and height of the destination rectangle.

-

If the first argument isn't an img, - canvas, or video element, throws a - TYPE_MISMATCH_ERR exception. If the image has no - image data, throws an INVALID_STATE_ERR exception. If - the one of the source rectangle dimensions is zero, throws an - INDEX_SIZE_ERR exception. If the image isn't yet - fully decoded, then nothing is drawn.

+

If the image isn't yet fully decoded, then nothing is drawn. If the image is a canvas with no + data, throws an "InvalidStateError" DOMException.

-
+
-
+ -

If not specified, the dw and dh arguments must default to the values of sw and sh, interpreted such that - one CSS pixel in the image is treated as one unit in the canvas - coordinate space. If the sx, sy, sw, and sh arguments are omitted, they must default to 0, 0, - the image's intrinsic width in image pixels, and the image's - intrinsic height in image pixels, respectively. If the image has no - intrinsic dimensions, the concrete object size must be used - instead, as determined using the CSS "Concrete - Object Size Resolution" algorithm, with the specified - size having neither a definite width nor height, nor any - additional contraints, the object's intrinsic properties being those - of the image argument, and the default object - size being the size of the canvas element. [CSSIMAGES]

+

When the drawImage() method is invoked, the user + agent must run these steps:

-

The image argument is an instance of either - HTMLImageElement, HTMLCanvasElement, or - HTMLVideoElement.

+
  1. If any of the arguments are infinite or NaN, then abort these steps.

  2. Check the usability of the image argument. If this + returns aborted, then an exception has been thrown and the method doesn't return anything; + abort these steps. If it returns bad, then abort these steps without drawing anything. + Otherwise it returns good; continue with these steps.

  3. -

    If the image argument is an - HTMLImageElement object that is not fully decodable, or if the image argument is an HTMLVideoElement - object whose readyState - attribute is either HAVE_NOTHING or HAVE_METADATA, then the - implementation must return without drawing anything.

    +

    Establish the source and destination rectangles as follows:

    -

    If the image argument is an - HTMLCanvasElement object with either a horizontal - dimension or a vertical dimension equal to zero, then the - implementation must raise an INVALID_STATE_ERR - exception.

    - +

    If not specified, the dw and dh arguments must default to the values of + sw and sh, interpreted such that one CSS pixel + in the image is treated as one unit in the output bitmap's coordinate space. If the + sx, sy, sw, and sh arguments are omitted, then they + must default to 0, 0, the image's intrinsic width in image pixels, and the image's + intrinsic height in image pixels, respectively. If the image has no intrinsic + dimensions, then the concrete object size must be used instead, as determined + using the CSS "Concrete Object + Size Resolution" algorithm, with the specified size having neither a definite width + nor height, nor any additional constraints, the object's intrinsic properties being those of the + image argument, and the default object size being the size of the + output bitmap. [CSSIMAGES]

    -

    The source rectangle is the rectangle whose corners are the four - points (sx, sy), (sx+sw, sy), (sx+sw, sy+sh), (sx, sy+sh).

    +

    The source rectangle is the rectangle whose corners are the four points (sx, sy), (sx+sw, sy), (sx+sw, sy+sh), + (sx, sy+sh).

    -

    If one of the sw or sh - arguments is zero, the implementation must raise an - INDEX_SIZE_ERR exception.

    +

    The destination rectangle is the rectangle whose corners are the four points (dx, dy), (dx+dw, dy), (dx+dw, dy+dh), + (dx, dy+dh).

    -

    The destination rectangle is the rectangle whose corners are the - four points (dx, dy), - (dx+dw, dy), (dx+dw, dy+dh), (dx, dy+dh).

    +

    When the source rectangle is outside the source image, the source rectangle must be clipped + to the source image and the destination rectangle must be clipped in the same proportion.

    -

    When drawImage() is - invoked, the region of the image specified by the source rectangle - must be painted on the region of the canvas specified by the - destination rectangle, after applying the current transformation - matrix to the points of the destination rectangle.

    +

    When the destination rectangle is outside the destination image (the + output bitmap), the pixels that land outside the output bitmap are + discarded, as if the destination was an infinite canvas whose rendering was clipped to the + dimensions of the output bitmap.

    -

    The original image data of the source image must be used, not the - image as it is rendered (e.g. width and height attributes on the source - element have no effect). The image data must be processed in the - original direction, even if the dimensions given are negative.

    +
  4. If one of the sw or sh arguments is zero, then abort + these steps. Nothing is painted.

  5. -

    This specification does not define the algorithm to - use when scaling the image, if necessary.

    +

    Paint the region of the image argument specified by the source rectangle + on the region of the rendering context's output bitmap specified by the + destination rectangle, after applying the current + transformation matrix to the destination rectangle.

    -

    When a canvas is drawn onto itself, the drawing - model requires the source to be copied before the image is drawn - back onto the canvas, so it is possible to copy parts of a canvas - onto overlapping parts of itself.

    +

    The image data must be processed in the original direction, even if the dimensions given are + negative.

    -

    If the original image data is a bitmap image, the value painted - at a point in the destination rectangle is computed by filtering the - original image data. The user agent may use any filtering algorithm - (for example bilinear interpolation or nearest-neighbor). When the - filtering algorithm requires a pixel value from outside the original - image data, it must instead use the value from the nearest edge - pixel. (That is, the filter uses 'clamp-to-edge' behavior.)

    - - +

    When scaling up, if the imageSmoothingEnabled attribute is set to + true, the user agent should attempt to apply a smoothing algorithm to the image data when it is + scaled. User agents which support multiple filtering algorithms may use the value of the imageSmoothingQuality attribute to guide + the choice of filtering algorithm when the imageSmoothingEnabled attribute is set to + true. Otherwise, the image must be rendered using nearest-neighbor interpolation.

    -

    When the drawImage() method - is passed an animated image as its image - argument, the user agent must use the poster frame of the animation, - or, if there is no poster frame, the first frame of the - animation.

    - +

    This specification does not define the precise algorithm to use when scaling an + image down, or when scaling an image up when the imageSmoothingEnabled attribute is set to + true.

    -

    When the image argument is an - HTMLVideoElement, then the frame at the current - playback position must be used as the source image, and the - source image's dimensions must be the intrinsic width and - intrinsic height - of the media resource (i.e. after any aspect-ratio - correction has been applied).

    - +

    When a canvas element is drawn onto itself, the drawing + model requires the source to be copied before the image is drawn, so it is possible to + copy parts of a canvas element onto overlapping parts of itself.

    -

    Images are painted without affecting the current path, and are - subject to shadow effects, global alpha, the clipping region, and global composition - operators.

    +

    If the original image data is a bitmap image, then the value painted at a point in the + destination rectangle is computed by filtering the original image data. The user agent may use + any filtering algorithm (for example bilinear interpolation or nearest-neighbor). When the + filtering algorithm requires a pixel value from outside the original image data, it must instead + use the value from the nearest edge pixel. (That is, the filter uses 'clamp-to-edge' behavior.) + When the filtering algorithm requires a pixel value from outside the source rectangle but inside + the original image data, then the value from the original image data must be used.

    + + -
+

Thus, scaling an image in parts or in whole will have the same effect. This does + mean that when sprites coming from a single sprite sheet are to be scaled, adjacent images in + the sprite sheet can interfere. This can be avoided by ensuring each sprite in the sheet is + surrounded by a border of transparent black, or by copying sprites to be scaled into temporary + canvas elements and drawing the scaled sprites from there.

+ +

Images are painted without affecting the current path, and are subject to shadow effects, global + alpha, the clipping region, and global composition operators.

+ +
  • If the image argument is not origin-clean, then set the + CanvasRenderingContext2D's origin-clean flag to false.

  • + + +
    4.12.5.1.15 Pixel manipulation
    -
    4.8.11.1.11 Pixel manipulation
    +
    imagedata = new ImageData(sw, sh)
    imagedata = context . createImageData(sw, sh)
    -
    imagedata = context . createImageData(sw, sh)
    +

    Returns an ImageData object with the given dimensions. All the pixels in the + returned object are transparent black.

    -
    +

    Throws an "IndexSizeError" DOMException if either of + the width or height arguments are zero.

    -

    Returns an ImageData object with the given - dimensions in CSS pixels (which might map to a different number of - actual device pixels exposed by the object itself). All the pixels - in the returned object are transparent black.

    +
    imagedata = context . createImageData(imagedata)
    -
    +

    Returns an ImageData object with the same dimensions as the argument. All the + pixels in the returned object are transparent black.

    -
    imagedata = context . createImageData(imagedata)
    +
    imagedata = new ImageData(data, sw [, sh ] )
    -
    +

    Returns an ImageData object using the data provided in the Uint8ClampedArray argument, interpreted using the given + dimensions.

    -

    Returns an ImageData object with the same - dimensions as the argument. All the pixels in the returned object - are transparent black.

    +

    As each pixel in the data is represented by four numbers, the length of the data needs to be + a multiple of four times the given width. If the height is provided as well, then the length + needs to be exactly the width times the height times 4.

    -
    +

    Throws an "IndexSizeError" DOMException if the given + data and dimensions can't be interpreted consistently, or if either dimension is zero.

    -
    imagedata = context . getImageData(sx, sy, sw, sh)
    +
    imagedata = context . getImageData(sx, sy, sw, sh)
    -
    +

    Returns an ImageData object containing the image data for the given rectangle of + the bitmap.

    -

    Returns an ImageData object containing the image - data for the given rectangle of the canvas.

    +

    Throws an "IndexSizeError" DOMException if the either + of the width or height arguments are zero.

    -

    Throws a NOT_SUPPORTED_ERR exception if any of the - arguments are not finite. Throws an INDEX_SIZE_ERR - exception if the either of the width or height arguments are - zero.

    +
    imagedata . width
    imagedata . height
    -
    +

    Returns the actual dimensions of the data in the ImageData object, in + pixels.

    -
    imagedata . width
    -
    imagedata . height
    +
    imagedata . data
    -
    +

    Returns the one-dimensional array containing the data in RGBA order, as integers in the range + 0 to 255.

    -

    Returns the actual dimensions of the data in the ImageData object, in device pixels.

    +
    context . putImageData(imagedata, dx, dy [, dirtyX, dirtyY, dirtyWidth, dirtyHeight ] )
    -
    +

    Paints the data from the given ImageData object onto the bitmap. If a dirty + rectangle is provided, only the pixels from that rectangle are painted.

    -
    imagedata . data
    +

    The globalAlpha and globalCompositeOperation attributes, as + well as the shadow attributes, are ignored for the purposes of this method call; pixels in the + canvas are replaced wholesale, with no composition, alpha blending, no shadows, etc.

    -
    +

    Throws an "InvalidStateError" DOMException if the + imagedata object's data's [[Detached]] internal slot value is true.

    -

    Returns the one-dimensional array containing the data in RGBA order, as integers in the range 0 to 255.

    +
    - + -
    context . putImageData(imagedata, dx, dy [, dirtyX, dirtyY, dirtyWidth, dirtyHeight ])
    +

    Objects that implement the CanvasImageData interface provide the following methods + for reading and writing pixel data to the bitmap.

    -
    +

    The ImageData() constructors and the + createImageData() methods are + used to instantiate new ImageData objects.

    -

    Paints the data from the given ImageData object - onto the canvas. If a dirty rectangle is provided, only the pixels - from that rectangle are painted.

    +

    When the ImageData() constructor is invoked with two + numeric arguments sw and sh, it must create an ImageData + object with parameter pixelsPerRow set to sw, and rows set + to sh. The image data of the newly created ImageData object must be + initialized to transparent black. If both sw and sh are non-zero, then + return the new ImageData object. If one or both of sw and sh + are zero, then the constructor must throw an "IndexSizeError" + DOMException instead.

    -

    The globalAlpha - and globalCompositeOperation - attributes, as well as the shadow attributes, are ignored for the - purposes of this method call; pixels in the canvas are replaced - wholesale, with no composition, alpha blending, no shadows, - etc.

    +

    When the ImageData() constructor is invoked with its first + argument being an Uint8ClampedArray source + and its second and optional third arguments being numeric arguments sw and + sh, it must run these steps:

    -

    If the first argument is null, throws a - TYPE_MISMATCH_ERR exception. Throws a - NOT_SUPPORTED_ERR exception if any of the other - arguments are not finite.

    +
    1. Let length be the number of bytes in source.

    2. If length is not a non-zero integral multiple of four, then throw an + "InvalidStateError" DOMException and abort these + steps.

    3. Let length be length divided by four.

      -
    +
  • -
    +

    If length is not an integral multiple of sw, then throw an + "IndexSizeError" DOMException and abort these steps.

    -

    The createImageData() - method is used to instantiate new blank ImageData - objects. When the method is invoked with two arguments sw and sh, it must return an - ImageData object representing a rectangle with a width - in CSS pixels equal to the absolute magnitude of sw and a height in CSS pixels equal to the absolute - magnitude of sh. When invoked with a single imagedata argument, it must return an - ImageData object representing a rectangle with the same - dimensions as the ImageData object passed as the - argument. The ImageData object returned must be filled - with transparent black.

    +

    At this step, the length is guaranteed to be greater than zero (otherwise the + second step above would have aborted the steps), so if sw is zero, this + step will throw the exception and abort these steps.

    -

    The getImageData(sx, sy, sw, - sh) method must return an - ImageData object representing the underlying pixel data - for the area of the canvas denoted by the rectangle whose corners are - the four points (sx, sy), - (sx+sw, sy), (sx+sw, sy+sh), (sx, sy+sh), in canvas - coordinate space units. Pixels outside the canvas must be returned - as transparent black. Pixels must be returned as non-premultiplied - alpha values.

    +
  • Let height be length divided by sw.

  • If the sh argument was not omitted, and its value is not equal to + height, then throw an "IndexSizeError" + DOMException and abort these steps.

  • -

    If any of the arguments to createImageData() or - getImageData() - are infinite or NaN, the method must instead raise a - NOT_SUPPORTED_ERR exception. If either the sw or sh arguments are zero, - the method must instead raise an INDEX_SIZE_ERR - exception.

    +

    Create an ImageData object, with parameter pixelsPerRow + set to sw, rows set to sh, and using source. + Return the newly created ImageData object.

    -

    ImageData objects must be initialized so that their - width attribute - is set to w, the number of physical device - pixels per row in the image data, their height attribute is - set to h, the number of rows in the image data, - and their data - attribute is initialized to a CanvasPixelArray object - holding the image data. At least one pixel's worth of image data - must be returned.

    +

    The resulting object's data is not a copy of source, it's + the actual Uint8ClampedArray object passed as the + first argument to the constructor.

    -

    The CanvasPixelArray object provides ordered, - indexed access to the color components of each pixel of the image - data. The data must be represented in left-to-right order, row by - row top to bottom, starting with the top left, with each pixel's - red, green, blue, and alpha components being given in that order for - each pixel. Each component of each device pixel represented in this - array must be in the range 0..255, representing the 8 bit value for - that component. The components must be assigned consecutive indices - starting with 0 for the top left pixel's red component.

    +
  • -

    The CanvasPixelArray object thus represents h×w×4 integers. The - length - attribute of a CanvasPixelArray object must return this - number.

    +

    When the createImageData() method is + invoked with two numeric arguments sw and sh, it must create an + ImageData object, with parameter pixelsPerRow set to the + absolute magnitude of sw, and parameter rows set to the absolute magnitude + of sh. Initialize the image data of the new ImageData object to + transparent black. If both sw and sh are non-zero, then return + the new ImageData object. If one or both of sw and sh are + zero, then throw an "IndexSizeError" DOMException + instead.

    -

    The object's supported property indices are the - numbers in the range 0 .. h×w×4-1.

    +

    When the createImageData() method is + invoked with a single imagedata argument, it must create an + ImageData object, with parameter pixelsPerRow set to the value of + the width attribute of the ImageData + object passed as the argument, and the rows parameter set to the value of the + height attribute. + Initialize the image data of the new ImageData object to transparent black. Return + the newly created ImageData object.

    -

    To determine the value of - an indexed property index, the user agent - must return the value of the indexth component - in the array.

    +

    The getImageData(sx, + sy, sw, sh) method, when invoked, must, + if either the sw or sh arguments are zero, throw an + "IndexSizeError" DOMException; otherwise, + + if the CanvasRenderingContext2D's origin-clean flag is set to false, it must throw a + "SecurityError" DOMException; + + otherwise, it must create an ImageData object, with parameter + pixelsPerRow set to sw, and parameter rows set to sh. + Set the pixel values of the image data of the newly created ImageData object to + represent the output bitmap for the area of that bitmap denoted by the rectangle + whose corners are the four points (sx, sy), (sx+sw, sy), (sx+sw, sy+sh), (sx, + sy+sh), in the bitmap's coordinate space units. + Pixels outside the output bitmap must be set to transparent black. Pixel values + must not be premultiplied by alpha.

    -

    To set the value of an - existing indexed property index to value - value, the value of the indexth component in the array must be set to value.

    +

    When the user agent is required to create an ImageData object, given a + positive integer number of rows rows, a positive integer number of pixels per row + pixelsPerRow, and an optional Uint8ClampedArray source, it must run these + steps:

    -

    The width and height (w and h) might be different from the sw - and sh arguments to the above methods, e.g. if - the canvas is backed by a high-resolution bitmap, or if the sw and sh arguments are - negative.

    +
    1. Let imageData be a new uninitialized ImageData object.

    2. If source is specified, then assign the data attribute of imageData to + source.

    3. +

      If source is not specified, then initialize the data attribute of imageData to a new Uint8ClampedArray object. The Uint8ClampedArray object must use a new Canvas + Pixel ArrayBuffer for its storage, and must have a + zero start offset and a length equal to the length of its storage, in bytes. The Canvas + Pixel ArrayBuffer must have the correct size to + store rows × pixelsPerRow pixels.

      -

      The putImageData(imagedata, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight) method writes data from - ImageData structures back to the canvas.

      +

      If the Canvas Pixel ArrayBuffer cannot be + allocated, then rethrow the RangeError thrown by JavaScript, + and abort these steps.

      +
    4. Initialize the width attribute of + imageData to pixelsPerRow.

    5. Initialize the height attribute of + imageData to rows.

    6. Return imageData.

    -

    If any of the arguments to the method are infinite or NaN, the - method must raise a NOT_SUPPORTED_ERR exception.

    +

    ImageData objects are serializable objects. Their serialization + steps, given value and serialized, are:

    -

    When the last four arguments are omitted, they must be assumed to - have the values 0, 0, the width member of the imagedata structure, and the height member of the imagedata structure, respectively.

    +
    1. Set serialized.[[Data]] to the sub-serialization of the value of + value's data attribute.

    2. Set serialized.[[Width]] to the value of value's width attribute.

    3. Set serialized.[[Height]] to the value of value's height attribute.

    -

    When invoked with arguments that do not, per the last few - paragraphs, cause an exception to be raised, the putImageData() method - must act as follows:

    +

    Their deserialization steps, given serialized and value, + are:

    + +
    1. Initialize value's data attribute + to the sub-deserialization of serialized.[[Data]].

    2. Initialize value's width attribute + to serialized.[[Width]].

    3. Initialize value's height attribute + to serialized.[[Height]].

    + +

    A Canvas Pixel ArrayBuffer is an ArrayBuffer whose data is represented in left-to-right order, row + by row top to bottom, starting with the top left, with each pixel's red, green, blue, and alpha + components being given in that order for each pixel. Each component of each pixel represented in + this array must be in the range 0..255, representing the 8 bit value for that component. The + components must be assigned consecutive indices starting with 0 for the top left pixel's red + component.

    + +

    The putImageData() method writes + data from ImageData structures back to the rendering context's output + bitmap. Its arguments are: imagedata, dx, dy, + dirtyX, dirtyY, dirtyWidth, and dirtyHeight.

    + +

    When the last four arguments to this method are omitted, they must be assumed to have the + values 0, 0, the width member of the imagedata structure, and the height + member of the imagedata structure, respectively.

    + +

    The method, when invoked, must act as follows:

    1. -

      Let dxdevice be the x-coordinate - of the device pixel in the underlying pixel data of the canvas - corresponding to the dx coordinate in the - canvas coordinate space.

      +

      If imagedata's data attribute value's + [[Detached]] internal slot value is true, then throw an + "InvalidStateError" DOMException and abort these + steps.

      -

      Let dydevice be the y-coordinate - of the device pixel in the underlying pixel data of the canvas - corresponding to the dy coordinate in the - canvas coordinate space.

      +
    2. -
    3. +

      If dirtyWidth is negative, then let dirtyX be dirtyX+dirtyWidth, and let dirtyWidth be equal + to the absolute magnitude of dirtyWidth.

      -
    4. +

      If dirtyHeight is negative, then let dirtyY be dirtyY+dirtyHeight, and let dirtyHeight be + equal to the absolute magnitude of dirtyHeight.

      -

      If dirtyWidth is negative, let dirtyX be dirtyX+dirtyWidth, and let dirtyWidth be equal to the absolute magnitude of - dirtyWidth.

      +
    5. -

      If dirtyHeight is negative, let dirtyY be dirtyY+dirtyHeight, and let dirtyHeight be equal to the absolute magnitude of - dirtyHeight.

      +

      If dirtyX is negative, then let dirtyWidth be dirtyWidth+dirtyX, and let dirtyX be zero.

      -
    6. +

      If dirtyY is negative, then let dirtyHeight be dirtyHeight+dirtyY, and let dirtyY be zero.

      -
    7. +
    8. -

      If dirtyX is negative, let dirtyWidth be dirtyWidth+dirtyX, and - let dirtyX be zero.

      +

      If dirtyX+dirtyWidth is greater than the width attribute of the imagedata argument, then + let dirtyWidth be the value of that width + attribute, minus the value of dirtyX.

      -

      If dirtyY is negative, let dirtyHeight be dirtyHeight+dirtyY, and - let dirtyY be zero.

      +

      If dirtyY+dirtyHeight is greater than the height attribute of the imagedata argument, then + let dirtyHeight be the value of that height attribute, minus the value of dirtyY.

      -
    9. +
    10. -
    11. +

      If, after those changes, either dirtyWidth or dirtyHeight are negative + or zero, then abort these steps without affecting any bitmaps.

      -

      If dirtyX+dirtyWidth is greater than the width attribute of the imagedata argument, let dirtyWidth be the value of that width attribute, minus the - value of dirtyX.

      +
    12. For all integer values of x and y where dirtyX ≤ x < dirtyX+dirtyWidth and dirtyY ≤ y < dirtyY+dirtyHeight, copy the + four channels of the pixel with coordinate (x, y) in + the imagedata data structure's Canvas Pixel + ArrayBuffer to the pixel with coordinate (dx+x, dy+y) + in the rendering context's output bitmap.

    -

    If dirtyY+dirtyHeight is greater than the height attribute of the imagedata argument, let dirtyHeight be the value of that height attribute, minus the - value of dirtyY.

    +

    Due to the lossy nature of converting to and from premultiplied alpha color + values, pixels that have just been set using putImageData() might be returned to an equivalent + getImageData() as different values.

    - +

    The current path, transformation matrix, + shadow attributes, global + alpha, the clipping region, and global composition operator must not + affect the methods described in this section.

    -
  • - -

    If, after those changes, either dirtyWidth - or dirtyHeight is negative or zero, stop these - steps without affecting the canvas.

    - -
  • - -
  • Otherwise, for all integer values of x - and y where dirtyX ≤ x < dirtyX+dirtyWidth - and dirtyY ≤ y < dirtyY+dirtyHeight, copy the four channels of - the pixel with coordinate (x, y) in the imagedata data - structure to the pixel with coordinate (dxdevice+x, - dydevice+y) in the underlying pixel data of the - canvas.

  • - -

    The handling of pixel rounding when the specified coordinates do - not exactly map to the device coordinate space is not defined by - this specification, except that the following must result in no - visible changes to the rendering:

    - -
    context.putImageData(context.getImageData(x, y, w, h), p, q);
    - -

    ...for any value of x, y, - w, and h and where p is the smaller of x and the sum - of x and w, and q is the smaller of y and the sum - of y and h; and except that - the following two calls:

    - -
    context.createImageData(w, h);
    -context.getImageData(0, 0, w, h);
    - -

    ...must return ImageData objects with the same - dimensions, for any value of w and h. In other words, while user agents may round the - arguments of these methods so that they map to device pixel - boundaries, any rounding performed must be performed consistently - for all of the createImageData(), getImageData() and putImageData() - operations.

    - -

    Due to the lossy nature of converting to and from - premultiplied alpha color values, pixels that have just been set - using putImageData() might be - returned to an equivalent getImageData() as - different values.

    - -

    The current path, transformation matrix, - shadow attributes, global alpha, the clipping region, and global composition - operator must not affect the getImageData() and putImageData() - methods.

    - -
    +
    -

    The data returned by getImageData() is at the - resolution of the canvas backing store, which is likely to not be - one device pixel to each CSS pixel if the display used is a high - resolution display.

    - -

    In the following example, the script generates an - ImageData object so that it can draw onto it.

    +

    In the following example, the script generates an ImageData object so that it can + draw onto it.

    // canvas is a reference to a <canvas> element
     var context = canvas.getContext('2d');
    @@ -3348,11 +3318,11 @@ function AddCloud(data, x, y) { ... }
    -

    Here is an example of using getImageData() and putImageData() to - implement an edge detection filter.

    +

    Here is an example of using getImageData() and putImageData() to implement an edge detection + filter.

    <!DOCTYPE HTML>
    -<html>
    +<html lang="en">
      <head>
       <title>Edge detection demo</title>
       <script>
    @@ -3375,9 +3345,9 @@ function AddCloud(data, x, y) { ... }
    var output = context.createImageData(canvas.width, canvas.height); // alias some variables for convenience - // notice that we are using input.width and input.height here - // as they might not be the same as canvas.width and canvas.height - // (in particular, they might be different on high-res displays) + // In this case input.width and input.height + // match canvas.width and canvas.height + // but we'll use the former to keep the code generic. var w = input.width, h = input.height; var inputData = input.data; var outputData = output.data; @@ -3408,102 +3378,322 @@ function AddCloud(data, x, y) { ... }
    -
    - -
    4.8.11.1.12 Drawing model
    - -

    When a shape or image is painted, user agents must follow these - steps, in the order given (or act as if they do):

    - -
    1. Render the shape or image onto an infinite transparent black - bitmap, creating image A, as described in the - previous sections. For shapes, the current fill, stroke, and line - styles must be honored, and the stroke must itself also be - subjected to the current transformation matrix.

    2. - -
    3. When shadows are drawn, render the shadow from - image A, using the current shadow styles, - creating image B.

    4. - -
    5. When shadows are drawn, multiply the alpha - component of every pixel in B by globalAlpha.

    6. - -
    7. When shadows are drawn, composite B within the clipping region over the - current canvas bitmap using the current composition - operator.

    8. - -
    9. Multiply the alpha component of every pixel in A by globalAlpha.

    10. - -
    11. Composite A within the clipping - region over the current canvas bitmap using the current - composition operator.

    12. - -
    -
    4.8.11.1.13 Best practices
    +
    4.12.5.1.16 Compositing
    + +
    context . globalAlpha [ = value ]
    + +

    Returns the current alpha value applied to rendering operations.

    + +

    Can be set, to change the alpha value. Values outside of the range 0.0 .. 1.0 are + ignored.

    + +
    context . globalCompositeOperation [ = value ]
    + +

    Returns the current composition operation, from the values defined in the Compositing and + Blending specification. [COMPOSITE].

    + +

    Can be set, to change the composition operation. Unknown values are ignored.

    + +

    Spec bugs: 27313

    + + + +

    All drawing operations on an object which implements the CanvasCompositing + interface are affected by the global compositing attributes, globalAlpha and globalCompositeOperation.

    + + + +

    The globalAlpha attribute gives an + alpha value that is applied to shapes and images before they are composited onto the output + bitmap. The value must be in the range from 0.0 (fully transparent) to 1.0 (no additional + transparency). If an attempt is made to set the attribute to a value outside this range, including + Infinity and Not-a-Number (NaN) values, then the attribute must retain its previous value. When + the context is created, the globalAlpha attribute + must initially have the value 1.0.

    + +

    The globalCompositeOperation attribute + sets the current composition operator, which controls how shapes and images are drawn onto the + output bitmap, once they have had globalAlpha and the current transformation matrix + applied. The possible values are those defined in the Compositing and Blending specification, and + include the values source-over + and copy. + [COMPOSITE]

    + +

    These values are all case-sensitive — they must be used exactly as defined. User agents + must not recognize values that are not a case-sensitive match for one of the values + given in the Compositing and Blending specification. [COMPOSITE]

    + +

    On setting, if the user agent does not recognize the specified value, it must be ignored, + leaving the value of globalCompositeOperation unaffected. + Otherwise, the attribute must be set to the given new value.

    + +

    When the context is created, the globalCompositeOperation attribute must + initially have the value source-over.

    + + + + + +
    4.12.5.1.17 Image smoothing
    + +
    context . imageSmoothingEnabled [ = value ]
    + +

    Returns whether pattern fills and the drawImage() method will attempt to smooth images if + their pixels don't line up exactly with the display, when scaling images up.

    + +

    Can be set, to change whether images are smoothed (true) or not (false).

    + +
    context . imageSmoothingQuality [ = value ]
    + +

    Returns the current image-smoothing-quality preference.

    + +

    Can be set, to change the preferred quality of image smoothing. The possible values are + "low", "medium" and "high". Unknown values are ignored.

    + +
    + + + +

    Objects that implement the CanvasImageSmoothing interface have attributes that + control how image smoothing is performed.

    + +

    The imageSmoothingEnabled + attribute, on getting, must return the last value it was set to. On setting, it must be set to the + new value. When the object implementing the CanvasImageSmoothing interface is + created, the attribute must be set to true.

    + +

    The imageSmoothingQuality + attribute, on getting, must return the last value it was set to. On setting, it must be set to the + new value. When the object implementing the CanvasImageSmoothing interface is + created, the attribute must be set to "low".

    + + + + +
    4.12.5.1.18 Shadows
    + +

    All drawing operations on an object which implements the CanvasShadowStyles + interface are affected by the four global shadow attributes.

    + +
    context . shadowColor [ = value ]
    + +

    Returns the current shadow color.

    + +

    Can be set, to change the shadow color. Values that cannot be parsed as CSS colors are ignored.

    + +
    context . shadowOffsetX [ = value ]
    context . shadowOffsetY [ = value ]
    + +

    Returns the current shadow offset.

    + +

    Can be set, to change the shadow offset. Values that are not finite numbers are ignored.

    + +
    context . shadowBlur [ = value ]
    + +

    Returns the current level of blur applied to shadows.

    + +

    Can be set, to change the blur level. Values that are not finite numbers greater than or + equal to zero are ignored.

    + +
    + + + +

    The shadowColor attribute sets the + color of the shadow.

    + +

    When the context is created, the shadowColor + attribute initially must be fully-transparent black.

    + +

    On getting, the serialization of the color + must be returned.

    + +

    On setting, the new value must be parsed as a CSS <color> value and the + color assigned. If the value cannot be parsed as a CSS <color> value then it + must be ignored, and the attribute must retain its previous value. [CSSCOLOR]

    + +

    The shadowOffsetX and shadowOffsetY attributes specify the distance + that the shadow will be offset in the positive horizontal and positive vertical distance + respectively. Their values are in coordinate space units. They are not affected by the current + transformation matrix.

    + +

    When the context is created, the shadow offset attributes must initially have the value + 0.

    + +

    On getting, they must return their current value. On setting, the attribute being set must be + set to the new value, except if the value is infinite or NaN, in which case the new value must be + ignored.

    + +

    The shadowBlur attribute specifies + the level of the blurring effect. (The units do not map to coordinate space units, and are not + affected by the current transformation matrix.)

    + +

    When the context is created, the shadowBlur + attribute must initially have the value 0.

    + +

    On getting, the attribute must return its current value. On setting the attribute must be set + to the new value, except if the value is negative, infinite or NaN, in which case the new value + must be ignored.

    + +

    Shadows are only drawn if the opacity component of + the alpha component of the color of shadowColor is + non-zero and either the shadowBlur is non-zero, or + the shadowOffsetX is non-zero, or the shadowOffsetY is non-zero.

    + +

    When shadows are drawn, they must be rendered as follows:

    + +
    1. Let A be an infinite transparent black bitmap on which the source + image for which a shadow is being created has been rendered.

    2. Let B be an infinite transparent black bitmap, with a coordinate + space and an origin identical to A.

    3. Copy the alpha channel of A to B, offset by shadowOffsetX in the positive x + direction, and shadowOffsetY in the positive + y direction.

    4. + +

      If shadowBlur is greater than 0:

      + +
      1. Let σ be half the value of shadowBlur.

      2. Perform a 2D Gaussian Blur on B, using σ + as the standard deviation.

      + +

      User agents may limit values of σ to an implementation-specific + maximum value to avoid exceeding hardware limitations during the Gaussian blur operation.

      + +
    5. Set the red, green, and blue components of every pixel in B to the + red, green, and blue components (respectively) of the color of shadowColor.

    6. Multiply the alpha component of every pixel in B by the alpha + component of the color of shadowColor.

    7. The shadow is in the bitmap B, and is rendered as part of the + drawing model described below.

    + + + +

    If the current composition operation is copy, then shadows + effectively won't render (since the shape will overwrite the shadow).

    + +
    4.12.5.1.19 Filters
    + +

    All drawing operations on an object which implements the CanvasFilters + interface are affected by the global filter + attribute.

    + +
    context . filter [ = value ]
    + +

    Returns the current filter.

    + +

    Can be set, to change the filter. Values that cannot be parsed as a + <filter-function-list> value are ignored.

    + +
    + + + +

    The filter attribute, on getting, must + return the last value it was successfully set to. The value must not be re-serialized. On setting, + if the new value is 'none' (not the empty string, null, or undefined), filters must be disabled + for the context. Otherwise, the value must be parsed as a + <filter-function-list> value. If the value cannot be parsed as a + <filter-function-list> value, where using property-independent style sheet + syntax like 'inherit' or 'initial' is considered an invalid value, then it must be ignored, and + the attribute must retain its previous value. When creating the object implementing the + CanvasFilters interface, the attribute must be set to 'none'.

    + +

    A <filter-function-list> value consists of a sequence of one or more + filter functions or references to SVG filters. The input to the filter is used as the input + to the first item in the list. Subsequent items take the output of the previous item as + their input. [FILTERS]

    + +

    Coordinates used in the value of the filter attribute are interpreted such that one pixel is + equivalent to one SVG user space unit and to one canvas coordinate space unit. Filter coordinates + are not affected by the current transformation + matrix. The current transformation matrix affects only the input to the filter. Filters + are applied in the output bitmap's coordinate space.

    + +

    When the value of the filter attribute defines + lengths using percentages or using 'em' or 'ex' units, these must be + interpreted relative to the computed value of the 'font-size' property + of the font style source object at the time that the attribute is set, if it is an + element. If the computed values are undefined for a + particular case (e.g. because the font style source object is not an element or is + not being rendered), then the relative keywords must be interpreted relative to the + default value of the font attribute. The 'larger' and + 'smaller' keywords are not supported.

    + +

    If the value of the filter attribute refers to an + SVG filter in the same document, and this SVG filter changes, then the changed filter is used for + the next draw operation.

    + +

    If the value of the filter attribute refers to an + SVG filter in an external resource document and that document is not loaded when a drawing + operation is invoked, then the drawing operation must proceed with no filtering.

    + + + +
    4.12.5.1.20 Working with externally-defined SVG filters

    This section is non-normative.

    -

    When a canvas is interactive, authors should include focusable - elements in the element's fallback content corresponding to each - focusable part of the canvas, as in the example above.

    +

    Since drawing is performed using filter value 'none' until an externally-defined + filter has finished loading, authors might wish to determine whether such a filter + has finished loading before proceeding with a drawing operation. One way to accomplish + this is to load the externally-defined filter elsewhere within the same page in some + element that sends a load event (for example, an SVG + use element), and wait for the load event to be + dispatched.

    -

    To indicate which focusable part of the canvas is currently - focused, authors should use the drawSystemFocusRing() - method, passing it the element for which a ring is being drawn. This - method only draws the focus ring if the element is focused, so that - it can simply be called whenever drawing the element, without + + +

    4.12.5.1.21 Drawing model
    + +

    When a shape or image is painted, user agents must follow these steps, in the order given (or + act as if they do):

    + +
    1. Render the shape or image onto an infinite transparent black bitmap, creating image A, as described in the previous sections. For shapes, the current fill, stroke, + and line styles must be honored, and the stroke must itself also be subjected to the current + transformation matrix.

    2. When the filter attribute is set to a value other than 'none' and all the + externally-defined filters it references, if any, are in documents that are currently loaded, + then use image A as the input to the filter, creating image B. Otherwise, let + B be an alias for A.

    3. When shadows are drawn, render the shadow from image B, + using the current shadow styles, creating image C.

    4. When shadows are drawn, multiply the alpha component of every pixel in C by globalAlpha.

    5. When shadows are drawn, composite C within the + clipping region over the current output bitmap using the current + composition operator.

    6. Multiply the alpha component of every pixel in B by globalAlpha.

    7. Composite B within the clipping region over the current + output bitmap using the current composition operator.

    + +

    When compositing onto the output bitmap, pixels that would fall outside of the + output bitmap must be discarded.

    + + + + + + +
    4.12.5.1.22 Best practices
    + +

    When a canvas is interactive, authors should include focusable elements in the element's + fallback content corresponding to each focusable part of the canvas, as in the example above.

    + +

    When rendering focus rings, to ensure that focus rings have the appearance of native focus + rings, authors should use the drawFocusIfNeeded() method, passing it the + element for which a ring is being drawn. This method only draws the focus ring if the element is + focused, so that it can simply be called whenever drawing the element, without checking whether the element is focused or not first.

    -

    Authors should avoid implementing text editing controls using the - canvas element. Doing so has a large number of - disadvantages:

    +

    In addition to drawing focus rings, authors should use the scrollPathIntoView() method when an element in + the canvas is focused, to make sure it is visible on the screen (if applicable).

    -
    • Mouse placement of the caret has to be reimplemented.
    • +

      Authors should avoid implementing text editing controls + using the canvas element. Doing so has a large number of disadvantages:

      -
    • Keyboard movement of the caret has to be reimplemented (possibly across lines, for multiline text input).
    • +
      • Mouse placement of the caret has to be reimplemented.
      • Keyboard movement of the caret has to be reimplemented (possibly across lines, for multiline + text input).
      • Scrolling of the text control has to be implemented (horizontally for long lines, vertically + for multiline input).
      • Native features such as copy-and-paste have to be reimplemented.
      • Native features such as spell-checking have to be reimplemented.
      • Native features such as drag-and-drop have to be reimplemented.
      • Native features such as page-wide text search have to be reimplemented.
      • Native features specific to the user, for example custom text services, have to be + reimplemented. This is close to impossible since each user might have different services + installed, and there is an unbounded set of possible such services.
      • Bidirectional text editing has to be reimplemented.
      • For multiline text editing, line wrapping has to be implemented for all relevant + languages.
      • Text selection has to be reimplemented.
      • Dragging of bidirectional text selections has to be reimplemented.
      • Platform-native keyboard shortcuts have to be reimplemented.
      • Platform-native input method editors (IMEs) have to be reimplemented.
      • Undo and redo functionality has to be reimplemented.
      • Accessibility features such as magnification following the caret or selection have to be + reimplemented.
      -
    • Scrolling of the text field has to be implemented (horizontally for long lines, vertically for multiline input).
    • - -
    • Native features such as copy-and-paste have to be reimplemented.
    • - -
    • Native features such as spell-checking have to be reimplemented.
    • - -
    • Native features such as drag-and-drop have to be reimplemented.
    • - -
    • Native features such as page-wide text search have to be reimplemented.
    • - -
    • Native features specific to the user, for example custom text - services, have to be reimplemented. This is close to impossible - since each user might have different services installed, and there - is an unbounded set of possible such services.
    • - -
    • Bidirectional text editing has to be reimplemented.
    • - -
    • For multiline text editing, line wrapping has to be implemented for all relevant languages.
    • - -
    • Text selection has to be reimplemented.
    • - -
    • Dragging of bidirectional text selections has to be reimplemented.
    • - -
    • Platform-native keyboard shortcuts have to be reimplemented.
    • - -
    • Platform-native input method editors (IMEs) have to be reimplemented.
    • - -
    • Undo and redo functionality has to be reimplemented.
    • - -
    • Accessibility features such as magnification following the - caret or selection have to be reimplemented.
    • - -

    This is a huge amount of work, and authors are most strongly - encouraged to avoid doing any of it by instead using the - input element, the textarea element, or - the contenteditable - attribute.

    +

    This is a huge amount of work, and authors are most strongly encouraged to avoid doing any of + it by instead using the input element, the textarea element, or the + contenteditable attribute.

    -
    4.8.11.1.14 Examples
    +
    4.12.5.1.23 Examples

    This section is non-normative.

    @@ -3554,140 +3744,835 @@ function AddCloud(data, x, y) { ... }
    +
    +

    The 2D rendering context for canvas is often used for sprite-based games. The + following example demonstrates this:

    -
    + + + diff --git a/testing/web-platform/tests/XMLHttpRequest/access-control-sandboxed-iframe-allow.htm b/testing/web-platform/tests/XMLHttpRequest/access-control-sandboxed-iframe-allow.htm new file mode 100644 index 000000000000..21413f386639 --- /dev/null +++ b/testing/web-platform/tests/XMLHttpRequest/access-control-sandboxed-iframe-allow.htm @@ -0,0 +1,32 @@ + + + + Tests that sandboxed iframe has CORS XHR access to a server that accepts all domains + + + + + + + + + diff --git a/testing/web-platform/tests/XMLHttpRequest/access-control-sandboxed-iframe-denied-without-wildcard.htm b/testing/web-platform/tests/XMLHttpRequest/access-control-sandboxed-iframe-denied-without-wildcard.htm new file mode 100644 index 000000000000..7c375f606684 --- /dev/null +++ b/testing/web-platform/tests/XMLHttpRequest/access-control-sandboxed-iframe-denied-without-wildcard.htm @@ -0,0 +1,43 @@ + + + + Tests that sandboxed iframe does not have CORS XHR access to server with "Access-Control-Allow-Origin" set to the original origin + + + + + + + + + diff --git a/testing/web-platform/tests/XMLHttpRequest/access-control-sandboxed-iframe-denied.htm b/testing/web-platform/tests/XMLHttpRequest/access-control-sandboxed-iframe-denied.htm new file mode 100644 index 000000000000..a87dd7d1f255 --- /dev/null +++ b/testing/web-platform/tests/XMLHttpRequest/access-control-sandboxed-iframe-denied.htm @@ -0,0 +1,41 @@ + + + + Tests that sandboxed iframe does not have CORS XHR access to its server + + + + + + + + + diff --git a/testing/web-platform/tests/XMLHttpRequest/allow-lists-starting-with-comma.htm b/testing/web-platform/tests/XMLHttpRequest/allow-lists-starting-with-comma.htm index 03cc7cb8cd97..4a4e5e2218c7 100644 --- a/testing/web-platform/tests/XMLHttpRequest/allow-lists-starting-with-comma.htm +++ b/testing/web-platform/tests/XMLHttpRequest/allow-lists-starting-with-comma.htm @@ -4,30 +4,30 @@ Allow lists starting with a comma should be parsed correctly + - diff --git a/testing/web-platform/tests/XMLHttpRequest/resources/access-control-allow-lists.py b/testing/web-platform/tests/XMLHttpRequest/resources/access-control-allow-lists.py index c020cd2d59c2..526d365b3111 100644 --- a/testing/web-platform/tests/XMLHttpRequest/resources/access-control-allow-lists.py +++ b/testing/web-platform/tests/XMLHttpRequest/resources/access-control-allow-lists.py @@ -8,15 +8,13 @@ def main(request, response): response.headers.set("Access-Control-Allow-Origin", request.GET["origin"]) if "headers" in request.GET: - response.headers.set("Access-Control-Allow-Headers", '{'+request.GET["headers"]+'}') + response.headers.set("Access-Control-Allow-Headers", request.GET["headers"]) if "methods" in request.GET: - response.headers.set("Access-Control-Allow-Methods", '{'+request.GET["methods"]+'}') + response.headers.set("Access-Control-Allow-Methods", request.GET["methods"]) headers = dict(request.headers) for header in headers: headers[header] = headers[header][0] - headers["get_value"] = "" if "get_value" not in request.GET else request.GET["get_value"] - return json.dumps(headers) diff --git a/testing/web-platform/tests/XMLHttpRequest/resources/access-control-allow-with-body.py b/testing/web-platform/tests/XMLHttpRequest/resources/access-control-allow-with-body.py new file mode 100644 index 000000000000..221343567354 --- /dev/null +++ b/testing/web-platform/tests/XMLHttpRequest/resources/access-control-allow-with-body.py @@ -0,0 +1,15 @@ +def main(request, response): + headers = { + "Cache-Control": "no-store", + "Access-Control-Allow-Headers": "X-Requested-With", + "Access-Control-Max-Age": 0, + "Access-Control-Allow-Origin": "*", + "Access-Control-Allow-Methods": "*", + "Vary": "Accept-Encoding", + "Content-Type": "text/plain" + } + + for (name, value) in headers.items(): + response.headers.set(name, value) + + response.content = "PASS" diff --git a/testing/web-platform/tests/XMLHttpRequest/resources/access-control-basic-cors-safelisted-request-headers.py b/testing/web-platform/tests/XMLHttpRequest/resources/access-control-basic-cors-safelisted-request-headers.py new file mode 100644 index 000000000000..eba0e7d4c5ca --- /dev/null +++ b/testing/web-platform/tests/XMLHttpRequest/resources/access-control-basic-cors-safelisted-request-headers.py @@ -0,0 +1,14 @@ +def main(request, response): + response.headers.set("Cache-Control", "no-store") + + # This should be a simple request; deny preflight + if request.method != "POST": + response.status = 400 + return + + response.headers.set("Access-Control-Allow-Credentials", "true") + response.headers.set("Access-Control-Allow-Origin", request.headers.get("origin")) + + for header in ["Accept", "Accept-Language", "Content-Language", "Content-Type"]: + value = request.headers.get(header) + response.content += header + ": " + (value if value else "") + '\n' diff --git a/testing/web-platform/tests/XMLHttpRequest/resources/access-control-basic-whitelist-response-headers.py b/testing/web-platform/tests/XMLHttpRequest/resources/access-control-basic-whitelist-response-headers.py new file mode 100644 index 000000000000..e7c15bb8b300 --- /dev/null +++ b/testing/web-platform/tests/XMLHttpRequest/resources/access-control-basic-whitelist-response-headers.py @@ -0,0 +1,19 @@ +def main(request, response): + headers = { + # CORS-safelisted + "content-type": "text/plain", + "cache-control": "no cache", + "content-language": "en", + "expires": "Fri, 30 Oct 1998 14:19:41 GMT", + "last-modified": "Tue, 15 Nov 1994 12:45:26 GMT", + "pragma": "no-cache", + + # Non-CORS-safelisted + "x-test": "foobar", + + "Access-Control-Allow-Origin": "*" + } + for header in headers: + response.headers.set(header, headers[header]) + + response.content = "PASS: Cross-domain access allowed." diff --git a/testing/web-platform/tests/XMLHttpRequest/resources/access-control-cookie.py b/testing/web-platform/tests/XMLHttpRequest/resources/access-control-cookie.py new file mode 100644 index 000000000000..1e0d41d22eaa --- /dev/null +++ b/testing/web-platform/tests/XMLHttpRequest/resources/access-control-cookie.py @@ -0,0 +1,16 @@ +import datetime + +def main(request, response): + cookie_name = request.GET.first("cookie_name", "") + + response.headers.set("Cache-Control", "no-store") + response.headers.set("Access-Control-Allow-Origin", request.headers.get("origin")) + response.headers.set("Access-Control-Allow-Credentials", "true") + + for cookie in request.cookies: + # Set cookie to expire yesterday + response.set_cookie(cookie, "deleted", expires=-datetime.timedelta(days=1)) + + if cookie_name: + # Set cookie to expire tomorrow + response.set_cookie(cookie_name, "COOKIE", expires=datetime.timedelta(days=1)) diff --git a/testing/web-platform/tests/XMLHttpRequest/resources/access-control-preflight-request-header-sorted.py b/testing/web-platform/tests/XMLHttpRequest/resources/access-control-preflight-request-header-sorted.py new file mode 100644 index 000000000000..e40da43fe3dc --- /dev/null +++ b/testing/web-platform/tests/XMLHttpRequest/resources/access-control-preflight-request-header-sorted.py @@ -0,0 +1,18 @@ +def main(request, response): + response.headers.set('Cache-Control', 'no-store') + response.headers.set('Access-Control-Allow-Origin', + request.headers.get('origin')) + + headers = 'x-custom-s,x-custom-test,x-custom-u,x-custom-ua,x-custom-v' + if request.method == 'OPTIONS': + response.headers.set('Access-Control-Max-Age', '0') + response.headers.set('Access-Control-Allow-Headers', headers) + # Access-Control-Request-Headers should be sorted. + if headers != request.headers.get('Access-Control-Request-Headers'): + response.status = 400 + else: + if request.headers.get('x-custom-s'): + response.content = 'PASS' + else: + response.status = 400 + response.content = 'FAIL' diff --git a/testing/web-platform/tests/XMLHttpRequest/resources/access-control-preflight-request-headers-origin.py b/testing/web-platform/tests/XMLHttpRequest/resources/access-control-preflight-request-headers-origin.py new file mode 100644 index 000000000000..6fbb96e557b1 --- /dev/null +++ b/testing/web-platform/tests/XMLHttpRequest/resources/access-control-preflight-request-headers-origin.py @@ -0,0 +1,12 @@ +def main(request, response): + response.headers.set("Cache-Control", "no-store") + response.headers.set("Access-Control-Allow-Origin", "*") + + if request.method == "OPTIONS": + if "origin" in request.headers.get("Access-Control-Request-Headers").lower(): + response.status = 400 + response.content = "Error: 'origin' included in Access-Control-Request-Headers" + else: + response.headers.set("Access-Control-Allow-Headers", "x-pass") + else: + response.content = request.headers.get("x-pass") diff --git a/testing/web-platform/tests/XMLHttpRequest/resources/access-control-preflight-request-must-not-contain-cookie.py b/testing/web-platform/tests/XMLHttpRequest/resources/access-control-preflight-request-must-not-contain-cookie.py new file mode 100644 index 000000000000..eb49bf562d18 --- /dev/null +++ b/testing/web-platform/tests/XMLHttpRequest/resources/access-control-preflight-request-must-not-contain-cookie.py @@ -0,0 +1,12 @@ +def main(request, response): + if request.method == "OPTIONS" and request.cookies.get("foo"): + response.status = 400 + else: + response.headers.set("Cache-Control", "no-store") + response.headers.set("Access-Control-Allow-Origin", request.headers.get("origin")) + response.headers.set("Access-Control-Allow-Credentials", "true") + response.headers.set("Access-Control-Allow-Headers", "X-Proprietary-Header") + response.headers.set("Connection", "close") + + if request.cookies.get("foo"): + response.content = request.cookies["foo"].value diff --git a/testing/web-platform/tests/XMLHttpRequest/resources/access-control-sandboxed-iframe.html b/testing/web-platform/tests/XMLHttpRequest/resources/access-control-sandboxed-iframe.html new file mode 100644 index 000000000000..7e47275b6ce5 --- /dev/null +++ b/testing/web-platform/tests/XMLHttpRequest/resources/access-control-sandboxed-iframe.html @@ -0,0 +1,24 @@ + + + + + + diff --git a/testing/web-platform/tests/accelerometer/idlharness.https.html b/testing/web-platform/tests/accelerometer/idlharness.https.html index 6c9c9bbc1afa..b6d9ce559948 100644 --- a/testing/web-platform/tests/accelerometer/idlharness.https.html +++ b/testing/web-platform/tests/accelerometer/idlharness.https.html @@ -8,32 +8,20 @@ -
    -
    -interface Event {
    -};
    -
    -interface Error {
    -};
    -
    -dictionary EventInit {
    -};
    -
    +
     
    -
    -[SecureContext]
    +
     
     
    diff --git a/testing/web-platform/tests/ambient-light/idlharness.https.html b/testing/web-platform/tests/ambient-light/idlharness.https.html
    index 80da34178b84..cf43d5476e26 100644
    --- a/testing/web-platform/tests/ambient-light/idlharness.https.html
    +++ b/testing/web-platform/tests/ambient-light/idlharness.https.html
    @@ -8,32 +8,20 @@
     
     
     
    -
     
    -
    -interface Event {
    -};
    -
    -interface Error {
    -};
    -
    -dictionary EventInit {
    -};
    -
    +
     
    -
    -[SecureContext]
    +
     
     
    diff --git a/testing/web-platform/tests/auxclick/OWNERS b/testing/web-platform/tests/auxclick/OWNERS
    deleted file mode 100644
    index fe0105ee9651..000000000000
    --- a/testing/web-platform/tests/auxclick/OWNERS
    +++ /dev/null
    @@ -1 +0,0 @@
    -@NavidZ
    diff --git a/testing/web-platform/tests/background-fetch/content-security-policy.https.window.js b/testing/web-platform/tests/background-fetch/content-security-policy.https.window.js
    new file mode 100644
    index 000000000000..a6dc7c302c01
    --- /dev/null
    +++ b/testing/web-platform/tests/background-fetch/content-security-policy.https.window.js
    @@ -0,0 +1,20 @@
    +// META: script=/service-workers/service-worker/resources/test-helpers.sub.js
    +// META: script=resources/utils.js
    +'use strict';
    +
    +// Tests that requests blocked by Content Security Policy are rejected.
    +// https://w3c.github.io/webappsec-csp/#should-block-request
    +
    +// This is not a comprehensive test of Content Security Policy - it is just
    +// intended to check that CSP checks are enabled.
    +
    +var meta = document.createElement('meta');
    +meta.setAttribute('http-equiv', 'Content-Security-Policy');
    +meta.setAttribute('content', "connect-src 'none'");
    +document.head.appendChild(meta);
    +
    +backgroundFetchTest((t, bgFetch) => {
    +  return promise_rejects(
    +      t, new TypeError(),
    +      bgFetch.fetch(uniqueTag(), 'https://example.com'));
    +}, 'fetch blocked by CSP should reject');
    diff --git a/testing/web-platform/tests/background-fetch/credentials-in-url.https.window.js b/testing/web-platform/tests/background-fetch/credentials-in-url.https.window.js
    new file mode 100644
    index 000000000000..28b37b340b96
    --- /dev/null
    +++ b/testing/web-platform/tests/background-fetch/credentials-in-url.https.window.js
    @@ -0,0 +1,32 @@
    +// META: script=/service-workers/service-worker/resources/test-helpers.sub.js
    +// META: script=resources/utils.js
    +'use strict';
    +
    +// "If parsedURL includes credentials, then throw a TypeError."
    +// https://fetch.spec.whatwg.org/#dom-request
    +// (Added by https://github.com/whatwg/fetch/issues/26).
    +// "A URL includes credentials if its username or password is not the empty
    +// string."
    +// https://url.spec.whatwg.org/#include-credentials
    +
    +backgroundFetchTest((t, bgFetch) => {
    +  return bgFetch.fetch(uniqueTag(), 'https://example.com');
    +}, 'fetch without credentials in URL should register ok');
    +
    +backgroundFetchTest((t, bgFetch) => {
    +  return promise_rejects(
    +      t, new TypeError(),
    +      bgFetch.fetch(uniqueTag(), 'https://username:password@example.com'));
    +}, 'fetch with username and password in URL should reject');
    +
    +backgroundFetchTest((t, bgFetch) => {
    +  return promise_rejects(
    +      t, new TypeError(),
    +      bgFetch.fetch(uniqueTag(), 'https://username:@example.com'));
    +}, 'fetch with username and empty password in URL should reject');
    +
    +backgroundFetchTest((t, bgFetch) => {
    +  return promise_rejects(
    +      t, new TypeError(),
    +      bgFetch.fetch(uniqueTag(), 'https://:password@example.com'));
    +}, 'fetch with empty username and password in URL should reject');
    diff --git a/testing/web-platform/tests/background-fetch/dangling-markup.https.window.js b/testing/web-platform/tests/background-fetch/dangling-markup.https.window.js
    new file mode 100644
    index 000000000000..af7c395d7510
    --- /dev/null
    +++ b/testing/web-platform/tests/background-fetch/dangling-markup.https.window.js
    @@ -0,0 +1,17 @@
    +// META: script=/service-workers/service-worker/resources/test-helpers.sub.js
    +// META: script=resources/utils.js
    +'use strict';
    +
    +// "If request's url's potentially-dangling-markup flag is set, and request's
    +// url's scheme is an HTTP(S) scheme, then set response to a network error."
    +// https://github.com/whatwg/fetch/pull/519
    +// https://github.com/whatwg/fetch/issues/546
    +
    +// This is not a comprehensive test of dangling markup detection - it is just
    +// intended to check that detection is enabled.
    +
    +backgroundFetchTest((t, bgFetch) => {
    +  return promise_rejects(
    +      t, new TypeError(),
    +      bgFetch.fetch(uniqueTag(), 'https://example.com/?\n<'));
    +}, 'fetch to URL containing \\n and < should reject');
    diff --git a/testing/web-platform/tests/background-fetch/mixed-content-and-allowed-schemes.https.window.js b/testing/web-platform/tests/background-fetch/mixed-content-and-allowed-schemes.https.window.js
    new file mode 100644
    index 000000000000..50614a3565b0
    --- /dev/null
    +++ b/testing/web-platform/tests/background-fetch/mixed-content-and-allowed-schemes.https.window.js
    @@ -0,0 +1,80 @@
    +// META: script=/service-workers/service-worker/resources/test-helpers.sub.js
    +// META: script=resources/utils.js
    +'use strict';
    +
    +// Tests that Mixed Content requests are blocked.
    +// https://w3c.github.io/webappsec-mixed-content/#should-block-fetch
    +// https://w3c.github.io/webappsec-mixed-content/#a-priori-authenticated-url
    +// https://w3c.github.io/webappsec-secure-contexts/#is-origin-trustworthy
    +
    +// With an additional restriction that only https:// and loopback http://
    +// requests are allowed. Hence the wss:, file:, data:, etc schemes are blocked.
    +// https://github.com/WICG/background-fetch/issues/44
    +
    +// This is not a comprehensive test of mixed content blocking - it is just
    +// intended to check that blocking is enabled.
    +
    +backgroundFetchTest((t, bgFetch) => {
    +  return bgFetch.fetch(uniqueTag(), 'https://example.com');
    +}, 'https: fetch should register ok');
    +
    +backgroundFetchTest((t, bgFetch) => {
    +  return bgFetch.fetch(uniqueTag(), 'http://127.0.0.1');
    +}, 'loopback IPv4 http: fetch should register ok');
    +
    +backgroundFetchTest((t, bgFetch) => {
    +  return bgFetch.fetch(uniqueTag(), 'http://[::1]');
    +}, 'loopback IPv6 http: fetch should register ok');
    +
    +// http://localhost is not tested here since the correct behavior from
    +// https://w3c.github.io/webappsec-secure-contexts/#is-origin-trustworthy
    +// depends on whether the UA conforms to the name resolution rules in
    +// https://tools.ietf.org/html/draft-west-let-localhost-be-localhost
    +
    +backgroundFetchTest((t, bgFetch) => {
    +  return promise_rejects(t, new TypeError(),
    +                         bgFetch.fetch(uniqueTag(), 'http://example.com'));
    +}, 'non-loopback http: fetch should reject');
    +
    +backgroundFetchTest((t, bgFetch) => {
    +  return promise_rejects(t, new TypeError(),
    +                         bgFetch.fetch(uniqueTag(), 'http://192.0.2.0'));
    +}, 'non-loopback IPv4 http: fetch should reject');
    +
    +backgroundFetchTest((t, bgFetch) => {
    +  return promise_rejects(t, new TypeError(),
    +                         bgFetch.fetch(uniqueTag(), 'http://[2001:db8::1]'));
    +}, 'non-loopback IPv6 http: fetch should reject');
    +
    +backgroundFetchTest((t, bgFetch) => {
    +  return promise_rejects(t, new TypeError(),
    +                         bgFetch.fetch(uniqueTag(), ['https://example.com',
    +                                                     'http://example.com']));
    +}, 'https: and non-loopback http: fetch should reject');
    +
    +backgroundFetchTest((t, bgFetch) => {
    +  return promise_rejects(t, new TypeError(),
    +                         bgFetch.fetch(uniqueTag(), ['http://example.com',
    +                                                     'https://example.com']));
    +}, 'non-loopback http: and https: fetch should reject');
    +
    +
    +backgroundFetchTest((t, bgFetch) => {
    +  return promise_rejects(t, new TypeError(),
    +                         bgFetch.fetch(uniqueTag(), 'wss:127.0.0.1'));
    +}, 'wss: fetch should reject');
    +
    +backgroundFetchTest((t, bgFetch) => {
    +  return promise_rejects(t, new TypeError(),
    +                         bgFetch.fetch(uniqueTag(), 'file:///'));
    +}, 'file: fetch should reject');
    +
    +backgroundFetchTest((t, bgFetch) => {
    +  return promise_rejects(t, new TypeError(),
    +                         bgFetch.fetch(uniqueTag(), 'data:text/plain,foo'));
    +}, 'data: fetch should reject');
    +
    +backgroundFetchTest((t, bgFetch) => {
    +  return promise_rejects(t, new TypeError(),
    +                         bgFetch.fetch(uniqueTag(), 'foobar:bazqux'));
    +}, 'unknown scheme fetch should reject');
    diff --git a/testing/web-platform/tests/background-fetch/port-blocking.https.window.js b/testing/web-platform/tests/background-fetch/port-blocking.https.window.js
    new file mode 100644
    index 000000000000..dbf8a1a4d9f2
    --- /dev/null
    +++ b/testing/web-platform/tests/background-fetch/port-blocking.https.window.js
    @@ -0,0 +1,35 @@
    +// META: script=/service-workers/service-worker/resources/test-helpers.sub.js
    +// META: script=resources/utils.js
    +'use strict';
    +
    +// Tests that requests to bad ports are blocked.
    +// https://fetch.spec.whatwg.org/#port-blocking
    +
    +// This is not a comprehensive test of blocked ports - it is just intended to
    +// check that blocking is enabled.
    +
    +backgroundFetchTest((t, bgFetch) => {
    +  return bgFetch.fetch(uniqueTag(), 'https://example.com');
    +}, 'fetch to default https port should register ok');
    +
    +backgroundFetchTest((t, bgFetch) => {
    +  return bgFetch.fetch(uniqueTag(), 'http://127.0.0.1');
    +}, 'fetch to default http port should register ok');
    +
    +backgroundFetchTest((t, bgFetch) => {
    +  return bgFetch.fetch(uniqueTag(), 'https://example.com:443');
    +}, 'fetch to port 443 should register ok');
    +
    +backgroundFetchTest((t, bgFetch) => {
    +  return bgFetch.fetch(uniqueTag(), 'https://example.com:80');
    +}, 'fetch to port 80 should register ok, even over https');
    +
    +backgroundFetchTest((t, bgFetch) => {
    +  return bgFetch.fetch(uniqueTag(), 'https://example.com:8080');
    +}, 'fetch to non-default non-bad port (8080) should register ok');
    +
    +backgroundFetchTest((t, bgFetch) => {
    +  return promise_rejects(
    +      t, new TypeError(),
    +      bgFetch.fetch(uniqueTag(), 'https://example.com:587'));
    +}, 'fetch to bad port (SMTP) should reject');
    diff --git a/testing/web-platform/tests/background-fetch/resources/sw.js b/testing/web-platform/tests/background-fetch/resources/sw.js
    new file mode 100644
    index 000000000000..d4dc941796a1
    --- /dev/null
    +++ b/testing/web-platform/tests/background-fetch/resources/sw.js
    @@ -0,0 +1 @@
    +// Deliberately left empty for now.
    \ No newline at end of file
    diff --git a/testing/web-platform/tests/background-fetch/resources/utils.js b/testing/web-platform/tests/background-fetch/resources/utils.js
    new file mode 100644
    index 000000000000..f630f1085d4c
    --- /dev/null
    +++ b/testing/web-platform/tests/background-fetch/resources/utils.js
    @@ -0,0 +1,26 @@
    +'use strict';
    +
    +// Depends on /service-workers/service-worker/resources/test-helpers.sub.js
    +async function registerAndActivateServiceWorker(test) {
    +  const script = 'resources/sw.js';
    +  const scope = 'resources/scope' + location.pathname;
    +  let serviceWorkerRegistration =
    +      await service_worker_unregister_and_register(test, script, scope);
    +  add_completion_callback(() => {
    +    serviceWorkerRegistration.unregister();
    +  });
    +  await wait_for_state(test, serviceWorkerRegistration.installing, 'activated');
    +  return serviceWorkerRegistration;
    +}
    +
    +function backgroundFetchTest(func, description) {
    +  promise_test(async t => {
    +    const serviceWorkerRegistration = await registerAndActivateServiceWorker(t);
    +    return func(t, serviceWorkerRegistration.backgroundFetch);
    +  }, description);
    +}
    +
    +let _nextBackgroundFetchTag = 0;
    +function uniqueTag() {
    +  return 'tag' + _nextBackgroundFetchTag++;
    +}
    \ No newline at end of file
    diff --git a/testing/web-platform/tests/clipboard/OWNERS b/testing/web-platform/tests/clipboard-apis/OWNERS
    similarity index 100%
    rename from testing/web-platform/tests/clipboard/OWNERS
    rename to testing/web-platform/tests/clipboard-apis/OWNERS
    diff --git a/testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-archive-codebase.sub.html b/testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-archive-codebase.sub.html
    deleted file mode 100644
    index d770278401fc..000000000000
    --- a/testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-archive-codebase.sub.html
    +++ /dev/null
    @@ -1,41 +0,0 @@
    -
    -
    -
    -
    -    
    -    object-src-applet-archive-codebase
    -    
    -    
    -    
    -    
    -    
    -
    -
    -
    -
    -    
    -    This test passes if there is a CSP violation saying the plugin was blocked.
    -    
    -    
    - - - diff --git a/testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-archive-codebase.sub.html.sub.headers b/testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-archive-codebase.sub.html.sub.headers deleted file mode 100644 index 0b71a188bab2..000000000000 --- a/testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-archive-codebase.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: object-src-applet-archive-codebase={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: object-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-archive.sub.html b/testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-archive.sub.html deleted file mode 100644 index 69c71986e9f4..000000000000 --- a/testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-archive.sub.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - object-src-applet-archive - - - - - - - - - - - This test passes if there is a CSP violation saying the plugin was blocked. - -
    - - - diff --git a/testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-archive.sub.html.sub.headers b/testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-archive.sub.html.sub.headers deleted file mode 100644 index 4bd5ec149f68..000000000000 --- a/testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-archive.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: object-src-applet-archive={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: object-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-code-codebase.sub.html b/testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-code-codebase.sub.html deleted file mode 100644 index 6121dad56b28..000000000000 --- a/testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-code-codebase.sub.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - object-src-applet-archive-code-codebase - - - - - - - - - - - This test passes if there is a CSP violation saying the plugin was blocked. - -
    - - - diff --git a/testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-code-codebase.sub.html.sub.headers b/testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-code-codebase.sub.html.sub.headers deleted file mode 100644 index 1ced1a8e2c0a..000000000000 --- a/testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-code-codebase.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: object-src-applet-code-codebase={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: object-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-code.sub.html b/testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-code.sub.html deleted file mode 100644 index af598bfd1803..000000000000 --- a/testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-code.sub.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - object-src-applet-code - - - - - - - - - - - This test passes if there is a CSP violation saying the plugin was blocked. - -
    - - - diff --git a/testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-code.sub.html.sub.headers b/testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-code.sub.html.sub.headers deleted file mode 100644 index 44bd725f8179..000000000000 --- a/testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-code.sub.html.sub.headers +++ /dev/null @@ -1,6 +0,0 @@ -Expires: Mon, 26 Jul 1997 05:00:00 GMT -Cache-Control: no-store, no-cache, must-revalidate -Cache-Control: post-check=0, pre-check=0, false -Pragma: no-cache -Set-Cookie: object-src-applet-code={{$id:uuid()}}; Path=/content-security-policy/blink-contrib -Content-Security-Policy: object-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/testing/web-platform/tests/core-aam/OWNERS b/testing/web-platform/tests/core-aam/OWNERS new file mode 100644 index 000000000000..2a4c47ed4df0 --- /dev/null +++ b/testing/web-platform/tests/core-aam/OWNERS @@ -0,0 +1,2 @@ +@halindrome +@joanmarie diff --git a/testing/web-platform/tests/core-aam/README.md b/testing/web-platform/tests/core-aam/README.md new file mode 100644 index 000000000000..8728628a6dc7 --- /dev/null +++ b/testing/web-platform/tests/core-aam/README.md @@ -0,0 +1,59 @@ +core-aam: Tests for the Core Accessibility API Mappings Recommendation +====================================================================== + +The [Core Accessibility API Mappings Recommendation](https://www.w3.org/TR/core-aam-1.1/) +describes how user agents should expose semantics of web content languages to accessibility +APIs. This helps users with disabilities to obtain and interact with information using +assistive technologies. Documenting these mappings promotes interoperable exposure of roles, +states, properties, and events implemented by accessibility APIs and helps to ensure that +this information appears in a manner consistent with author intent. + +The purpose of these tests is to help ensure that user agents support the requirements of +the Recommendation. + +The general approach for this testing is to enable both manual and automated testing, with +a preference for automation. + + +Running Tests +------------- + +In order to run these tests in an automated fashion, you will need to have a special +Assistive Technology Test Adapter (ATTA) for the platform under test. We will provide +a list of these for popular platforms here as they are made available. + +The ATTA will monitor the window under test via the platforms Accessibility Layer, +forwarding information about the Accessibility Tree to the running test so that it +can evaluate support for the various features under test. + +The workflow for running these tests is something like: + +1. Start up the ATTA for the platform under test. +2. Start up the test driver window, select the core-aam tests to be run, + and click "Start" +3. A window pops up that shows a test, the description of which tells the + tester what is being tested. In an automated test, the test will proceed + without user intervention. In a manual test, some user input or verification + may be required. +4. The test runs. Success or failure is determined and reported to the test + driver window, which then cycles to the next test in the sequence. +5. Repeat steps 2-4 until done. +6. Download the JSON format report of test results, which can then be visually + inspected, reported on using various tools, or passed on to W3C for evaluation + and collection in the Implementation Report via github. + +**Remember that while these tests are written to help exercise implementations, +their other (important) purpose is to increase confidence that there are +interoperable implementations.** So, implementers are the audience, but these +tests are not meant to be a comprehensive collection of tests for a client that +might implement the Recommendation. + + +Capturing and Reporting Results +------------------------------- + +As tests are run against implementations, if the results of testing are +submitted to [test-results](https://github.com/w3c/test-results/) then they will +be automatically included in documents generated by +[wptreport](https://www.github.com/w3c/wptreport). The same tool can be used +locally to view reports about recorded results. diff --git a/testing/web-platform/tests/core-aam/alert-manual.html b/testing/web-platform/tests/core-aam/alert-manual.html new file mode 100644 index 000000000000..e1a482205acc --- /dev/null +++ b/testing/web-platform/tests/core-aam/alert-manual.html @@ -0,0 +1,96 @@ + + + + alert + + + + + + + + + +

    This test examines the ARIA properties for alert.

    + + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/alertdialog-manual.html b/testing/web-platform/tests/core-aam/alertdialog-manual.html new file mode 100644 index 000000000000..87c625c8a18a --- /dev/null +++ b/testing/web-platform/tests/core-aam/alertdialog-manual.html @@ -0,0 +1,84 @@ + + + + alertdialog + + + + + + + + + +

    This test examines the ARIA properties for alertdialog.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/application-manual.html b/testing/web-platform/tests/core-aam/application-manual.html new file mode 100644 index 000000000000..38c1e461f7d3 --- /dev/null +++ b/testing/web-platform/tests/core-aam/application-manual.html @@ -0,0 +1,90 @@ + + + + application + + + + + + + + + +

    This test examines the ARIA properties for application.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-atomic_false-manual.html b/testing/web-platform/tests/core-aam/aria-atomic_false-manual.html new file mode 100644 index 000000000000..c66e9956f9a3 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-atomic_false-manual.html @@ -0,0 +1,86 @@ + + + + aria-atomic=false + + + + + + + + + +

    This test examines the ARIA properties for aria-atomic=false.

    +
    +
    content
    +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-atomic_true-manual.html b/testing/web-platform/tests/core-aam/aria-atomic_true-manual.html new file mode 100644 index 000000000000..f6235305a4bf --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-atomic_true-manual.html @@ -0,0 +1,122 @@ + + + + aria-atomic=true + + + + + + + + + +

    This test examines the ARIA properties for aria-atomic=true.

    +
    +
    content
    +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-autocomplete_both_new-manual.html b/testing/web-platform/tests/core-aam/aria-autocomplete_both_new-manual.html new file mode 100644 index 000000000000..f59b0d64335e --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-autocomplete_both_new-manual.html @@ -0,0 +1,70 @@ + + + + aria-autocomplete=both NEW + + + + + + + + + +

    This test examines the ARIA properties for aria-autocomplete=both NEW.

    +
    +
    content
    +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-autocomplete_inline_new-manual.html b/testing/web-platform/tests/core-aam/aria-autocomplete_inline_new-manual.html new file mode 100644 index 000000000000..9ad775ae4f62 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-autocomplete_inline_new-manual.html @@ -0,0 +1,70 @@ + + + + aria-autocomplete=inline NEW + + + + + + + + + +

    This test examines the ARIA properties for aria-autocomplete=inline NEW.

    +
    +
    content
    +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-autocomplete_list_new-manual.html b/testing/web-platform/tests/core-aam/aria-autocomplete_list_new-manual.html new file mode 100644 index 000000000000..c9404c56d747 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-autocomplete_list_new-manual.html @@ -0,0 +1,70 @@ + + + + aria-autocomplete=list NEW + + + + + + + + + +

    This test examines the ARIA properties for aria-autocomplete=list NEW.

    +
    +
    content
    +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-busy_false-manual.html b/testing/web-platform/tests/core-aam/aria-busy_false-manual.html new file mode 100644 index 000000000000..a42aa08cfa7b --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-busy_false-manual.html @@ -0,0 +1,72 @@ + + + + aria-busy=false + + + + + + + + + +

    This test examines the ARIA properties for aria-busy=false.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-busy_true-manual.html b/testing/web-platform/tests/core-aam/aria-busy_true-manual.html new file mode 100644 index 000000000000..f1207573a65e --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-busy_true-manual.html @@ -0,0 +1,72 @@ + + + + aria-busy=true + + + + + + + + + +

    This test examines the ARIA properties for aria-busy=true.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-checked_false_on_checkbox-manual.html b/testing/web-platform/tests/core-aam/aria-checked_false_on_checkbox-manual.html new file mode 100644 index 000000000000..9b8073142649 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-checked_false_on_checkbox-manual.html @@ -0,0 +1,86 @@ + + + + aria-checked=false on checkbox + + + + + + + + + +

    This test examines the ARIA properties for aria-checked=false on checkbox.

    + + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-checked_false_on_menuitemradio-manual.html b/testing/web-platform/tests/core-aam/aria-checked_false_on_menuitemradio-manual.html new file mode 100644 index 000000000000..3180ef56dbca --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-checked_false_on_menuitemradio-manual.html @@ -0,0 +1,100 @@ + + + + aria-checked=false on menuitemradio + + + + + + + + + +

    This test examines the ARIA properties for aria-checked=false on menuitemradio.

    +
    +
    content
    +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-checked_mixed-manual.html b/testing/web-platform/tests/core-aam/aria-checked_mixed-manual.html new file mode 100644 index 000000000000..3eb149d81ec9 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-checked_mixed-manual.html @@ -0,0 +1,92 @@ + + + + aria-checked=mixed + + + + + + + + + +

    This test examines the ARIA properties for aria-checked=mixed.

    + + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-checked_true_on_checkbox-manual.html b/testing/web-platform/tests/core-aam/aria-checked_true_on_checkbox-manual.html new file mode 100644 index 000000000000..bb44d317795d --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-checked_true_on_checkbox-manual.html @@ -0,0 +1,86 @@ + + + + aria-checked=true on checkbox + + + + + + + + + +

    This test examines the ARIA properties for aria-checked=true on checkbox.

    + + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-checked_true_on_menuitemradio-manual.html b/testing/web-platform/tests/core-aam/aria-checked_true_on_menuitemradio-manual.html new file mode 100644 index 000000000000..49c048274423 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-checked_true_on_menuitemradio-manual.html @@ -0,0 +1,100 @@ + + + + aria-checked=true on menuitemradio + + + + + + + + + +

    This test examines the ARIA properties for aria-checked=true on menuitemradio.

    +
    +
    content
    +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-colcount_new-manual.html b/testing/web-platform/tests/core-aam/aria-colcount_new-manual.html new file mode 100644 index 000000000000..bfe93b7a4b5e --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-colcount_new-manual.html @@ -0,0 +1,98 @@ + + + + aria-colcount NEW + + + + + + + + + +

    This test examines the ARIA properties for aria-colcount NEW.

    +
    +
    +
    content
    +
    +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-colindex_new-manual.html b/testing/web-platform/tests/core-aam/aria-colindex_new-manual.html new file mode 100644 index 000000000000..7839ea4346f4 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-colindex_new-manual.html @@ -0,0 +1,88 @@ + + + + aria-colindex NEW + + + + + + + + + +

    This test examines the ARIA properties for aria-colindex NEW.

    +
    +
    +
    content
    +
    +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-colspan_new-manual.html b/testing/web-platform/tests/core-aam/aria-colspan_new-manual.html new file mode 100644 index 000000000000..8d74444a898b --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-colspan_new-manual.html @@ -0,0 +1,88 @@ + + + + aria-colspan NEW + + + + + + + + + +

    This test examines the ARIA properties for aria-colspan NEW.

    +
    +
    +
    content
    +
    +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-controls-manual.html b/testing/web-platform/tests/core-aam/aria-controls-manual.html new file mode 100644 index 000000000000..69b693cc665e --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-controls-manual.html @@ -0,0 +1,101 @@ + + + + aria-controls + + + + + + + + + +

    This test examines the ARIA properties for aria-controls.

    +
    +
    content
    +
    +
    +
    content
    +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-current_with_non-false_allowed_value_new-manual.html b/testing/web-platform/tests/core-aam/aria-current_with_non-false_allowed_value_new-manual.html new file mode 100644 index 000000000000..5f6119d8e5ae --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-current_with_non-false_allowed_value_new-manual.html @@ -0,0 +1,78 @@ + + + + aria-current with non-false allowed value NEW + + + + + + + + + +

    This test examines the ARIA properties for aria-current with non-false allowed value NEW.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-current_with_unrecognized_value_new-manual.html b/testing/web-platform/tests/core-aam/aria-current_with_unrecognized_value_new-manual.html new file mode 100644 index 000000000000..fb29913c8f4b --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-current_with_unrecognized_value_new-manual.html @@ -0,0 +1,78 @@ + + + + aria-current with unrecognized value NEW + + + + + + + + + +

    This test examines the ARIA properties for aria-current with unrecognized value NEW.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-describedby-manual.html b/testing/web-platform/tests/core-aam/aria-describedby-manual.html new file mode 100644 index 000000000000..d47732809ea0 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-describedby-manual.html @@ -0,0 +1,115 @@ + + + + aria-describedby + + + + + + + + + +

    This test examines the ARIA properties for aria-describedby.

    +
    content
    +
    hello world
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-details_new-manual.html b/testing/web-platform/tests/core-aam/aria-details_new-manual.html new file mode 100644 index 000000000000..fed7982d7916 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-details_new-manual.html @@ -0,0 +1,88 @@ + + + + aria-details NEW + + + + + + + + + +

    This test examines the ARIA properties for aria-details NEW.

    +
    content
    +
    hello world
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-disabled_false-manual.html b/testing/web-platform/tests/core-aam/aria-disabled_false-manual.html new file mode 100644 index 000000000000..3981dd65e28e --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-disabled_false-manual.html @@ -0,0 +1,72 @@ + + + + aria-disabled=false + + + + + + + + + +

    This test examines the ARIA properties for aria-disabled=false.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-disabled_true-manual.html b/testing/web-platform/tests/core-aam/aria-disabled_true-manual.html new file mode 100644 index 000000000000..944ef5d454ab --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-disabled_true-manual.html @@ -0,0 +1,90 @@ + + + + aria-disabled=true + + + + + + + + + +

    This test examines the ARIA properties for aria-disabled=true.

    +
    + +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-dropeffect_copy-manual.html b/testing/web-platform/tests/core-aam/aria-dropeffect_copy-manual.html new file mode 100644 index 000000000000..28809a5c03be --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-dropeffect_copy-manual.html @@ -0,0 +1,72 @@ + + + + aria-dropeffect=copy + + + + + + + + + +

    This test examines the ARIA properties for aria-dropeffect=copy.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-dropeffect_execute-manual.html b/testing/web-platform/tests/core-aam/aria-dropeffect_execute-manual.html new file mode 100644 index 000000000000..834d092f6771 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-dropeffect_execute-manual.html @@ -0,0 +1,72 @@ + + + + aria-dropeffect=execute + + + + + + + + + +

    This test examines the ARIA properties for aria-dropeffect=execute.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-dropeffect_link-manual.html b/testing/web-platform/tests/core-aam/aria-dropeffect_link-manual.html new file mode 100644 index 000000000000..1ada887c98c0 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-dropeffect_link-manual.html @@ -0,0 +1,72 @@ + + + + aria-dropeffect=link + + + + + + + + + +

    This test examines the ARIA properties for aria-dropeffect=link.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-dropeffect_move-manual.html b/testing/web-platform/tests/core-aam/aria-dropeffect_move-manual.html new file mode 100644 index 000000000000..8b074c8cdeb6 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-dropeffect_move-manual.html @@ -0,0 +1,72 @@ + + + + aria-dropeffect=move + + + + + + + + + +

    This test examines the ARIA properties for aria-dropeffect=move.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-dropeffect_none-manual.html b/testing/web-platform/tests/core-aam/aria-dropeffect_none-manual.html new file mode 100644 index 000000000000..e410ff2fdc1d --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-dropeffect_none-manual.html @@ -0,0 +1,56 @@ + + + + aria-dropeffect=none + + + + + + + + + +

    This test examines the ARIA properties for aria-dropeffect=none.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-dropeffect_popup-manual.html b/testing/web-platform/tests/core-aam/aria-dropeffect_popup-manual.html new file mode 100644 index 000000000000..e98952dc6f24 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-dropeffect_popup-manual.html @@ -0,0 +1,72 @@ + + + + aria-dropeffect=popup + + + + + + + + + +

    This test examines the ARIA properties for aria-dropeffect=popup.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-errormessage-manual.html b/testing/web-platform/tests/core-aam/aria-errormessage-manual.html new file mode 100644 index 000000000000..648133d75107 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-errormessage-manual.html @@ -0,0 +1,97 @@ + + + + aria-errormessage + + + + + + + + + +

    This test examines the ARIA properties for aria-errormessage.

    +
    content
    +
    hello world
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-expanded_false-manual.html b/testing/web-platform/tests/core-aam/aria-expanded_false-manual.html new file mode 100644 index 000000000000..5c00c7edd243 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-expanded_false-manual.html @@ -0,0 +1,78 @@ + + + + aria-expanded=false + + + + + + + + + +

    This test examines the ARIA properties for aria-expanded=false.

    + + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-expanded_true-manual.html b/testing/web-platform/tests/core-aam/aria-expanded_true-manual.html new file mode 100644 index 000000000000..3e32d1d866b1 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-expanded_true-manual.html @@ -0,0 +1,78 @@ + + + + aria-expanded=true + + + + + + + + + +

    This test examines the ARIA properties for aria-expanded=true.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-flowto-manual.html b/testing/web-platform/tests/core-aam/aria-flowto-manual.html new file mode 100644 index 000000000000..eaace494717a --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-flowto-manual.html @@ -0,0 +1,97 @@ + + + + aria-flowto + + + + + + + + + +

    This test examines the ARIA properties for aria-flowto.

    +
    content
    + + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-grabbed_false-manual.html b/testing/web-platform/tests/core-aam/aria-grabbed_false-manual.html new file mode 100644 index 000000000000..e75ba9f036a7 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-grabbed_false-manual.html @@ -0,0 +1,72 @@ + + + + aria-grabbed=false + + + + + + + + + +

    This test examines the ARIA properties for aria-grabbed=false.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-grabbed_true-manual.html b/testing/web-platform/tests/core-aam/aria-grabbed_true-manual.html new file mode 100644 index 000000000000..e830149bbed0 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-grabbed_true-manual.html @@ -0,0 +1,72 @@ + + + + aria-grabbed=true + + + + + + + + + +

    This test examines the ARIA properties for aria-grabbed=true.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-haspopup_dialog_new-manual.html b/testing/web-platform/tests/core-aam/aria-haspopup_dialog_new-manual.html new file mode 100644 index 000000000000..1352a26d8105 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-haspopup_dialog_new-manual.html @@ -0,0 +1,86 @@ + + + + aria-haspopup=dialog NEW + + + + + + + + + +

    This test examines the ARIA properties for aria-haspopup=dialog NEW.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-haspopup_false-manual.html b/testing/web-platform/tests/core-aam/aria-haspopup_false-manual.html new file mode 100644 index 000000000000..1082c4f178e9 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-haspopup_false-manual.html @@ -0,0 +1,56 @@ + + + + aria-haspopup=false + + + + + + + + + +

    This test examines the ARIA properties for aria-haspopup=false.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-haspopup_listbox_new-manual.html b/testing/web-platform/tests/core-aam/aria-haspopup_listbox_new-manual.html new file mode 100644 index 000000000000..993e90bfc982 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-haspopup_listbox_new-manual.html @@ -0,0 +1,86 @@ + + + + aria-haspopup=listbox NEW + + + + + + + + + +

    This test examines the ARIA properties for aria-haspopup=listbox NEW.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-haspopup_menu_new-manual.html b/testing/web-platform/tests/core-aam/aria-haspopup_menu_new-manual.html new file mode 100644 index 000000000000..536ba11e73d0 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-haspopup_menu_new-manual.html @@ -0,0 +1,86 @@ + + + + aria-haspopup=menu NEW + + + + + + + + + +

    This test examines the ARIA properties for aria-haspopup=menu NEW.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-haspopup_tree_new-manual.html b/testing/web-platform/tests/core-aam/aria-haspopup_tree_new-manual.html new file mode 100644 index 000000000000..41cf2283245b --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-haspopup_tree_new-manual.html @@ -0,0 +1,86 @@ + + + + aria-haspopup=tree NEW + + + + + + + + + +

    This test examines the ARIA properties for aria-haspopup=tree NEW.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-haspopup_true-manual.html b/testing/web-platform/tests/core-aam/aria-haspopup_true-manual.html new file mode 100644 index 000000000000..73bc951d33b7 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-haspopup_true-manual.html @@ -0,0 +1,86 @@ + + + + aria-haspopup=true + + + + + + + + + +

    This test examines the ARIA properties for aria-haspopup=true.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-hidden_true-manual.html b/testing/web-platform/tests/core-aam/aria-hidden_true-manual.html new file mode 100644 index 000000000000..5f4e340c3a34 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-hidden_true-manual.html @@ -0,0 +1,72 @@ + + + + aria-hidden=true + + + + + + + + + +

    This test examines the ARIA properties for aria-hidden=true.

    + + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-invalid_false-manual.html b/testing/web-platform/tests/core-aam/aria-invalid_false-manual.html new file mode 100644 index 000000000000..badea7a8fbd2 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-invalid_false-manual.html @@ -0,0 +1,72 @@ + + + + aria-invalid=false + + + + + + + + + +

    This test examines the ARIA properties for aria-invalid=false.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-invalid_grammar-manual.html b/testing/web-platform/tests/core-aam/aria-invalid_grammar-manual.html new file mode 100644 index 000000000000..1a98c4cb7567 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-invalid_grammar-manual.html @@ -0,0 +1,84 @@ + + + + aria-invalid=grammar + + + + + + + + + +

    This test examines the ARIA properties for aria-invalid=grammar.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-invalid_spelling-manual.html b/testing/web-platform/tests/core-aam/aria-invalid_spelling-manual.html new file mode 100644 index 000000000000..e287e47231a8 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-invalid_spelling-manual.html @@ -0,0 +1,84 @@ + + + + aria-invalid=spelling + + + + + + + + + +

    This test examines the ARIA properties for aria-invalid=spelling.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-invalid_true-manual.html b/testing/web-platform/tests/core-aam/aria-invalid_true-manual.html new file mode 100644 index 000000000000..7fd9d74ecdc3 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-invalid_true-manual.html @@ -0,0 +1,84 @@ + + + + aria-invalid=true + + + + + + + + + +

    This test examines the ARIA properties for aria-invalid=true.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-invalid_with_unrecognized_value-manual.html b/testing/web-platform/tests/core-aam/aria-invalid_with_unrecognized_value-manual.html new file mode 100644 index 000000000000..11e018d2c692 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-invalid_with_unrecognized_value-manual.html @@ -0,0 +1,84 @@ + + + + aria-invalid with unrecognized value + + + + + + + + + +

    This test examines the ARIA properties for aria-invalid with unrecognized value.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-keyshortcuts_new-manual.html b/testing/web-platform/tests/core-aam/aria-keyshortcuts_new-manual.html new file mode 100644 index 000000000000..90364193b200 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-keyshortcuts_new-manual.html @@ -0,0 +1,64 @@ + + + + aria-keyshortcuts NEW + + + + + + + + + +

    This test examines the ARIA properties for aria-keyshortcuts NEW.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-label-manual.html b/testing/web-platform/tests/core-aam/aria-label-manual.html new file mode 100644 index 000000000000..ca3b16f7ed69 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-label-manual.html @@ -0,0 +1,72 @@ + + + + aria-label + + + + + + + + + +

    This test examines the ARIA properties for aria-label.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-labelledby-manual.html b/testing/web-platform/tests/core-aam/aria-labelledby-manual.html new file mode 100644 index 000000000000..27ab265dcc7c --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-labelledby-manual.html @@ -0,0 +1,121 @@ + + + + aria-labelledby + + + + + + + + + +

    This test examines the ARIA properties for aria-labelledby.

    +
    content
    +
    hello world
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-level_on_heading_new-manual.html b/testing/web-platform/tests/core-aam/aria-level_on_heading_new-manual.html new file mode 100644 index 000000000000..6bd58cfbc9e0 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-level_on_heading_new-manual.html @@ -0,0 +1,78 @@ + + + + aria-level on heading NEW + + + + + + + + + +

    This test examines the ARIA properties for aria-level on heading NEW.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-level_on_non-heading-manual.html b/testing/web-platform/tests/core-aam/aria-level_on_non-heading-manual.html new file mode 100644 index 000000000000..54e145958f88 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-level_on_non-heading-manual.html @@ -0,0 +1,80 @@ + + + + aria-level on non-heading + + + + + + + + + +

    This test examines the ARIA properties for aria-level on non-heading.

    +
    +
    content
    +
    then expose the element with id of 'test' with the platform mappings for aria-level on non-heading. + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-live_assertive-manual.html b/testing/web-platform/tests/core-aam/aria-live_assertive-manual.html new file mode 100644 index 000000000000..a41f71f85327 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-live_assertive-manual.html @@ -0,0 +1,110 @@ + + + + aria-live=assertive + + + + + + + + + +

    This test examines the ARIA properties for aria-live=assertive.

    +
    +
    content
    +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-live_off-manual.html b/testing/web-platform/tests/core-aam/aria-live_off-manual.html new file mode 100644 index 000000000000..5985820b8025 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-live_off-manual.html @@ -0,0 +1,110 @@ + + + + aria-live=off + + + + + + + + + +

    This test examines the ARIA properties for aria-live=off.

    +
    +
    content
    +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-live_polite-manual.html b/testing/web-platform/tests/core-aam/aria-live_polite-manual.html new file mode 100644 index 000000000000..7f334c1c9e4c --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-live_polite-manual.html @@ -0,0 +1,110 @@ + + + + aria-live=polite + + + + + + + + + +

    This test examines the ARIA properties for aria-live=polite.

    +
    +
    content
    +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-modal_false_new-manual.html b/testing/web-platform/tests/core-aam/aria-modal_false_new-manual.html new file mode 100644 index 000000000000..f06ff736a4ae --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-modal_false_new-manual.html @@ -0,0 +1,81 @@ + + + + aria-modal=false NEW + + + + + + + + + +

    This test examines the ARIA properties for aria-modal=false NEW.

    +
    content
    + + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-modal_true_new-manual.html b/testing/web-platform/tests/core-aam/aria-modal_true_new-manual.html new file mode 100644 index 000000000000..96541dd0fcb2 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-modal_true_new-manual.html @@ -0,0 +1,81 @@ + + + + aria-modal=true NEW + + + + + + + + + +

    This test examines the ARIA properties for aria-modal=true NEW.

    +
    content
    + + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-multiline_false-manual.html b/testing/web-platform/tests/core-aam/aria-multiline_false-manual.html new file mode 100644 index 000000000000..18d5e96f61bd --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-multiline_false-manual.html @@ -0,0 +1,68 @@ + + + + aria-multiline=false + + + + + + + + + +

    This test examines the ARIA properties for aria-multiline=false.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-multiline_true-manual.html b/testing/web-platform/tests/core-aam/aria-multiline_true-manual.html new file mode 100644 index 000000000000..58781644755a --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-multiline_true-manual.html @@ -0,0 +1,76 @@ + + + + aria-multiline=true + + + + + + + + + +

    This test examines the ARIA properties for aria-multiline=true.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-multiselectable_false-manual.html b/testing/web-platform/tests/core-aam/aria-multiselectable_false-manual.html new file mode 100644 index 000000000000..f370bc4581e5 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-multiselectable_false-manual.html @@ -0,0 +1,66 @@ + + + + aria-multiselectable=false + + + + + + + + + +

    This test examines the ARIA properties for aria-multiselectable=false.

    +
    +
    +
    content
    +
    +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-multiselectable_true-manual.html b/testing/web-platform/tests/core-aam/aria-multiselectable_true-manual.html new file mode 100644 index 000000000000..38df7ec63697 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-multiselectable_true-manual.html @@ -0,0 +1,74 @@ + + + + aria-multiselectable=true + + + + + + + + + +

    This test examines the ARIA properties for aria-multiselectable=true.

    +
    +
    +
    content
    +
    +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-orientation_horizontal-manual.html b/testing/web-platform/tests/core-aam/aria-orientation_horizontal-manual.html new file mode 100644 index 000000000000..50af2cd2847e --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-orientation_horizontal-manual.html @@ -0,0 +1,84 @@ + + + + aria-orientation=horizontal + + + + + + + + + +

    This test examines the ARIA properties for aria-orientation=horizontal.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-orientation_undefined_new-manual.html b/testing/web-platform/tests/core-aam/aria-orientation_undefined_new-manual.html new file mode 100644 index 000000000000..0019312b4828 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-orientation_undefined_new-manual.html @@ -0,0 +1,62 @@ + + + + aria-orientation=undefined NEW + + + + + + + + + +

    This test examines the ARIA properties for aria-orientation=undefined NEW.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-orientation_vertical-manual.html b/testing/web-platform/tests/core-aam/aria-orientation_vertical-manual.html new file mode 100644 index 000000000000..b7d4470b9f57 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-orientation_vertical-manual.html @@ -0,0 +1,84 @@ + + + + aria-orientation=vertical + + + + + + + + + +

    This test examines the ARIA properties for aria-orientation=vertical.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-owns_may_need_manual_verification-manual.html b/testing/web-platform/tests/core-aam/aria-owns_may_need_manual_verification-manual.html new file mode 100644 index 000000000000..c00e238b2c0b --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-owns_may_need_manual_verification-manual.html @@ -0,0 +1,143 @@ + + + + aria-owns may need manual verification + + + + + + + + + +

    This test examines the ARIA properties for aria-owns may need manual verification.

    +
    content
    +
    content
    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-placeholder_new-manual.html b/testing/web-platform/tests/core-aam/aria-placeholder_new-manual.html new file mode 100644 index 000000000000..ea885b3dc70d --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-placeholder_new-manual.html @@ -0,0 +1,72 @@ + + + + aria-placeholder NEW + + + + + + + + + +

    This test examines the ARIA properties for aria-placeholder NEW.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-posinset-manual.html b/testing/web-platform/tests/core-aam/aria-posinset-manual.html new file mode 100644 index 000000000000..271cd9e35a5b --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-posinset-manual.html @@ -0,0 +1,80 @@ + + + + aria-posinset + + + + + + + + + +

    This test examines the ARIA properties for aria-posinset.

    +
    +
    content
    +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-pressed_false-manual.html b/testing/web-platform/tests/core-aam/aria-pressed_false-manual.html new file mode 100644 index 000000000000..537bc90f5fe7 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-pressed_false-manual.html @@ -0,0 +1,72 @@ + + + + aria-pressed=false + + + + + + + + + +

    This test examines the ARIA properties for aria-pressed=false.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-pressed_mixed-manual.html b/testing/web-platform/tests/core-aam/aria-pressed_mixed-manual.html new file mode 100644 index 000000000000..399d67423e96 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-pressed_mixed-manual.html @@ -0,0 +1,72 @@ + + + + aria-pressed=mixed + + + + + + + + + +

    This test examines the ARIA properties for aria-pressed=mixed.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-pressed_true-manual.html b/testing/web-platform/tests/core-aam/aria-pressed_true-manual.html new file mode 100644 index 000000000000..1ca8832b4f3b --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-pressed_true-manual.html @@ -0,0 +1,72 @@ + + + + aria-pressed=true + + + + + + + + + +

    This test examines the ARIA properties for aria-pressed=true.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-readonly_false-manual.html b/testing/web-platform/tests/core-aam/aria-readonly_false-manual.html new file mode 100644 index 000000000000..d0b28abca5c8 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-readonly_false-manual.html @@ -0,0 +1,80 @@ + + + + aria-readonly=false + + + + + + + + + +

    This test examines the ARIA properties for aria-readonly=false.

    + + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-readonly_is_unspecified_on_gridcell_new-manual.html b/testing/web-platform/tests/core-aam/aria-readonly_is_unspecified_on_gridcell_new-manual.html new file mode 100644 index 000000000000..1373295da628 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-readonly_is_unspecified_on_gridcell_new-manual.html @@ -0,0 +1,82 @@ + + + + aria-readonly is unspecified on gridcell NEW + + + + + + + + + +

    This test examines the ARIA properties for aria-readonly is unspecified on gridcell NEW.

    +
    +
    +
    content
    +
    +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-readonly_true_on_checkbox-manual.html b/testing/web-platform/tests/core-aam/aria-readonly_true_on_checkbox-manual.html new file mode 100644 index 000000000000..d131707fa5f8 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-readonly_true_on_checkbox-manual.html @@ -0,0 +1,78 @@ + + + + aria-readonly=true on checkbox + + + + + + + + + +

    This test examines the ARIA properties for aria-readonly=true on checkbox.

    + + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-readonly_true_on_radiogroup-manual.html b/testing/web-platform/tests/core-aam/aria-readonly_true_on_radiogroup-manual.html new file mode 100644 index 000000000000..7f20bc42449a --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-readonly_true_on_radiogroup-manual.html @@ -0,0 +1,90 @@ + + + + aria-readonly=true on radiogroup + + + + + + + + + +

    This test examines the ARIA properties for aria-readonly=true on radiogroup.

    +
    + +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-readonly_true_on_textbox-manual.html b/testing/web-platform/tests/core-aam/aria-readonly_true_on_textbox-manual.html new file mode 100644 index 000000000000..556dad152b43 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-readonly_true_on_textbox-manual.html @@ -0,0 +1,78 @@ + + + + aria-readonly=true on textbox + + + + + + + + + +

    This test examines the ARIA properties for aria-readonly=true on textbox.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-relevant-manual.html b/testing/web-platform/tests/core-aam/aria-relevant-manual.html new file mode 100644 index 000000000000..516f1a028507 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-relevant-manual.html @@ -0,0 +1,110 @@ + + + + aria-relevant + + + + + + + + + +

    This test examines the ARIA properties for aria-relevant.

    +
    +
    content
    +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-required_true-manual.html b/testing/web-platform/tests/core-aam/aria-required_true-manual.html new file mode 100644 index 000000000000..8774576e1196 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-required_true-manual.html @@ -0,0 +1,74 @@ + + + + aria-required=true + + + + + + + + + +

    This test examines the ARIA properties for aria-required=true.

    +
    +
    content
    +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-roledescription_is_empty_or_whitespace_characters_new-manual.html b/testing/web-platform/tests/core-aam/aria-roledescription_is_empty_or_whitespace_characters_new-manual.html new file mode 100644 index 000000000000..74e1bdcfdb2d --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-roledescription_is_empty_or_whitespace_characters_new-manual.html @@ -0,0 +1,56 @@ + + + + aria-roledescription is empty or whitespace characters NEW + + + + + + + + + +

    This test examines the ARIA properties for aria-roledescription is empty or whitespace characters NEW.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-roledescription_new-manual.html b/testing/web-platform/tests/core-aam/aria-roledescription_new-manual.html new file mode 100644 index 000000000000..16a5f4564ec5 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-roledescription_new-manual.html @@ -0,0 +1,72 @@ + + + + aria-roledescription NEW + + + + + + + + + +

    This test examines the ARIA properties for aria-roledescription NEW.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-rowcount_new-manual.html b/testing/web-platform/tests/core-aam/aria-rowcount_new-manual.html new file mode 100644 index 000000000000..2a687fda8a48 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-rowcount_new-manual.html @@ -0,0 +1,98 @@ + + + + aria-rowcount NEW + + + + + + + + + +

    This test examines the ARIA properties for aria-rowcount NEW.

    +
    +
    +
    content
    +
    +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-rowindex_new-manual.html b/testing/web-platform/tests/core-aam/aria-rowindex_new-manual.html new file mode 100644 index 000000000000..307433ba32d5 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-rowindex_new-manual.html @@ -0,0 +1,98 @@ + + + + aria-rowindex NEW + + + + + + + + + +

    This test examines the ARIA properties for aria-rowindex NEW.

    +
    +
    +
    content
    +
    +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-rowspan_new-manual.html b/testing/web-platform/tests/core-aam/aria-rowspan_new-manual.html new file mode 100644 index 000000000000..55cca15fd1d2 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-rowspan_new-manual.html @@ -0,0 +1,88 @@ + + + + aria-rowspan NEW + + + + + + + + + +

    This test examines the ARIA properties for aria-rowspan NEW.

    +
    +
    +
    content
    +
    +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-selected_false-manual.html b/testing/web-platform/tests/core-aam/aria-selected_false-manual.html new file mode 100644 index 000000000000..81154600c926 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-selected_false-manual.html @@ -0,0 +1,88 @@ + + + + aria-selected=false + + + + + + + + + +

    This test examines the ARIA properties for aria-selected=false.

    +
    +
    +
    content
    +
    +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-selected_true-manual.html b/testing/web-platform/tests/core-aam/aria-selected_true-manual.html new file mode 100644 index 000000000000..44704cc9b563 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-selected_true-manual.html @@ -0,0 +1,88 @@ + + + + aria-selected=true + + + + + + + + + +

    This test examines the ARIA properties for aria-selected=true.

    +
    +
    +
    content
    +
    +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-setsize_-1-manual.html b/testing/web-platform/tests/core-aam/aria-setsize_-1-manual.html new file mode 100644 index 000000000000..cf32c26dfc69 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-setsize_-1-manual.html @@ -0,0 +1,81 @@ + + + + aria-setsize=-1 + + + + + + + + + +

    This test examines the ARIA properties for aria-setsize=-1.

    +
    +
    content
    +
    content
    +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-setsize_3-manual.html b/testing/web-platform/tests/core-aam/aria-setsize_3-manual.html new file mode 100644 index 000000000000..8b173bceb7f5 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-setsize_3-manual.html @@ -0,0 +1,81 @@ + + + + aria-setsize=3 + + + + + + + + + +

    This test examines the ARIA properties for aria-setsize=3.

    +
    +
    content
    +
    content
    +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-sort_ascending-manual.html b/testing/web-platform/tests/core-aam/aria-sort_ascending-manual.html new file mode 100644 index 000000000000..adfebc22908e --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-sort_ascending-manual.html @@ -0,0 +1,82 @@ + + + + aria-sort=ascending + + + + + + + + + +

    This test examines the ARIA properties for aria-sort=ascending.

    +
    +
    +
    content
    +
    +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-sort_descending-manual.html b/testing/web-platform/tests/core-aam/aria-sort_descending-manual.html new file mode 100644 index 000000000000..f954977ce90f --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-sort_descending-manual.html @@ -0,0 +1,82 @@ + + + + aria-sort=descending + + + + + + + + + +

    This test examines the ARIA properties for aria-sort=descending.

    +
    +
    +
    content
    +
    +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-sort_none-manual.html b/testing/web-platform/tests/core-aam/aria-sort_none-manual.html new file mode 100644 index 000000000000..95a1b9f0cba6 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-sort_none-manual.html @@ -0,0 +1,60 @@ + + + + aria-sort=none + + + + + + + + + +

    This test examines the ARIA properties for aria-sort=none.

    +
    +
    +
    content
    +
    +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-sort_other-manual.html b/testing/web-platform/tests/core-aam/aria-sort_other-manual.html new file mode 100644 index 000000000000..4dd87ac0df8e --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-sort_other-manual.html @@ -0,0 +1,82 @@ + + + + aria-sort=other + + + + + + + + + +

    This test examines the ARIA properties for aria-sort=other.

    +
    +
    +
    content
    +
    +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-valuemax-manual.html b/testing/web-platform/tests/core-aam/aria-valuemax-manual.html new file mode 100644 index 000000000000..1d5d09eb9a33 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-valuemax-manual.html @@ -0,0 +1,72 @@ + + + + aria-valuemax + + + + + + + + + +

    This test examines the ARIA properties for aria-valuemax.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-valuemin-manual.html b/testing/web-platform/tests/core-aam/aria-valuemin-manual.html new file mode 100644 index 000000000000..cee996a76461 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-valuemin-manual.html @@ -0,0 +1,72 @@ + + + + aria-valuemin + + + + + + + + + +

    This test examines the ARIA properties for aria-valuemin.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-valuenow-manual.html b/testing/web-platform/tests/core-aam/aria-valuenow-manual.html new file mode 100644 index 000000000000..bcef8d731420 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-valuenow-manual.html @@ -0,0 +1,78 @@ + + + + aria-valuenow + + + + + + + + + +

    This test examines the ARIA properties for aria-valuenow.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/aria-valuetext-manual.html b/testing/web-platform/tests/core-aam/aria-valuetext-manual.html new file mode 100644 index 000000000000..ebf8b79881c6 --- /dev/null +++ b/testing/web-platform/tests/core-aam/aria-valuetext-manual.html @@ -0,0 +1,78 @@ + + + + aria-valuetext + + + + + + + + + +

    This test examines the ARIA properties for aria-valuetext.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/article-manual.html b/testing/web-platform/tests/core-aam/article-manual.html new file mode 100644 index 000000000000..ca5c992291d1 --- /dev/null +++ b/testing/web-platform/tests/core-aam/article-manual.html @@ -0,0 +1,110 @@ + + + + article + + + + + + + + + +

    This test examines the ARIA properties for article.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/banner_new-manual.html b/testing/web-platform/tests/core-aam/banner_new-manual.html new file mode 100644 index 000000000000..a992d90a8a31 --- /dev/null +++ b/testing/web-platform/tests/core-aam/banner_new-manual.html @@ -0,0 +1,114 @@ + + + + banner NEW + + + + + + + + + +

    This test examines the ARIA properties for banner NEW.

    + + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/button_with_aria-haspopup_dialog_new-manual.html b/testing/web-platform/tests/core-aam/button_with_aria-haspopup_dialog_new-manual.html new file mode 100644 index 000000000000..8a6f0a75ed79 --- /dev/null +++ b/testing/web-platform/tests/core-aam/button_with_aria-haspopup_dialog_new-manual.html @@ -0,0 +1,90 @@ + + + + button with aria-haspopup="dialog" NEW + + + + + + + + + +

    This test examines the ARIA properties for button with aria-haspopup="dialog" NEW.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/button_with_aria-haspopup_true_new-manual.html b/testing/web-platform/tests/core-aam/button_with_aria-haspopup_true_new-manual.html new file mode 100644 index 000000000000..34835c31ad6c --- /dev/null +++ b/testing/web-platform/tests/core-aam/button_with_aria-haspopup_true_new-manual.html @@ -0,0 +1,90 @@ + + + + button with aria-haspopup="true" NEW + + + + + + + + + +

    This test examines the ARIA properties for button with aria-haspopup="true" NEW.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/button_with_default_values_for_aria-pressed_and_aria-haspopup-manual.html b/testing/web-platform/tests/core-aam/button_with_default_values_for_aria-pressed_and_aria-haspopup-manual.html new file mode 100644 index 000000000000..9e1c0399a546 --- /dev/null +++ b/testing/web-platform/tests/core-aam/button_with_default_values_for_aria-pressed_and_aria-haspopup-manual.html @@ -0,0 +1,84 @@ + + + + button with default values for aria-pressed and aria-haspopup + + + + + + + + + +

    This test examines the ARIA properties for button with default values for aria-pressed and aria-haspopup.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/button_with_defined_value_for_aria-pressed-manual.html b/testing/web-platform/tests/core-aam/button_with_defined_value_for_aria-pressed-manual.html new file mode 100644 index 000000000000..9169307568ed --- /dev/null +++ b/testing/web-platform/tests/core-aam/button_with_defined_value_for_aria-pressed-manual.html @@ -0,0 +1,92 @@ + + + + button with defined value for aria-pressed + + + + + + + + + +

    This test examines the ARIA properties for button with defined value for aria-pressed.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/cell_new-manual.html b/testing/web-platform/tests/core-aam/cell_new-manual.html new file mode 100644 index 000000000000..88588dd3d6cd --- /dev/null +++ b/testing/web-platform/tests/core-aam/cell_new-manual.html @@ -0,0 +1,114 @@ + + + + cell NEW + + + + + + + + + +

    This test examines the ARIA properties for cell NEW.

    +
    +
    +
    content
    +
    +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/checkbox-manual.html b/testing/web-platform/tests/core-aam/checkbox-manual.html new file mode 100644 index 000000000000..88d7ece7c7b0 --- /dev/null +++ b/testing/web-platform/tests/core-aam/checkbox-manual.html @@ -0,0 +1,84 @@ + + + + checkbox + + + + + + + + + +

    This test examines the ARIA properties for checkbox.

    + + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/columnheader-manual.html b/testing/web-platform/tests/core-aam/columnheader-manual.html new file mode 100644 index 000000000000..015155c723eb --- /dev/null +++ b/testing/web-platform/tests/core-aam/columnheader-manual.html @@ -0,0 +1,102 @@ + + + + columnheader + + + + + + + + + +

    This test examines the ARIA properties for columnheader.

    +
    +
    +
    content
    +
    +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/combobox-manual.html b/testing/web-platform/tests/core-aam/combobox-manual.html new file mode 100644 index 000000000000..a6dacc3dc25b --- /dev/null +++ b/testing/web-platform/tests/core-aam/combobox-manual.html @@ -0,0 +1,112 @@ + + + + combobox + + + + + + + + + +

    This test examines the ARIA properties for combobox.

    + + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/complementary_new-manual.html b/testing/web-platform/tests/core-aam/complementary_new-manual.html new file mode 100644 index 000000000000..681ecb681a5c --- /dev/null +++ b/testing/web-platform/tests/core-aam/complementary_new-manual.html @@ -0,0 +1,114 @@ + + + + complementary NEW + + + + + + + + + +

    This test examines the ARIA properties for complementary NEW.

    + + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/contentinfo_new-manual.html b/testing/web-platform/tests/core-aam/contentinfo_new-manual.html new file mode 100644 index 000000000000..5288f4e9b584 --- /dev/null +++ b/testing/web-platform/tests/core-aam/contentinfo_new-manual.html @@ -0,0 +1,114 @@ + + + + contentinfo NEW + + + + + + + + + +

    This test examines the ARIA properties for contentinfo NEW.

    + + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/definition-manual.html b/testing/web-platform/tests/core-aam/definition-manual.html new file mode 100644 index 000000000000..95b31e89c1ff --- /dev/null +++ b/testing/web-platform/tests/core-aam/definition-manual.html @@ -0,0 +1,96 @@ + + + + definition + + + + + + + + + +

    This test examines the ARIA properties for definition.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/dialog-manual.html b/testing/web-platform/tests/core-aam/dialog-manual.html new file mode 100644 index 000000000000..4f5a57b1e3ed --- /dev/null +++ b/testing/web-platform/tests/core-aam/dialog-manual.html @@ -0,0 +1,84 @@ + + + + dialog + + + + + + + + + +

    This test examines the ARIA properties for dialog.

    + + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/directory-manual.html b/testing/web-platform/tests/core-aam/directory-manual.html new file mode 100644 index 000000000000..57908e4f25c2 --- /dev/null +++ b/testing/web-platform/tests/core-aam/directory-manual.html @@ -0,0 +1,84 @@ + + + + directory + + + + + + + + + +

    This test examines the ARIA properties for directory.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/document-manual.html b/testing/web-platform/tests/core-aam/document-manual.html new file mode 100644 index 000000000000..865bb80e8b5f --- /dev/null +++ b/testing/web-platform/tests/core-aam/document-manual.html @@ -0,0 +1,92 @@ + + + + document + + + + + + + + + +

    This test examines the ARIA properties for document.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/feed_new-manual.html b/testing/web-platform/tests/core-aam/feed_new-manual.html new file mode 100644 index 000000000000..d32f374f211a --- /dev/null +++ b/testing/web-platform/tests/core-aam/feed_new-manual.html @@ -0,0 +1,106 @@ + + + + feed NEW + + + + + + + + + +

    This test examines the ARIA properties for feed NEW.

    +
    +
    content
    +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/figure_new-manual.html b/testing/web-platform/tests/core-aam/figure_new-manual.html new file mode 100644 index 000000000000..b510168f8952 --- /dev/null +++ b/testing/web-platform/tests/core-aam/figure_new-manual.html @@ -0,0 +1,104 @@ + + + + figure NEW + + + + + + + + + +

    This test examines the ARIA properties for figure NEW.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/form_new-manual.html b/testing/web-platform/tests/core-aam/form_new-manual.html new file mode 100644 index 000000000000..da1feab87e7f --- /dev/null +++ b/testing/web-platform/tests/core-aam/form_new-manual.html @@ -0,0 +1,108 @@ + + + + form NEW + + + + + + + + + +

    This test examines the ARIA properties for form NEW.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/grid-manual.html b/testing/web-platform/tests/core-aam/grid-manual.html new file mode 100644 index 000000000000..ae258e582411 --- /dev/null +++ b/testing/web-platform/tests/core-aam/grid-manual.html @@ -0,0 +1,165 @@ + + + + grid + + + + + + + + + +

    This test examines the ARIA properties for grid.

    +
    +
    +
    content
    +
    content
    +
    +
    +
    content
    +
    content
    +
    +
    +
    content
    +
    content
    +
    +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/gridcell-manual.html b/testing/web-platform/tests/core-aam/gridcell-manual.html new file mode 100644 index 000000000000..40daab1a67d7 --- /dev/null +++ b/testing/web-platform/tests/core-aam/gridcell-manual.html @@ -0,0 +1,120 @@ + + + + gridcell + + + + + + + + + +

    This test examines the ARIA properties for gridcell.

    +
    +
    +
    content
    +
    +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/group-manual.html b/testing/web-platform/tests/core-aam/group-manual.html new file mode 100644 index 000000000000..e2baad538d6b --- /dev/null +++ b/testing/web-platform/tests/core-aam/group-manual.html @@ -0,0 +1,84 @@ + + + + group + + + + + + + + + +

    This test examines the ARIA properties for group.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/heading-manual.html b/testing/web-platform/tests/core-aam/heading-manual.html new file mode 100644 index 000000000000..008f78982a74 --- /dev/null +++ b/testing/web-platform/tests/core-aam/heading-manual.html @@ -0,0 +1,96 @@ + + + + heading + + + + + + + + + +

    This test examines the ARIA properties for heading.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/img-manual.html b/testing/web-platform/tests/core-aam/img-manual.html new file mode 100644 index 000000000000..749965472c37 --- /dev/null +++ b/testing/web-platform/tests/core-aam/img-manual.html @@ -0,0 +1,98 @@ + + + + img + + + + + + + + + +

    This test examines the ARIA properties for img.

    + + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/link-manual.html b/testing/web-platform/tests/core-aam/link-manual.html new file mode 100644 index 000000000000..48bbea34446d --- /dev/null +++ b/testing/web-platform/tests/core-aam/link-manual.html @@ -0,0 +1,116 @@ + + + + link + + + + + + + + + +

    This test examines the ARIA properties for link.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/list-manual.html b/testing/web-platform/tests/core-aam/list-manual.html new file mode 100644 index 000000000000..aabc368ff58a --- /dev/null +++ b/testing/web-platform/tests/core-aam/list-manual.html @@ -0,0 +1,94 @@ + + + + list + + + + + + + + + +

    This test examines the ARIA properties for list.

    +
    +
    content
    +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/listbox_not_owned_by_or_child_of_combobox-manual.html b/testing/web-platform/tests/core-aam/listbox_not_owned_by_or_child_of_combobox-manual.html new file mode 100644 index 000000000000..fefb0995371c --- /dev/null +++ b/testing/web-platform/tests/core-aam/listbox_not_owned_by_or_child_of_combobox-manual.html @@ -0,0 +1,112 @@ + + + + listbox not owned by or child of combobox + + + + + + + + + +

    This test examines the ARIA properties for listbox not owned by or child of combobox.

    +
    +
    content
    +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/listbox_owned_by_or_child_of_combobox-manual.html b/testing/web-platform/tests/core-aam/listbox_owned_by_or_child_of_combobox-manual.html new file mode 100644 index 000000000000..32da806782c2 --- /dev/null +++ b/testing/web-platform/tests/core-aam/listbox_owned_by_or_child_of_combobox-manual.html @@ -0,0 +1,115 @@ + + + + listbox owned by or child of combobox + + + + + + + + + +

    This test examines the ARIA properties for listbox owned by or child of combobox.

    +
    +
    content
    +
    +
    content
    +
    +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/listitem-manual.html b/testing/web-platform/tests/core-aam/listitem-manual.html new file mode 100644 index 000000000000..886269f1d96d --- /dev/null +++ b/testing/web-platform/tests/core-aam/listitem-manual.html @@ -0,0 +1,106 @@ + + + + listitem + + + + + + + + + +

    This test examines the ARIA properties for listitem.

    +
    +
    content
    +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/log-manual.html b/testing/web-platform/tests/core-aam/log-manual.html new file mode 100644 index 000000000000..ecfc6bd22be1 --- /dev/null +++ b/testing/web-platform/tests/core-aam/log-manual.html @@ -0,0 +1,138 @@ + + + + log + + + + + + + + + +

    This test examines the ARIA properties for log.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/main_new-manual.html b/testing/web-platform/tests/core-aam/main_new-manual.html new file mode 100644 index 000000000000..a91e5bb9277f --- /dev/null +++ b/testing/web-platform/tests/core-aam/main_new-manual.html @@ -0,0 +1,108 @@ + + + + main NEW + + + + + + + + + +

    This test examines the ARIA properties for main NEW.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/marquee-manual.html b/testing/web-platform/tests/core-aam/marquee-manual.html new file mode 100644 index 000000000000..a47a906aeab2 --- /dev/null +++ b/testing/web-platform/tests/core-aam/marquee-manual.html @@ -0,0 +1,128 @@ + + + + marquee + + + + + + + + + +

    This test examines the ARIA properties for marquee.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/math-manual.html b/testing/web-platform/tests/core-aam/math-manual.html new file mode 100644 index 000000000000..28d48d8f9055 --- /dev/null +++ b/testing/web-platform/tests/core-aam/math-manual.html @@ -0,0 +1,90 @@ + + + + math + + + + + + + + + +

    This test examines the ARIA properties for math.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/menu-manual.html b/testing/web-platform/tests/core-aam/menu-manual.html new file mode 100644 index 000000000000..757edfd0b5b2 --- /dev/null +++ b/testing/web-platform/tests/core-aam/menu-manual.html @@ -0,0 +1,106 @@ + + + + menu + + + + + + + + + +

    This test examines the ARIA properties for menu.

    + + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/menubar-manual.html b/testing/web-platform/tests/core-aam/menubar-manual.html new file mode 100644 index 000000000000..6c18e8cc6553 --- /dev/null +++ b/testing/web-platform/tests/core-aam/menubar-manual.html @@ -0,0 +1,106 @@ + + + + menubar + + + + + + + + + +

    This test examines the ARIA properties for menubar.

    + + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/menuitem_not_owned_by_or_child_of_group-manual.html b/testing/web-platform/tests/core-aam/menuitem_not_owned_by_or_child_of_group-manual.html new file mode 100644 index 000000000000..70a1733612e8 --- /dev/null +++ b/testing/web-platform/tests/core-aam/menuitem_not_owned_by_or_child_of_group-manual.html @@ -0,0 +1,86 @@ + + + + menuitem not owned by or child of group + + + + + + + + + +

    This test examines the ARIA properties for menuitem not owned by or child of group.

    +
    + +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/menuitem_owned_by_or_child_of_group-manual.html b/testing/web-platform/tests/core-aam/menuitem_owned_by_or_child_of_group-manual.html new file mode 100644 index 000000000000..4aea3855ce26 --- /dev/null +++ b/testing/web-platform/tests/core-aam/menuitem_owned_by_or_child_of_group-manual.html @@ -0,0 +1,89 @@ + + + + menuitem owned by or child of group + + + + + + + + + +

    This test examines the ARIA properties for menuitem owned by or child of group.

    +
    +
    + +
    +
    content 2
    +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/menuitemcheckbox-manual.html b/testing/web-platform/tests/core-aam/menuitemcheckbox-manual.html new file mode 100644 index 000000000000..69595cd255ed --- /dev/null +++ b/testing/web-platform/tests/core-aam/menuitemcheckbox-manual.html @@ -0,0 +1,100 @@ + + + + menuitemcheckbox + + + + + + + + + +

    This test examines the ARIA properties for menuitemcheckbox.

    +
    +
    content
    +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/menuitemradio-manual.html b/testing/web-platform/tests/core-aam/menuitemradio-manual.html new file mode 100644 index 000000000000..ad556b27c460 --- /dev/null +++ b/testing/web-platform/tests/core-aam/menuitemradio-manual.html @@ -0,0 +1,106 @@ + + + + menuitemradio + + + + + + + + + +

    This test examines the ARIA properties for menuitemradio.

    +
    +
    content
    +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/navigation_new-manual.html b/testing/web-platform/tests/core-aam/navigation_new-manual.html new file mode 100644 index 000000000000..775f5835a3de --- /dev/null +++ b/testing/web-platform/tests/core-aam/navigation_new-manual.html @@ -0,0 +1,108 @@ + + + + navigation NEW + + + + + + + + + +

    This test examines the ARIA properties for navigation NEW.

    + + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/none_new-manual.html b/testing/web-platform/tests/core-aam/none_new-manual.html new file mode 100644 index 000000000000..b9d095151246 --- /dev/null +++ b/testing/web-platform/tests/core-aam/none_new-manual.html @@ -0,0 +1,72 @@ + + + + none NEW + + + + + + + + + +

    This test examines the ARIA properties for none NEW.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/note-manual.html b/testing/web-platform/tests/core-aam/note-manual.html new file mode 100644 index 000000000000..7657800d68f8 --- /dev/null +++ b/testing/web-platform/tests/core-aam/note-manual.html @@ -0,0 +1,90 @@ + + + + note + + + + + + + + + +

    This test examines the ARIA properties for note.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/option_inside_combobox-manual.html b/testing/web-platform/tests/core-aam/option_inside_combobox-manual.html new file mode 100644 index 000000000000..82f1a9872c60 --- /dev/null +++ b/testing/web-platform/tests/core-aam/option_inside_combobox-manual.html @@ -0,0 +1,90 @@ + + + + option inside combobox + + + + + + + + + +

    This test examines the ARIA properties for option inside combobox.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/option_not_inside_combobox-manual.html b/testing/web-platform/tests/core-aam/option_not_inside_combobox-manual.html new file mode 100644 index 000000000000..49c27bc95653 --- /dev/null +++ b/testing/web-platform/tests/core-aam/option_not_inside_combobox-manual.html @@ -0,0 +1,90 @@ + + + + option not inside combobox + + + + + + + + + +

    This test examines the ARIA properties for option not inside combobox.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/presentation-manual.html b/testing/web-platform/tests/core-aam/presentation-manual.html new file mode 100644 index 000000000000..519bd7561e6d --- /dev/null +++ b/testing/web-platform/tests/core-aam/presentation-manual.html @@ -0,0 +1,72 @@ + + + + presentation + + + + + + + + + +

    This test examines the ARIA properties for presentation.

    + + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/progressbar-manual.html b/testing/web-platform/tests/core-aam/progressbar-manual.html new file mode 100644 index 000000000000..3841552c9493 --- /dev/null +++ b/testing/web-platform/tests/core-aam/progressbar-manual.html @@ -0,0 +1,110 @@ + + + + progressbar + + + + + + + + + +

    This test examines the ARIA properties for progressbar.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/radio-manual.html b/testing/web-platform/tests/core-aam/radio-manual.html new file mode 100644 index 000000000000..fad488d9edc9 --- /dev/null +++ b/testing/web-platform/tests/core-aam/radio-manual.html @@ -0,0 +1,96 @@ + + + + radio + + + + + + + + + +

    This test examines the ARIA properties for radio.

    + + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/radiogroup-manual.html b/testing/web-platform/tests/core-aam/radiogroup-manual.html new file mode 100644 index 000000000000..965422ee1e95 --- /dev/null +++ b/testing/web-platform/tests/core-aam/radiogroup-manual.html @@ -0,0 +1,86 @@ + + + + radiogroup + + + + + + + + + +

    This test examines the ARIA properties for radiogroup.

    +
    +
    content
    +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/region_with_an_accessible_name_new-manual.html b/testing/web-platform/tests/core-aam/region_with_an_accessible_name_new-manual.html new file mode 100644 index 000000000000..0b43affea1ff --- /dev/null +++ b/testing/web-platform/tests/core-aam/region_with_an_accessible_name_new-manual.html @@ -0,0 +1,114 @@ + + + + region with an accessible name NEW + + + + + + + + + +

    This test examines the ARIA properties for region with an accessible name NEW.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/region_without_an_accessible_name_new-manual.html b/testing/web-platform/tests/core-aam/region_without_an_accessible_name_new-manual.html new file mode 100644 index 000000000000..42377a4d427f --- /dev/null +++ b/testing/web-platform/tests/core-aam/region_without_an_accessible_name_new-manual.html @@ -0,0 +1,84 @@ + + + + region without an accessible name NEW + + + + + + + + + +

    This test examines the ARIA properties for region without an accessible name NEW.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/row_inside_treegrid-manual.html b/testing/web-platform/tests/core-aam/row_inside_treegrid-manual.html new file mode 100644 index 000000000000..a20db3078dc6 --- /dev/null +++ b/testing/web-platform/tests/core-aam/row_inside_treegrid-manual.html @@ -0,0 +1,100 @@ + + + + row inside treegrid + + + + + + + + + +

    This test examines the ARIA properties for row inside treegrid.

    +
    +
    +
    content
    +
    +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/row_not_inside_treegrid-manual.html b/testing/web-platform/tests/core-aam/row_not_inside_treegrid-manual.html new file mode 100644 index 000000000000..2574b37b88db --- /dev/null +++ b/testing/web-platform/tests/core-aam/row_not_inside_treegrid-manual.html @@ -0,0 +1,100 @@ + + + + row not inside treegrid + + + + + + + + + +

    This test examines the ARIA properties for row not inside treegrid.

    +
    +
    +
    content
    +
    +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/rowgroup-manual.html b/testing/web-platform/tests/core-aam/rowgroup-manual.html new file mode 100644 index 000000000000..0b4f6e750cd6 --- /dev/null +++ b/testing/web-platform/tests/core-aam/rowgroup-manual.html @@ -0,0 +1,81 @@ + + + + rowgroup + + + + + + + + + +

    This test examines the ARIA properties for rowgroup.

    +
    +
    +
    +
    content
    +
    +
    +
    content
    +
    +
    +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/rowheader-manual.html b/testing/web-platform/tests/core-aam/rowheader-manual.html new file mode 100644 index 000000000000..599173a3410f --- /dev/null +++ b/testing/web-platform/tests/core-aam/rowheader-manual.html @@ -0,0 +1,102 @@ + + + + rowheader + + + + + + + + + +

    This test examines the ARIA properties for rowheader.

    +
    +
    +
    content
    +
    +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/scrollbar-manual.html b/testing/web-platform/tests/core-aam/scrollbar-manual.html new file mode 100644 index 000000000000..994b511f7b39 --- /dev/null +++ b/testing/web-platform/tests/core-aam/scrollbar-manual.html @@ -0,0 +1,104 @@ + + + + scrollbar + + + + + + + + + +

    This test examines the ARIA properties for scrollbar.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/search_new-manual.html b/testing/web-platform/tests/core-aam/search_new-manual.html new file mode 100644 index 000000000000..340374d83461 --- /dev/null +++ b/testing/web-platform/tests/core-aam/search_new-manual.html @@ -0,0 +1,108 @@ + + + + search NEW + + + + + + + + + +

    This test examines the ARIA properties for search NEW.

    + + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/searchbox_new-manual.html b/testing/web-platform/tests/core-aam/searchbox_new-manual.html new file mode 100644 index 000000000000..ecbceecfbb92 --- /dev/null +++ b/testing/web-platform/tests/core-aam/searchbox_new-manual.html @@ -0,0 +1,110 @@ + + + + searchbox NEW + + + + + + + + + +

    This test examines the ARIA properties for searchbox NEW.

    + + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/separator_focusable_new-manual.html b/testing/web-platform/tests/core-aam/separator_focusable_new-manual.html new file mode 100644 index 000000000000..931f2c7e9411 --- /dev/null +++ b/testing/web-platform/tests/core-aam/separator_focusable_new-manual.html @@ -0,0 +1,104 @@ + + + + separator focusable NEW + + + + + + + + + +

    This test examines the ARIA properties for separator focusable NEW.

    + + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/separator_non-focusable-manual.html b/testing/web-platform/tests/core-aam/separator_non-focusable-manual.html new file mode 100644 index 000000000000..7907217678ae --- /dev/null +++ b/testing/web-platform/tests/core-aam/separator_non-focusable-manual.html @@ -0,0 +1,84 @@ + + + + separator non-focusable + + + + + + + + + +

    This test examines the ARIA properties for separator non-focusable.

    + + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/slider-manual.html b/testing/web-platform/tests/core-aam/slider-manual.html new file mode 100644 index 000000000000..202f39d39a7b --- /dev/null +++ b/testing/web-platform/tests/core-aam/slider-manual.html @@ -0,0 +1,104 @@ + + + + slider + + + + + + + + + +

    This test examines the ARIA properties for slider.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/spinbutton-manual.html b/testing/web-platform/tests/core-aam/spinbutton-manual.html new file mode 100644 index 000000000000..1c64826024d3 --- /dev/null +++ b/testing/web-platform/tests/core-aam/spinbutton-manual.html @@ -0,0 +1,104 @@ + + + + spinbutton + + + + + + + + + +

    This test examines the ARIA properties for spinbutton.

    +
    10
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/status-manual.html b/testing/web-platform/tests/core-aam/status-manual.html new file mode 100644 index 000000000000..e80df9107b8b --- /dev/null +++ b/testing/web-platform/tests/core-aam/status-manual.html @@ -0,0 +1,134 @@ + + + + status + + + + + + + + + +

    This test examines the ARIA properties for status.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/switch_new-manual.html b/testing/web-platform/tests/core-aam/switch_new-manual.html new file mode 100644 index 000000000000..51dcdfa6d673 --- /dev/null +++ b/testing/web-platform/tests/core-aam/switch_new-manual.html @@ -0,0 +1,116 @@ + + + + switch NEW + + + + + + + + + +

    This test examines the ARIA properties for switch NEW.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/tab-manual.html b/testing/web-platform/tests/core-aam/tab-manual.html new file mode 100644 index 000000000000..e0505e42e228 --- /dev/null +++ b/testing/web-platform/tests/core-aam/tab-manual.html @@ -0,0 +1,86 @@ + + + + tab + + + + + + + + + +

    This test examines the ARIA properties for tab.

    +
    + +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/table_new-manual.html b/testing/web-platform/tests/core-aam/table_new-manual.html new file mode 100644 index 000000000000..846cf2d1a237 --- /dev/null +++ b/testing/web-platform/tests/core-aam/table_new-manual.html @@ -0,0 +1,153 @@ + + + + table NEW + + + + + + + + + +

    This test examines the ARIA properties for table NEW.

    +
    +
    +
    content
    +
    content
    +
    +
    +
    content
    +
    content
    +
    +
    +
    content
    +
    content
    +
    +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/tablist-manual.html b/testing/web-platform/tests/core-aam/tablist-manual.html new file mode 100644 index 000000000000..076e9499224f --- /dev/null +++ b/testing/web-platform/tests/core-aam/tablist-manual.html @@ -0,0 +1,112 @@ + + + + tablist + + + + + + + + + +

    This test examines the ARIA properties for tablist.

    +
    +
    content
    +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/tabpanel-manual.html b/testing/web-platform/tests/core-aam/tabpanel-manual.html new file mode 100644 index 000000000000..5820d98f320b --- /dev/null +++ b/testing/web-platform/tests/core-aam/tabpanel-manual.html @@ -0,0 +1,84 @@ + + + + tabpanel + + + + + + + + + +

    This test examines the ARIA properties for tabpanel.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/term_new-manual.html b/testing/web-platform/tests/core-aam/term_new-manual.html new file mode 100644 index 000000000000..458068d59d6b --- /dev/null +++ b/testing/web-platform/tests/core-aam/term_new-manual.html @@ -0,0 +1,96 @@ + + + + term NEW + + + + + + + + + +

    This test examines the ARIA properties for term NEW.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/textbox_when_aria-multiline_is_false-manual.html b/testing/web-platform/tests/core-aam/textbox_when_aria-multiline_is_false-manual.html new file mode 100644 index 000000000000..eb7cce3148ce --- /dev/null +++ b/testing/web-platform/tests/core-aam/textbox_when_aria-multiline_is_false-manual.html @@ -0,0 +1,104 @@ + + + + textbox when aria-multiline is false + + + + + + + + + +

    This test examines the ARIA properties for textbox when aria-multiline is false.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/textbox_when_aria-multiline_is_true-manual.html b/testing/web-platform/tests/core-aam/textbox_when_aria-multiline_is_true-manual.html new file mode 100644 index 000000000000..f1858dc7696c --- /dev/null +++ b/testing/web-platform/tests/core-aam/textbox_when_aria-multiline_is_true-manual.html @@ -0,0 +1,104 @@ + + + + textbox when aria-multiline is true + + + + + + + + + +

    This test examines the ARIA properties for textbox when aria-multiline is true.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/timer-manual.html b/testing/web-platform/tests/core-aam/timer-manual.html new file mode 100644 index 000000000000..0ca484f144a4 --- /dev/null +++ b/testing/web-platform/tests/core-aam/timer-manual.html @@ -0,0 +1,132 @@ + + + + timer + + + + + + + + + +

    This test examines the ARIA properties for timer.

    +
    content
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/toolbar-manual.html b/testing/web-platform/tests/core-aam/toolbar-manual.html new file mode 100644 index 000000000000..de1ef614752b --- /dev/null +++ b/testing/web-platform/tests/core-aam/toolbar-manual.html @@ -0,0 +1,84 @@ + + + + toolbar + + + + + + + + + +

    This test examines the ARIA properties for toolbar.

    + + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/tooltip-manual.html b/testing/web-platform/tests/core-aam/tooltip-manual.html new file mode 100644 index 000000000000..a43327ec58fd --- /dev/null +++ b/testing/web-platform/tests/core-aam/tooltip-manual.html @@ -0,0 +1,84 @@ + + + + tooltip + + + + + + + + + +

    This test examines the ARIA properties for tooltip.

    + + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/tree-manual.html b/testing/web-platform/tests/core-aam/tree-manual.html new file mode 100644 index 000000000000..c4dabcb4d4a2 --- /dev/null +++ b/testing/web-platform/tests/core-aam/tree-manual.html @@ -0,0 +1,106 @@ + + + + tree + + + + + + + + + +

    This test examines the ARIA properties for tree.

    +
    +
    content
    +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/treegrid-manual.html b/testing/web-platform/tests/core-aam/treegrid-manual.html new file mode 100644 index 000000000000..c21d44aeb012 --- /dev/null +++ b/testing/web-platform/tests/core-aam/treegrid-manual.html @@ -0,0 +1,120 @@ + + + + treegrid + + + + + + + + + +

    This test examines the ARIA properties for treegrid.

    +
    +
    +
    content
    +
    +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/core-aam/treeitem-manual.html b/testing/web-platform/tests/core-aam/treeitem-manual.html new file mode 100644 index 000000000000..afeeae541ea8 --- /dev/null +++ b/testing/web-platform/tests/core-aam/treeitem-manual.html @@ -0,0 +1,86 @@ + + + + treeitem + + + + + + + + + +

    This test examines the ARIA properties for treeitem.

    +
    +
    content
    +
    + +
    +
    +
    + + + diff --git a/testing/web-platform/tests/css-font-display/font-display-ref.html b/testing/web-platform/tests/css-fonts/font-display/font-display-ref.html similarity index 100% rename from testing/web-platform/tests/css-font-display/font-display-ref.html rename to testing/web-platform/tests/css-fonts/font-display/font-display-ref.html diff --git a/testing/web-platform/tests/css-font-display/font-display.html b/testing/web-platform/tests/css-fonts/font-display/font-display.html similarity index 100% rename from testing/web-platform/tests/css-font-display/font-display.html rename to testing/web-platform/tests/css-fonts/font-display/font-display.html diff --git a/testing/web-platform/tests/css-font-display/resources/slow-ahem-loading.py b/testing/web-platform/tests/css-fonts/font-display/resources/slow-ahem-loading.py similarity index 80% rename from testing/web-platform/tests/css-font-display/resources/slow-ahem-loading.py rename to testing/web-platform/tests/css-fonts/font-display/resources/slow-ahem-loading.py index 45989505ceeb..bb556d1990e1 100644 --- a/testing/web-platform/tests/css-font-display/resources/slow-ahem-loading.py +++ b/testing/web-platform/tests/css-fonts/font-display/resources/slow-ahem-loading.py @@ -2,7 +2,7 @@ import os import time def main(request, response): - body = open(os.path.join(os.path.dirname(__file__), "../../css/fonts/ahem/ahem.ttf"), "rb").read() + body = open(os.path.join(os.path.dirname(__file__), "../../../css/fonts/ahem/ahem.ttf"), "rb").read() delay = float(request.GET.first("ms", 500)) if delay > 0: time.sleep(delay / 1E3); diff --git a/testing/web-platform/tests/css-paint-api/background-image-alpha.html b/testing/web-platform/tests/css-paint-api/background-image-alpha.html index ac69aa0749cb..de8a0d7c7fb5 100644 --- a/testing/web-platform/tests/css-paint-api/background-image-alpha.html +++ b/testing/web-platform/tests/css-paint-api/background-image-alpha.html @@ -30,7 +30,7 @@ + + +
    + + + + + + diff --git a/testing/web-platform/tests/css-paint-api/parse-input-arguments-020.html b/testing/web-platform/tests/css-paint-api/parse-input-arguments-020.html new file mode 100644 index 000000000000..b582555e30de --- /dev/null +++ b/testing/web-platform/tests/css-paint-api/parse-input-arguments-020.html @@ -0,0 +1,46 @@ + + + + + + + +
    + + + + + + diff --git a/testing/web-platform/tests/css-paint-api/parse-input-arguments-021.html b/testing/web-platform/tests/css-paint-api/parse-input-arguments-021.html new file mode 100644 index 000000000000..666d4c485c24 --- /dev/null +++ b/testing/web-platform/tests/css-paint-api/parse-input-arguments-021.html @@ -0,0 +1,49 @@ + + + + + + + +
    + + + + + + diff --git a/testing/web-platform/tests/css-paint-api/parse-input-arguments-022.html b/testing/web-platform/tests/css-paint-api/parse-input-arguments-022.html new file mode 100644 index 000000000000..3c5d9f9b6bf3 --- /dev/null +++ b/testing/web-platform/tests/css-paint-api/parse-input-arguments-022.html @@ -0,0 +1,47 @@ + + + + + + + +
    + + + + + + diff --git a/testing/web-platform/tests/css/CSS2/selectors/attribute-value-selector-001-ref.xht b/testing/web-platform/tests/css/CSS2/selectors/attribute-value-selector-001-ref.xht index 296732095b04..1aaf21d22e4a 100644 --- a/testing/web-platform/tests/css/CSS2/selectors/attribute-value-selector-001-ref.xht +++ b/testing/web-platform/tests/css/CSS2/selectors/attribute-value-selector-001-ref.xht @@ -9,9 +9,9 @@ } - +

    Test passes if the first line of "Filler Text" below is black and the second one is green.

    Filler Text
    -
    Filler Text
    +
    Filler Text
    diff --git a/testing/web-platform/tests/css/CSS2/selectors/attribute-value-selector-001.xht b/testing/web-platform/tests/css/CSS2/selectors/attribute-value-selector-001.xht index 8130d44f6416..374d9c279052 100644 --- a/testing/web-platform/tests/css/CSS2/selectors/attribute-value-selector-001.xht +++ b/testing/web-platform/tests/css/CSS2/selectors/attribute-value-selector-001.xht @@ -14,9 +14,9 @@ } - +

    Test passes if the first line of "Filler Text" below is black and the second one is green.

    Filler Text
    -
    Filler Text
    +
    Filler Text
    diff --git a/testing/web-platform/tests/css/CSS2/selectors/attribute-value-selector-002.xht b/testing/web-platform/tests/css/CSS2/selectors/attribute-value-selector-002.xht index 146544445d47..b44a1f11ddc2 100644 --- a/testing/web-platform/tests/css/CSS2/selectors/attribute-value-selector-002.xht +++ b/testing/web-platform/tests/css/CSS2/selectors/attribute-value-selector-002.xht @@ -8,15 +8,15 @@ - +

    Test passes if the first line of "Filler Text" below is black and the second one is green.

    -
    Filler Text
    -
    Filler Text
    +
    Filler Text
    +
    Filler Text
    diff --git a/testing/web-platform/tests/css/CSS2/selectors/attribute-value-selector-003.xht b/testing/web-platform/tests/css/CSS2/selectors/attribute-value-selector-003.xht index f64de3e65b09..297b822e70ce 100644 --- a/testing/web-platform/tests/css/CSS2/selectors/attribute-value-selector-003.xht +++ b/testing/web-platform/tests/css/CSS2/selectors/attribute-value-selector-003.xht @@ -14,9 +14,9 @@ } - +

    Test passes if the first line of "Filler Text" below is black and the second one is green.

    Filler Text
    -
    Filler Text
    +
    Filler Text
    diff --git a/testing/web-platform/tests/css/CSS2/syntax/core-syntax-001.xht b/testing/web-platform/tests/css/CSS2/syntax/core-syntax-001.xht index d91015dda5e6..6d8ec7ceba23 100644 --- a/testing/web-platform/tests/css/CSS2/syntax/core-syntax-001.xht +++ b/testing/web-platform/tests/css/CSS2/syntax/core-syntax-001.xht @@ -6,6 +6,7 @@ + diff --git a/testing/web-platform/tests/css/CSS2/syntax/core-syntax-004.xht b/testing/web-platform/tests/css/CSS2/syntax/core-syntax-004.xht index 6950e2031925..830017c7c58d 100644 --- a/testing/web-platform/tests/css/CSS2/syntax/core-syntax-004.xht +++ b/testing/web-platform/tests/css/CSS2/syntax/core-syntax-004.xht @@ -6,6 +6,7 @@ + + + + + + + +
    +
    XX X
    X XXX
    X
    XX XXX
    +
    + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-002.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-002.html new file mode 100644 index 000000000000..01f48ccde75f --- /dev/null +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-002.html @@ -0,0 +1,41 @@ + + +CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's height + + + + + + + + + + + + + + +
    +
    XX X
    X XXX
    X
    XX XXX
    +
    + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-003.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-003.html new file mode 100644 index 000000000000..d3c5ae10614d --- /dev/null +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-003.html @@ -0,0 +1,41 @@ + + +CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's height + + + + + + + + + + + + + + +
    +
    XX X
    X XXX
    X
    XX XXX
    +
    + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-004.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-004.html new file mode 100644 index 000000000000..1f5ca8d19b4f --- /dev/null +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-004.html @@ -0,0 +1,41 @@ + + +CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's height + + + + + + + + + + + + + + +
    +
    XX X
    X XXX
    X
    XX XXX
    +
    + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-005.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-005.html new file mode 100644 index 000000000000..07b0aca73761 --- /dev/null +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-005.html @@ -0,0 +1,41 @@ + + +CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's height + + + + + + + + + + + + + + +
    +
    XX X
    X XXX
    X
    XX XXX
    +
    + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-006.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-006.html new file mode 100644 index 000000000000..f0f4d5d4353a --- /dev/null +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-006.html @@ -0,0 +1,41 @@ + + +CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's height + + + + + + + + + + + + + + +
    +
    XX X
    X XXX
    X
    XX XXX
    +
    + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-007.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-007.html new file mode 100644 index 000000000000..5dd70bd1f61d --- /dev/null +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-007.html @@ -0,0 +1,41 @@ + + +CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's height + + + + + + + + + + + + + + +
    +
    XX X
    X XXX
    X
    XX XXX
    +
    + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-008.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-008.html new file mode 100644 index 000000000000..f1b22c563530 --- /dev/null +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-008.html @@ -0,0 +1,41 @@ + + +CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's height + + + + + + + + + + + + + + +
    +
    XX X
    X XXX
    X
    XX XXX
    +
    + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-009.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-009.html new file mode 100644 index 000000000000..fb0041ce71f6 --- /dev/null +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-009.html @@ -0,0 +1,41 @@ + + +CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's height + + + + + + + + + + + + + + +
    +
    XX X
    X XXX
    X
    XX XXX
    +
    + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-010.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-010.html new file mode 100644 index 000000000000..1e68845baaad --- /dev/null +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-010.html @@ -0,0 +1,41 @@ + + +CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's height + + + + + + + + + + + + + + +
    +
    XX X
    X XXX
    X
    XX XXX
    +
    + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-011.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-011.html new file mode 100644 index 000000000000..e38852090ced --- /dev/null +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-011.html @@ -0,0 +1,41 @@ + + +CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's height + + + + + + + + + + + + + + +
    + +
    + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-012.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-012.html new file mode 100644 index 000000000000..3ab4977a4d91 --- /dev/null +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-012.html @@ -0,0 +1,41 @@ + + +CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's height + + + + + + + + + + + + + + +
    + +
    + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-013.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-013.html new file mode 100644 index 000000000000..bd6ce3f94dd6 --- /dev/null +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-013.html @@ -0,0 +1,41 @@ + + +CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's height + + + + + + + + + + + + + + +
    + +
    + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-014.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-014.html new file mode 100644 index 000000000000..ab565666b5ce --- /dev/null +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-014.html @@ -0,0 +1,41 @@ + + +CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's height + + + + + + + + + + + + + + +
    + +
    + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-015.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-015.html new file mode 100644 index 000000000000..844713a7285f --- /dev/null +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-015.html @@ -0,0 +1,41 @@ + + +CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's height + + + + + + + + + + + + + + +
    + +
    + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-016.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-016.html new file mode 100644 index 000000000000..dd3b4bee1ddd --- /dev/null +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-016.html @@ -0,0 +1,41 @@ + + +CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's height + + + + + + + + + + + + + + +
    + +
    + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-017.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-017.html new file mode 100644 index 000000000000..5b2c20e83399 --- /dev/null +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-017.html @@ -0,0 +1,41 @@ + + +CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's height + + + + + + + + + + + + + + +
    + +
    + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-018.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-018.html new file mode 100644 index 000000000000..77711aaad386 --- /dev/null +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-018.html @@ -0,0 +1,41 @@ + + +CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's height + + + + + + + + + + + + + + +
    + +
    + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-019.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-019.html new file mode 100644 index 000000000000..9d0bbc936bac --- /dev/null +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-019.html @@ -0,0 +1,41 @@ + + +CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's width + + + + + + + + + + + + + + +
    +
    XX X
    X XXX
    X
    XX XXX
    +
    + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-020.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-020.html new file mode 100644 index 000000000000..86dc27130d17 --- /dev/null +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-020.html @@ -0,0 +1,41 @@ + + +CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's width + + + + + + + + + + + + + + +
    +
    XX X
    X XXX
    X
    XX XXX
    +
    + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-021.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-021.html new file mode 100644 index 000000000000..1c92223bff6a --- /dev/null +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-021.html @@ -0,0 +1,41 @@ + + +CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's width + + + + + + + + + + + + + + +
    +
    XX X
    X XXX
    X
    XX XXX
    +
    + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-022.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-022.html new file mode 100644 index 000000000000..94a634b9ad41 --- /dev/null +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-022.html @@ -0,0 +1,41 @@ + + +CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's width + + + + + + + + + + + + + + +
    +
    XX X
    X XXX
    X
    XX XXX
    +
    + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-023.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-023.html new file mode 100644 index 000000000000..3476f12200ce --- /dev/null +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-023.html @@ -0,0 +1,41 @@ + + +CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's width + + + + + + + + + + + + + + +
    +
    XX X
    X XXX
    X
    XX XXX
    +
    + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-024.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-024.html new file mode 100644 index 000000000000..92db00245431 --- /dev/null +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-024.html @@ -0,0 +1,41 @@ + + +CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's width + + + + + + + + + + + + + + +
    +
    XX X
    X XXX
    X
    XX XXX
    +
    + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-025.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-025.html new file mode 100644 index 000000000000..997fa855415d --- /dev/null +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-025.html @@ -0,0 +1,41 @@ + + +CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's width + + + + + + + + + + + + + + +
    +
    XXXXXX
    X
    XX XXX
    +
    + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-026.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-026.html new file mode 100644 index 000000000000..9d18be6f264d --- /dev/null +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-026.html @@ -0,0 +1,41 @@ + + +CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's width + + + + + + + + + + + + + + +
    +
    XXXXXX
    X
    XX XXX
    +
    + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-027.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-027.html new file mode 100644 index 000000000000..78b9fbd72d67 --- /dev/null +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-027.html @@ -0,0 +1,41 @@ + + +CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's width + + + + + + + + + + + + + + +
    +
    XXXXXX
    X
    XX XXX
    +
    + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-028.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-028.html new file mode 100644 index 000000000000..1426cc41b067 --- /dev/null +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-028.html @@ -0,0 +1,42 @@ + + +CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's width + + + + + + + + + + + + + + +
    +
    XXXXXX
    X
    XX XXX
    +
    + + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-029.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-029.html new file mode 100644 index 000000000000..ca9f47a5846e --- /dev/null +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-029.html @@ -0,0 +1,41 @@ + + +CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's width + + + + + + + + + + + + + + +
    + +
    + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-030.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-030.html new file mode 100644 index 000000000000..103b04d76faf --- /dev/null +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-030.html @@ -0,0 +1,41 @@ + + +CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's width + + + + + + + + + + + + + + +
    + +
    + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-031.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-031.html new file mode 100644 index 000000000000..9c85e5a90350 --- /dev/null +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-031.html @@ -0,0 +1,41 @@ + + +CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's width + + + + + + + + + + + + + + +
    + +
    + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-032.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-032.html new file mode 100644 index 000000000000..093c0f966e02 --- /dev/null +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-032.html @@ -0,0 +1,41 @@ + + +CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's width + + + + + + + + + + + + + + +
    + +
    + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-033.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-033.html new file mode 100644 index 000000000000..1cf535803bb7 --- /dev/null +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-033.html @@ -0,0 +1,41 @@ + + +CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's width + + + + + + + + + + + + + + +
    + +
    + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-034.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-034.html new file mode 100644 index 000000000000..87ec1ae07d45 --- /dev/null +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-034.html @@ -0,0 +1,41 @@ + + +CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's width + + + + + + + + + + + + + + +
    + +
    + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-035.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-035.html new file mode 100644 index 000000000000..1968522fecf3 --- /dev/null +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-035.html @@ -0,0 +1,41 @@ + + +CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's width + + + + + + + + + + + + + + +
    + +
    + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-036.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-036.html new file mode 100644 index 000000000000..a79740308a37 --- /dev/null +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-036.html @@ -0,0 +1,41 @@ + + +CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's width + + + + + + + + + + + + + + +
    + +
    + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-001.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-001.html index f8aa1c9b7275..7b53a2897b83 100644 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-001.html +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-001.html @@ -2,6 +2,7 @@ CSS Grid Layout Test: Content Distribution 'space-evenly' on 2x2 grid + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-002.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-002.html index d273c7bd076b..194934bb93e5 100644 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-002.html +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-002.html @@ -2,6 +2,7 @@ CSS Grid Layout Test: Content Distribution 'space-between' on 2x2 grid + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-003.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-003.html index b5cf8c0964bc..ed6e32263906 100644 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-003.html +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-003.html @@ -2,6 +2,7 @@ CSS Grid Layout Test: Content Distribution 'space-around' on 2x2 grid + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-004.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-004.html index a2e4930c1096..419d0fb1bd30 100644 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-004.html +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-004.html @@ -2,6 +2,7 @@ CSS Grid Layout Test: Content Distribution 'stretch' on 2x2 grid + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-005.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-005.html index 0b544ff15f28..2830aecab6bf 100644 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-005.html +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-005.html @@ -2,6 +2,7 @@ CSS Grid Layout Test: Content Distribution default value + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-006.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-006.html index 7cb2bc1b94be..61cfe2b68ed3 100644 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-006.html +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-006.html @@ -2,6 +2,7 @@ CSS Grid Layout Test: Content Distribution 'space-evenly' and gaps on 2x2 grid + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-007.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-007.html index 34faa7470bae..d4dce5dc95a9 100644 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-007.html +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-007.html @@ -2,6 +2,7 @@ CSS Grid Layout Test: Content Distribution 'space-evenly' on 3x3 grid + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-008.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-008.html index f2a3f5d33d9b..3e381ec68b3b 100644 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-008.html +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-008.html @@ -2,6 +2,7 @@ CSS Grid Layout Test: Content Distribution 'space-evenly' and gaps on 3x3 grid + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-009.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-009.html index 2acad9d4a7a3..aa28a980b660 100644 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-009.html +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-009.html @@ -2,6 +2,7 @@ CSS Grid Layout Test: Content Distribution 'space-evenly' on 4x4 grid + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-010.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-010.html index cc80076d3325..cb08775cd246 100644 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-010.html +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-010.html @@ -2,6 +2,7 @@ CSS Grid Layout Test: Content Distribution 'space-evenly' and gaps on 4x4 grid + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-011.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-011.html index c5ef6d74436e..57eb3d0eac2c 100644 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-011.html +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-011.html @@ -2,6 +2,7 @@ CSS Grid Layout Test: Content Distribution 'space-between' and gaps on 2x2 grid + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-012.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-012.html index 2b41ea263650..e45dbec8fce1 100644 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-012.html +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-012.html @@ -2,6 +2,7 @@ CSS Grid Layout Test: Content Distribution 'space-between' on 3x3 grid + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-013.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-013.html index 1160cb7a5cc2..3e1df650fb14 100644 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-013.html +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-013.html @@ -2,6 +2,7 @@ CSS Grid Layout Test: Content Distribution 'space-between' and gaps on 3x3 grid + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-014.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-014.html index 2d8d24abdb49..423aad172bc9 100644 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-014.html +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-014.html @@ -2,6 +2,7 @@ CSS Grid Layout Test: Content Distribution 'space-between' on 4x4 grid + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-015.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-015.html index f754528c0d1b..ef4c857db668 100644 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-015.html +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-015.html @@ -2,6 +2,7 @@ CSS Grid Layout Test: Content Distribution 'space-between' and gaps on 4x4 grid + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-016.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-016.html index b372aaecb9c4..11a66915de5a 100644 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-016.html +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-016.html @@ -2,6 +2,7 @@ CSS Grid Layout Test: Content Distribution 'space-around' and gaps on 2x2 grid + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-017.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-017.html index 6155df77b5bd..9a490ad94839 100644 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-017.html +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-017.html @@ -2,6 +2,7 @@ CSS Grid Layout Test: Content Distribution 'space-around' on 3x3 grid + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-019.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-019.html index 2941b752459d..49ca22eb2456 100644 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-019.html +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-019.html @@ -2,6 +2,7 @@ CSS Grid Layout Test: Content Distribution 'space-around' on 4x4 grid + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-020.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-020.html index da5773b08c13..249f57d93fe8 100644 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-020.html +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-020.html @@ -2,6 +2,7 @@ CSS Grid Layout Test: Content Distribution 'space-around' and gaps on 4x4 grid + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-021.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-021.html index 0f3bb845e198..6a5469fc8c79 100644 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-021.html +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-021.html @@ -2,6 +2,7 @@ CSS Grid Layout Test: Content Distribution 'stretch' and gaps on 2x2 grid + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-022.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-022.html index e660c2fe5619..15a69c110257 100644 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-022.html +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-022.html @@ -2,6 +2,7 @@ CSS Grid Layout Test: Content Distribution 'stretch' on 3x3 grid + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-023.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-023.html index 011e4436948f..f5d07b764873 100644 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-023.html +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-023.html @@ -2,6 +2,7 @@ CSS Grid Layout Test: Content Distribution 'stretch' and gaps on 3x3 grid + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-024.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-024.html index 73ae83f53da1..1b6932bca564 100644 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-024.html +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-024.html @@ -2,6 +2,7 @@ CSS Grid Layout Test: Content Distribution 'stretch' on 4x4 grid + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-025.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-025.html index 1909192a2b27..f229a56f4fb1 100644 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-025.html +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-025.html @@ -2,6 +2,7 @@ CSS Grid Layout Test: Content Distribution 'stretch' and gaps on 4x4 grid + diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-001.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-001.html index 72571da66c90..ebd169cf5913 100644 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-001.html +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-001.html @@ -2,9 +2,9 @@ CSS Grid Layout Test: Content Distribution 'space-evenly' with collapsed tracks on 2x2 grid + + - - +
    + diff --git a/testing/web-platform/tests/css/css-grid-1/grid-items/grid-minimum-size-grid-items-006.html b/testing/web-platform/tests/css/css-grid-1/grid-items/grid-minimum-size-grid-items-006.html index 1f0086eac765..69bbc7c09810 100644 --- a/testing/web-platform/tests/css/css-grid-1/grid-items/grid-minimum-size-grid-items-006.html +++ b/testing/web-platform/tests/css/css-grid-1/grid-items/grid-minimum-size-grid-items-006.html @@ -5,7 +5,7 @@ - + + +

    Calc width on col is treated as auto, even in fixed tables

    + + + + + + + +
    + + diff --git a/testing/web-platform/tests/css/css-tables-3/fixed-layout-excess-width-distribution-001.html b/testing/web-platform/tests/css/css-tables-3/fixed-layout-excess-width-distribution-001.html new file mode 100644 index 000000000000..a9a78bd59b0d --- /dev/null +++ b/testing/web-platform/tests/css/css-tables-3/fixed-layout-excess-width-distribution-001.html @@ -0,0 +1,43 @@ + + + + + + + + + +

    Fixed layout tables with excess width and no auto columns

    + +FF/Edge give excess only to fixed columns, in proportion to their relative +widths. This is what the spec dictates. +
    Chrome (62) gives excess to ALL columns, in proportion to their +contribution to total width. + + + + + + +
    + + diff --git a/testing/web-platform/tests/css/css-tables-3/support/check-layout-th.js b/testing/web-platform/tests/css/css-tables-3/support/check-layout-th.js new file mode 100644 index 000000000000..07f7d5ded829 --- /dev/null +++ b/testing/web-platform/tests/css/css-tables-3/support/check-layout-th.js @@ -0,0 +1,190 @@ +(function() { +// Test is initiated from body.onload, so explicit done() call is required. +setup({ explicit_done: true }); + +function checkSubtreeExpectedValues(t, parent, prefix) +{ + var checkedLayout = checkExpectedValues(t, parent, prefix); + Array.prototype.forEach.call(parent.childNodes, function(node) { + checkedLayout |= checkSubtreeExpectedValues(t, node, prefix); + }); + return checkedLayout; +} + +function checkAttribute(output, node, attribute) +{ + var result = node.getAttribute && node.getAttribute(attribute); + output.checked |= !!result; + return result; +} + +function assert_tolerance(actual, expected, message) +{ + if (isNaN(expected) || Math.abs(actual - expected) >= 1) { + assert_equals(actual, Number(expected), message); + } +} + +function checkExpectedValues(t, node, prefix) +{ + var output = { checked: false }; + + var expectedWidth = checkAttribute(output, node, "data-expected-width"); + if (expectedWidth) { + assert_tolerance(node.offsetWidth, expectedWidth, prefix + "width"); + } + + var expectedHeight = checkAttribute(output, node, "data-expected-height"); + if (expectedHeight) { + assert_tolerance(node.offsetHeight, expectedHeight, prefix + "height"); + } + + var expectedOffset = checkAttribute(output, node, "data-offset-x"); + if (expectedOffset) { + assert_tolerance(node.offsetLeft, expectedOffset, prefix + "offsetLeft"); + } + + var expectedOffset = checkAttribute(output, node, "data-offset-y"); + if (expectedOffset) { + assert_tolerance(node.offsetTop, expectedOffset, prefix + "offsetTop"); + } + + var expectedWidth = checkAttribute(output, node, "data-expected-client-width"); + if (expectedWidth) { + assert_tolerance(node.clientWidth, expectedWidth, prefix + "clientWidth"); + } + + var expectedHeight = checkAttribute(output, node, "data-expected-client-height"); + if (expectedHeight) { + assert_tolerance(node.clientHeight, expectedHeight, prefix + "clientHeight"); + } + + var expectedWidth = checkAttribute(output, node, "data-expected-scroll-width"); + if (expectedWidth) { + assert_tolerance(node.scrollWidth, expectedWidth, prefix + "scrollWidth"); + } + + var expectedHeight = checkAttribute(output, node, "data-expected-scroll-height"); + if (expectedHeight) { + assert_tolerance(node.scrollHeight, expectedHeight, prefix + "scrollHeight"); + } + + var expectedOffset = checkAttribute(output, node, "data-total-x"); + if (expectedOffset) { + var totalLeft = node.clientLeft + node.offsetLeft; + assert_tolerance(totalLeft, expectedOffset, prefix + + "clientLeft+offsetLeft (" + node.clientLeft + " + " + node.offsetLeft + ")"); + } + + var expectedOffset = checkAttribute(output, node, "data-total-y"); + if (expectedOffset) { + var totalTop = node.clientTop + node.offsetTop; + assert_tolerance(totalTop, expectedOffset, prefix + + "clientTop+offsetTop (" + node.clientTop + " + " + node.offsetTop + ")"); + } + + var expectedDisplay = checkAttribute(output, node, "data-expected-display"); + if (expectedDisplay) { + var actualDisplay = getComputedStyle(node).display; + assert_equals(actualDisplay, expectedDisplay, prefix + "display"); + } + + var expectedPaddingTop = checkAttribute(output, node, "data-expected-padding-top"); + if (expectedPaddingTop) { + var actualPaddingTop = getComputedStyle(node).paddingTop; + // Trim the unit "px" from the output. + actualPaddingTop = actualPaddingTop.slice(0, -2); + assert_equals(actualPaddingTop, expectedPaddingTop, prefix + "padding-top"); + } + + var expectedPaddingBottom = checkAttribute(output, node, "data-expected-padding-bottom"); + if (expectedPaddingBottom) { + var actualPaddingBottom = getComputedStyle(node).paddingBottom; + // Trim the unit "px" from the output. + actualPaddingBottom = actualPaddingBottom.slice(0, -2); + assert_equals(actualPaddingBottom, expectedPaddingBottom, prefix + "padding-bottom"); + } + + var expectedPaddingLeft = checkAttribute(output, node, "data-expected-padding-left"); + if (expectedPaddingLeft) { + var actualPaddingLeft = getComputedStyle(node).paddingLeft; + // Trim the unit "px" from the output. + actualPaddingLeft = actualPaddingLeft.slice(0, -2); + assert_equals(actualPaddingLeft, expectedPaddingLeft, prefix + "padding-left"); + } + + var expectedPaddingRight = checkAttribute(output, node, "data-expected-padding-right"); + if (expectedPaddingRight) { + var actualPaddingRight = getComputedStyle(node).paddingRight; + // Trim the unit "px" from the output. + actualPaddingRight = actualPaddingRight.slice(0, -2); + assert_equals(actualPaddingRight, expectedPaddingRight, prefix + "padding-right"); + } + + var expectedMarginTop = checkAttribute(output, node, "data-expected-margin-top"); + if (expectedMarginTop) { + var actualMarginTop = getComputedStyle(node).marginTop; + // Trim the unit "px" from the output. + actualMarginTop = actualMarginTop.slice(0, -2); + assert_equals(actualMarginTop, expectedMarginTop, prefix + "margin-top"); + } + + var expectedMarginBottom = checkAttribute(output, node, "data-expected-margin-bottom"); + if (expectedMarginBottom) { + var actualMarginBottom = getComputedStyle(node).marginBottom; + // Trim the unit "px" from the output. + actualMarginBottom = actualMarginBottom.slice(0, -2); + assert_equals(actualMarginBottom, expectedMarginBottom, prefix + "margin-bottom"); + } + + var expectedMarginLeft = checkAttribute(output, node, "data-expected-margin-left"); + if (expectedMarginLeft) { + var actualMarginLeft = getComputedStyle(node).marginLeft; + // Trim the unit "px" from the output. + actualMarginLeft = actualMarginLeft.slice(0, -2); + assert_equals(actualMarginLeft, expectedMarginLeft, prefix + "margin-left"); + } + + var expectedMarginRight = checkAttribute(output, node, "data-expected-margin-right"); + if (expectedMarginRight) { + var actualMarginRight = getComputedStyle(node).marginRight; + // Trim the unit "px" from the output. + actualMarginRight = actualMarginRight.slice(0, -2); + assert_equals(actualMarginRight, expectedMarginRight, prefix + "margin-right"); + } + + return output.checked; +} + +window.checkLayout = function(selectorList, outputContainer) +{ + if (!selectorList) { + console.error("You must provide a CSS selector of nodes to check."); + return; + } + var nodes = document.querySelectorAll(selectorList); + var testNumber = 0; + nodes = Array.prototype.slice.call(nodes); + nodes.reverse(); + var checkedLayout = false; + Array.prototype.forEach.call(nodes, function(node) { + test(function(t) { + var container = node.parentNode.className == 'container' ? node.parentNode : node; + var prefix = "\n" + container.outerHTML + "\n"; + var passed = false; + try { + checkedLayout |= checkExpectedValues(t, node.parentNode, prefix); + checkedLayout |= checkSubtreeExpectedValues(t, node, prefix); + passed = true; + } finally { + checkedLayout |= !passed; + } + }, selectorList + ' ' + String(++testNumber)); + }); + if (!checkedLayout) { + console.error("No valid data-* attributes found in selector list : " + selectorList); + } + done(); +}; + +})(); diff --git a/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-001.html b/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-001.html new file mode 100644 index 000000000000..6a1893fd3e38 --- /dev/null +++ b/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-001.html @@ -0,0 +1,24 @@ + + +CSS Text level 3 Test: preserved white space at the end of and white-space:pre-wrap is not wrapped + + + + + + +

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

    +
    XX XX
    + diff --git a/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-002.html b/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-002.html new file mode 100644 index 000000000000..891527fe37bd --- /dev/null +++ b/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-002.html @@ -0,0 +1,25 @@ + + +CSS Text level 3 Test: preserved white space at the end of and white-space:pre-wrap does not change based on word-break:break-all + + + + + + +

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

    +
    XX XX
    + diff --git a/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-003.html b/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-003.html new file mode 100644 index 000000000000..56d30802a713 --- /dev/null +++ b/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-003.html @@ -0,0 +1,25 @@ + + +CSS Text level 3 Test: preserved white space at the end of and white-space:pre-wrap does not change based on word-break:keep-all + + + + + + +

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

    +
    XX XX
    + diff --git a/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-004.html b/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-004.html new file mode 100644 index 000000000000..b4b3b4597831 --- /dev/null +++ b/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-004.html @@ -0,0 +1,25 @@ + + +CSS Text level 3 Test: preserved white space at the end of and white-space:pre-wrap does not change based on line-break:loose + + + + + + +

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

    +
    XX XX
    + diff --git a/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-005.html b/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-005.html new file mode 100644 index 000000000000..bf04625c7c53 --- /dev/null +++ b/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-005.html @@ -0,0 +1,25 @@ + + +CSS Text level 3 Test: preserved white space at the end of and white-space:pre-wrap does not change based on line-break:normal + + + + + + +

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

    +
    XX XX
    + diff --git a/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-006.html b/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-006.html new file mode 100644 index 000000000000..8802c30732c4 --- /dev/null +++ b/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-006.html @@ -0,0 +1,25 @@ + + +CSS Text level 3 Test: preserved white space at the end of and white-space:pre-wrap does not change based on line-break:strict + + + + + + +

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

    +
    XX XX
    + diff --git a/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-007.html b/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-007.html new file mode 100644 index 000000000000..29b356c13d3b --- /dev/null +++ b/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-007.html @@ -0,0 +1,26 @@ + + +CSS Text level 3 Test: preserved white space at the end of and white-space:pre-wrap does not change based on overflow-wrap:break-word + + + + + + +

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

    +
    XX XX
    + diff --git a/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-008.html b/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-008.html new file mode 100644 index 000000000000..61ccaae34e03 --- /dev/null +++ b/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-008.html @@ -0,0 +1,27 @@ + + +CSS Text level 3 Test: preserved white space at the end of and white-space:pre-wrap is wrapped when overflow-wrap is break-spaces + + + + + + + +

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

    +
    XX XX
    + diff --git a/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-009.html b/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-009.html new file mode 100644 index 000000000000..2aa8cd2d982e --- /dev/null +++ b/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-009.html @@ -0,0 +1,27 @@ + + +CSS Text level 3 Test: single preserved white space at the end of with white-space:pre-wrap overflow-wrap:break-spaces + + + + + + + +

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

    +
    XX XX
    + diff --git a/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-010.html b/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-010.html new file mode 100644 index 000000000000..90f20055427f --- /dev/null +++ b/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-010.html @@ -0,0 +1,27 @@ + + +CSS Text level 3 Test: single preserved white space at the end of with white-space:pre-wrap overflow-wrap:break-spaces break-word + + + + + + + +

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

    +
    XX XX
    + diff --git a/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-011.html b/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-011.html new file mode 100644 index 000000000000..6659e324bc53 --- /dev/null +++ b/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-011.html @@ -0,0 +1,27 @@ + + +CSS Text level 3 Test: preserved white space at the end of and white-space:pre-wrap does not cause wrapping + + + + + + + +

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

    +
    XX + XX
    + diff --git a/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-012.html b/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-012.html new file mode 100644 index 000000000000..d96be79c3e3b --- /dev/null +++ b/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-012.html @@ -0,0 +1,26 @@ + + +CSS Text level 3 Test: preserved white space at the end of and white-space:pre-wrap with right alignement + + + + + + +

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

    +
    XX +XX
    + diff --git a/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-013.html b/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-013.html new file mode 100644 index 000000000000..6e3b6db6626f --- /dev/null +++ b/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-013.html @@ -0,0 +1,26 @@ + + +CSS Text level 3 Test: preserved white space at the end of and white-space:pre-wrap with center alignement + + + + + + +

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

    +
    XX +XX
    + diff --git a/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-014.html b/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-014.html new file mode 100644 index 000000000000..2275201f864a --- /dev/null +++ b/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-014.html @@ -0,0 +1,27 @@ + + +CSS Text level 3 Test: preserved white space at the end of and white-space:pre-wrap with justification + + + + + + +

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

    +
    X​X +X​X
    + diff --git a/testing/web-platform/tests/css/css-text-3/white-space/reference/pre-wrap-001-ref.html b/testing/web-platform/tests/css/css-text-3/white-space/reference/pre-wrap-001-ref.html new file mode 100644 index 000000000000..21fe887aedee --- /dev/null +++ b/testing/web-platform/tests/css/css-text-3/white-space/reference/pre-wrap-001-ref.html @@ -0,0 +1,16 @@ + + +CSS Text level 3 Test reference file + + + +

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

    +
    XX
    XX
    + diff --git a/testing/web-platform/tests/css/css-text-3/white-space/reference/textarea-pre-wrap-001-ref.html b/testing/web-platform/tests/css/css-text-3/white-space/reference/textarea-pre-wrap-001-ref.html new file mode 100644 index 000000000000..8951c3db4bfd --- /dev/null +++ b/testing/web-platform/tests/css/css-text-3/white-space/reference/textarea-pre-wrap-001-ref.html @@ -0,0 +1,33 @@ + + +CSS Text level 3 Test reference file + + + + +

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

    + + diff --git a/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-001.html b/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-001.html new file mode 100644 index 000000000000..2c41682fd17a --- /dev/null +++ b/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-001.html @@ -0,0 +1,35 @@ + + +CSS Text level 3 Test: preserved white space at the end of and white-space:pre-wrap is not wrapped in a textarea + + + + + + +

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

    + + diff --git a/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-002.html b/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-002.html new file mode 100644 index 000000000000..bd411d9f1ae7 --- /dev/null +++ b/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-002.html @@ -0,0 +1,36 @@ + + +CSS Text level 3 Test: preserved white space at the end of and white-space:pre-wrap does not change based on word-break:break-all in a textarea + + + + + + +

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

    + + diff --git a/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-003.html b/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-003.html new file mode 100644 index 000000000000..81f7a5aa8001 --- /dev/null +++ b/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-003.html @@ -0,0 +1,36 @@ + + +CSS Text level 3 Test: preserved white space at the end of and white-space:pre-wrap does not change based on word-break:keep-all in a textarea + + + + + + +

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

    + + diff --git a/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-004.html b/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-004.html new file mode 100644 index 000000000000..c29ceed221ad --- /dev/null +++ b/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-004.html @@ -0,0 +1,36 @@ + + +CSS Text level 3 Test: preserved white space at the end of and white-space:pre-wrap does not change based on line-break:loose in a textarea + + + + + + +

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

    + + diff --git a/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-005.html b/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-005.html new file mode 100644 index 000000000000..8137ac642143 --- /dev/null +++ b/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-005.html @@ -0,0 +1,36 @@ + + +CSS Text level 3 Test: preserved white space at the end of and white-space:pre-wrap does not change based on line-break:normal in a textarea + + + + + + +

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

    + + diff --git a/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-006.html b/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-006.html new file mode 100644 index 000000000000..b06947c8a71e --- /dev/null +++ b/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-006.html @@ -0,0 +1,36 @@ + + +CSS Text level 3 Test: preserved white space at the end of and white-space:pre-wrap does not change based on line-break:strict in a textarea + + + + + + +

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

    + + diff --git a/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-007.html b/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-007.html new file mode 100644 index 000000000000..c67857075894 --- /dev/null +++ b/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-007.html @@ -0,0 +1,37 @@ + + +CSS Text level 3 Test: preserved white space at the end of and white-space:pre-wrap does not change based on overflow-wrap:break-word in a textarea + + + + + + +

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

    + + diff --git a/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-008.html b/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-008.html new file mode 100644 index 000000000000..1361bf19866e --- /dev/null +++ b/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-008.html @@ -0,0 +1,38 @@ + + +CSS Text level 3 Test: preserved white space at the end of and white-space:pre-wrap is wrapped when overflow-wrap is break-spaces in a textarea + + + + + + + +

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

    + + diff --git a/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-009.html b/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-009.html new file mode 100644 index 000000000000..cecaadb0b378 --- /dev/null +++ b/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-009.html @@ -0,0 +1,38 @@ + + +CSS Text level 3 Test: single preserved white space at the end of with white-space:pre-wrap overflow-wrap:break-spaces in a textarea + + + + + + + +

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

    + + diff --git a/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-010.html b/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-010.html new file mode 100644 index 000000000000..7d41fee8c6be --- /dev/null +++ b/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-010.html @@ -0,0 +1,38 @@ + + +CSS Text level 3 Test: single preserved white space at the end of with white-space:pre-wrap overflow-wrap:break-spaces break-word in a textarea + + + + + + + +

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

    + + diff --git a/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-011.html b/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-011.html new file mode 100644 index 000000000000..96d121f0aab6 --- /dev/null +++ b/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-011.html @@ -0,0 +1,38 @@ + + +CSS Text level 3 Test: preserved white space at the end of and white-space:pre-wrap does not cause wrapping in a textarea + + + + + + + +

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

    + + diff --git a/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-012.html b/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-012.html new file mode 100644 index 000000000000..85fcfee41fac --- /dev/null +++ b/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-012.html @@ -0,0 +1,37 @@ + + +CSS Text level 3 Test: preserved white space at the end of and white-space:pre-wrap with right alignement in a textarea + + + + + + +

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

    + + diff --git a/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-013.html b/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-013.html new file mode 100644 index 000000000000..fd3b26b1da0f --- /dev/null +++ b/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-013.html @@ -0,0 +1,37 @@ + + +CSS Text level 3 Test: preserved white space at the end of and white-space:pre-wrap with center alignement in a textarea + + + + + + +

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

    + + diff --git a/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-014.html b/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-014.html new file mode 100644 index 000000000000..881fffe173d9 --- /dev/null +++ b/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-014.html @@ -0,0 +1,38 @@ + + +CSS Text level 3 Test: preserved white space at the end of and white-space:pre-wrap with justification in a textarea + + + + + + +

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

    + + diff --git a/testing/web-platform/tests/css/css-transitions-1/events-001.html b/testing/web-platform/tests/css/css-transitions-1/events-001.html index 013c36b7710a..59d2011b3978 100644 --- a/testing/web-platform/tests/css/css-transitions-1/events-001.html +++ b/testing/web-platform/tests/css/css-transitions-1/events-001.html @@ -1,210 +1,150 @@ - + - - - CSS Transitions Test: transitionend event for shorthand property - - - - - + + +CSS Transitions Test: transitionend event for shorthand property + + + + - - + + + - - - - - + + - + - - - -
    - -
    -
    -
    Text sample
    -
    -
    -
    + const watcher = new EventWatcher(t, div, [ 'transitionend' ]); + return watcher.wait_for('transitionend').then(evt => { + assert_end_events_equal(evt, 'padding-left', 0.01); + }); +}, 'transition:all changing padding-left'); - +promise_test(t => { + const div = addDiv(t, { style: 'transition: all .01s linear; ' + + 'padding: 1px' }); + getComputedStyle(div).paddingLeft; + div.style.padding = '10px'; - - +promise_test(t => { + const div = addDiv(t, { style: 'transition: padding .01s linear; ' + + 'padding: 1px' }); + getComputedStyle(div).paddingLeft; + div.style.padding = '10px 10px 1px 10px'; + + const watcher = new EventWatcher(t, div, [ 'transitionend' ]); + return watcher.wait_for(Array(3).fill('transitionend'), + { record: 'all' }).then(evts => { + assert_end_event_batch_equal(evts, + [ 'padding-left', + 'padding-right', + 'padding-top' ], + 0.01); + }); +}, 'transition:padding changing padding but not padding-bottom'); + +promise_test(t => { + const div = addDiv(t, { style: 'transition: padding-left .01s linear; ' + + 'padding-left: 1px' }); + getComputedStyle(div).paddingLeft; + div.style.paddingLeft = '10px'; + + const watcher = new EventWatcher(t, div, [ 'transitionend' ]); + return watcher.wait_for('transitionend').then(evt => { + assert_end_events_equal(evt, 'padding-left', 0.01); + }); +}, 'transition:padding-left changing padding-left'); + +promise_test(t => { + const div = addDiv(t, { style: 'transition: padding-left .01s linear; ' + + 'padding: 1px' }); + getComputedStyle(div).paddingLeft; + div.style.padding = '10px'; + + const watcher = new EventWatcher(t, div, [ 'transitionend' ]); + return watcher.wait_for('transitionend').then(evt => { + assert_end_events_equal(evt, 'padding-left', 0.01); + }); +}, 'transition:padding-left changing padding'); + +promise_test(t => { + const div = addDiv(t, { style: 'transition: padding-left .01s linear; ' + + 'padding: 1px' }); + getComputedStyle(div).paddingLeft; + div.style.padding = '10px 10px 1px 10px'; + + const watcher = new EventWatcher(t, div, [ 'transitionend' ]); + return watcher.wait_for('transitionend').then(evt => { + assert_end_events_equal(evt, 'padding-left', 0.01); + }); +}, 'transition:padding-left changing padding but not padding-bottom'); + + diff --git a/testing/web-platform/tests/css/css-transitions-1/events-002.html b/testing/web-platform/tests/css/css-transitions-1/events-002.html index ca0bd89522c8..3ec2cc3da475 100644 --- a/testing/web-platform/tests/css/css-transitions-1/events-002.html +++ b/testing/web-platform/tests/css/css-transitions-1/events-002.html @@ -1,136 +1,49 @@ - + - - - CSS Transitions Test: transitionend event for implied property value - - - - + + +CSS Transitions Test: transitionend event for implied property value + + + - - + + + - - - - - + + - +
    - - - - -
    - -
    -
    -
    Text sample
    -
    -
    -
    + - + const watcher = new EventWatcher(t, div, [ 'transitionend' ]); + return watcher.wait_for(Array(4).fill('transitionend'), + { record: 'all' }).then(evts => { + assert_end_event_batch_equal(evts, + [ 'padding-bottom', + 'padding-left', + 'padding-right', + 'padding-top' ], + 0.01); + }); +}, 'transition:all changing padding from nothing'); + + diff --git a/testing/web-platform/tests/css/css-transitions-1/events-003.html b/testing/web-platform/tests/css/css-transitions-1/events-003.html index edaef1166fdb..2f8ac7f4244c 100644 --- a/testing/web-platform/tests/css/css-transitions-1/events-003.html +++ b/testing/web-platform/tests/css/css-transitions-1/events-003.html @@ -1,143 +1,34 @@ - + - - - CSS Transitions Test: transitionend event with negative delay - - - - - + + +CSS Transitions Test: transitionend event with negative delay + + + + - - + + + - - - - - + + - +
    - - - - -
    - -
    -
    -
    Text sample
    -
    -
    -
    + - + const watcher = new EventWatcher(t, div, [ 'transitionend' ]); + return watcher.wait_for('transitionend').then(evt => { + assert_end_events_equal(evt, 'padding-left', 0.02); + }); +}, 'duration: 0.02s, delay: -0.01s'); + + diff --git a/testing/web-platform/tests/css/css-transitions-1/events-004.html b/testing/web-platform/tests/css/css-transitions-1/events-004.html index 6ab35e21900e..17195f40eb19 100644 --- a/testing/web-platform/tests/css/css-transitions-1/events-004.html +++ b/testing/web-platform/tests/css/css-transitions-1/events-004.html @@ -1,150 +1,61 @@ - + - - - CSS Transitions Test: transitionend event with non matching lists - - - - - + + +CSS Transitions Test: transitionend event with non matching lists + + + + - - + + + - - - - - + + - +
    - - - - -
    - -
    -
    -
    Text sample
    -
    -
    -
    + - + const watcher = new EventWatcher(t, div, [ 'transitionend' ]); + return watcher.wait_for('transitionend').then(evt => { + assert_end_events_equal(evt, 'padding-top', 0.02); + }); +}, 'truncating lists'); + + diff --git a/testing/web-platform/tests/css/css-transitions-1/events-005.html b/testing/web-platform/tests/css/css-transitions-1/events-005.html index 78c69d704369..48ba63ab2d8d 100644 --- a/testing/web-platform/tests/css/css-transitions-1/events-005.html +++ b/testing/web-platform/tests/css/css-transitions-1/events-005.html @@ -1,146 +1,67 @@ - + - - - CSS Transitions Test: transitionend event with property specificity - - - - - + + +CSS Transitions Test: transitionend event with property specificity + + + + - - + + + - - - - - + + - +
    - - - - -
    - -
    -
    -
    Text sample
    -
    -
    -
    + - + const watcher = new EventWatcher(t, div, [ 'transitionend' ]); + return watcher.wait_for('transitionend').then(evt => { + assert_end_events_equal(evt, 'padding-left', 0.02); + }); +}, 'padding-left, padding'); + + diff --git a/testing/web-platform/tests/css/css-transitions-1/events-006.html b/testing/web-platform/tests/css/css-transitions-1/events-006.html index ab3b88072c0b..36412bcd9e19 100644 --- a/testing/web-platform/tests/css/css-transitions-1/events-006.html +++ b/testing/web-platform/tests/css/css-transitions-1/events-006.html @@ -1,135 +1,58 @@ - + - - - CSS Transitions Test: transitionend event for pseudo elements - - - - - - + + +CSS Transitions Test: transitionend event for pseudo elements + + + + + - - + + + - - - - - + - + + - - - - -
    - -
    -
    -
    Text sample
    -
    -
    -
    +
    - + - + const watcher = new EventWatcher(t, div, [ 'transitionend' ]); + return watcher.wait_for('transitionend').then(evt => { + assert_end_events_equal(evt, 'padding-left', 0.01, '::after'); + }); +}, 'transition padding-left on ::after'); + + diff --git a/testing/web-platform/tests/css/css-transitions-1/events-007.html b/testing/web-platform/tests/css/css-transitions-1/events-007.html index d75b0031290e..610df6e85d0d 100644 --- a/testing/web-platform/tests/css/css-transitions-1/events-007.html +++ b/testing/web-platform/tests/css/css-transitions-1/events-007.html @@ -1,64 +1,50 @@ - - CSS Transitions Test: no transitionend event after display:none - - - - - - - - - + + - div.className = 'blue';// initiate transition - window.setTimeout(function () { - t.step(function () { - assert_false(ended, "transitionend did not fire before hiding callback ran"); - assert_false(after, "hiding callback ran before the end of the test"); - }); - div.className += ' hidden';// force display:none during the transition - }, 1000);// halfway into the transition - window.setTimeout(function () { - after = true; - t.step(function () { - assert_false(ended, "transitionend event didn't fire"); - t.done(); - }); - }, 2100);// after the transition would have ended - }, false); -}, "transitionend should not be fired if the element is made display:none during the transition"); - -
    + +
    + + diff --git a/testing/web-platform/tests/css/css-transitions-1/support/helper.js b/testing/web-platform/tests/css/css-transitions-1/support/helper.js index 805a1f24d6bc..f11e4347abee 100644 --- a/testing/web-platform/tests/css/css-transitions-1/support/helper.js +++ b/testing/web-platform/tests/css/css-transitions-1/support/helper.js @@ -93,4 +93,107 @@ root.domFixture = function(selector) { throw new Error('domFixture must be initialized first!'); } }; + +/* + * The recommended minimum precision to use for time values. + * + * Based on Web Animations: + * https://w3c.github.io/web-animations/#precision-of-time-values + */ +const TIME_PRECISION = 0.0005; // ms + +/* + * Allow implementations to substitute an alternative method for comparing + * times based on their precision requirements. + */ +root.assert_times_equal = function(actual, expected, description) { + assert_approx_equals(actual, expected, TIME_PRECISION, description); +} + +/** + * Assert that CSSTransition event, |evt|, has the expected property values + * defined by |propertyName|, |elapsedTime|, and |pseudoElement|. + */ +root.assert_end_events_equal = function(evt, propertyName, elapsedTime, + pseudoElement = '') { + assert_equals(evt.propertyName, propertyName); + assert_times_equal(evt.elapsedTime, elapsedTime); + assert_equals(evt.pseudoElement, pseudoElement); +} + +/** + * Assert that array of simultaneous CSSTransition events, |evts|, have the + * corresponding property names listed in |propertyNames|, and the expected + * |elapsedTimes| and |pseudoElement| members. + * + * |elapsedTimes| may be a single value if all events are expected to have the + * same elapsedTime, or an array parallel to |propertyNames|. + */ +root.assert_end_event_batch_equal = function(evts, propertyNames, elapsedTimes, + pseudoElement = '') { + assert_equals( + evts.length, + propertyNames.length, + 'Test harness error: should have waited for the correct number of events' + ); + assert_true( + typeof elapsedTimes === 'number' || + (Array.isArray(elapsedTimes) && + elapsedTimes.length === propertyNames.length), + 'Test harness error: elapsedTimes must either be a number or an array of' + + ' numbers with the same length as propertyNames' + ); + + if (typeof elapsedTimes === 'number') { + elapsedTimes = Array(propertyNames.length).fill(elapsedTimes); + } + const testPairs = propertyNames.map((propertyName, index) => ({ + propertyName, + elapsedTime: elapsedTimes[index] + })); + + const sortByPropertyName = (a, b) => + a.propertyName.localeCompare(b.propertyName); + evts.sort(sortByPropertyName); + testPairs.sort(sortByPropertyName); + + for (let evt of evts) { + const expected = testPairs.shift(); + assert_end_events_equal( + evt, + expected.propertyName, + expected.elapsedTime, + pseudoElement + ); + } +} + +/** + * Appends a div to the document body. + * + * @param t The testharness.js Test object. If provided, this will be used + * to register a cleanup callback to remove the div when the test + * finishes. + * + * @param attrs A dictionary object with attribute names and values to set on + * the div. + */ +root.addDiv = function(t, attrs) { + var div = document.createElement('div'); + if (attrs) { + for (var attrName in attrs) { + div.setAttribute(attrName, attrs[attrName]); + } + } + document.body.appendChild(div); + if (t && typeof t.add_cleanup === 'function') { + t.add_cleanup(function() { + if (div.parentNode) { + div.remove(); + } + }); + } + return div; +} + })(window); diff --git a/testing/web-platform/tests/css/css-ui-3/caret-color-020.html b/testing/web-platform/tests/css/css-ui-3/caret-color-020.html index 4e80c2f1d1fb..742c4a1f958b 100644 --- a/testing/web-platform/tests/css/css-ui-3/caret-color-020.html +++ b/testing/web-platform/tests/css/css-ui-3/caret-color-020.html @@ -33,7 +33,14 @@ var player = textarea.animate(keyframes, options); player.pause(); player.currentTime = 5; - assert_equals(getComputedStyle(textarea).caretColor, 'rgb(128, 128, 128)'); + var rgb = getComputedStyle(textarea).caretColor.match(/\d+/g); + /* Only testing that the rgb value is some intermediary value, + but not checking which, as we only care that the value is interpolated, + not about the numerical accuracy of interpolation, + which is something tests for the animation spec ought to worry about. */ + assert_true( rgb[0] < 255 && rgb[0] > 0, "the red channel is interpolated"); + assert_true( rgb[1] < 255 && rgb[1] > 0, "the green channel is interpolated"); + assert_true( rgb[2] < 255 && rgb[2] > 0, "the blue channel is interpolated"); }, "caret-color: currentcolor is interpolable"); diff --git a/testing/web-platform/tests/css/css-ui-3/text-overflow-006.html b/testing/web-platform/tests/css/css-ui-3/text-overflow-006.html index 0da8e962c931..f978f624b292 100644 --- a/testing/web-platform/tests/css/css-ui-3/text-overflow-006.html +++ b/testing/web-platform/tests/css/css-ui-3/text-overflow-006.html @@ -5,27 +5,24 @@ - +

    Test passes if “PASS…” appears below.

    -
    PASSfiller text to make things overflow
    +
    PASS FAIL
    diff --git a/testing/web-platform/tests/css/css-ui-3/text-overflow-023.html b/testing/web-platform/tests/css/css-ui-3/text-overflow-023.html new file mode 100644 index 000000000000..ca3f8da3b1d5 --- /dev/null +++ b/testing/web-platform/tests/css/css-ui-3/text-overflow-023.html @@ -0,0 +1,35 @@ + + + +CSS Basic User Interface Test: interacting with the ellipsis + + + + + + + + +
        
    + diff --git a/testing/web-platform/tests/css/css-values-3/absolute-length-units-001.html b/testing/web-platform/tests/css/css-values-3/absolute-length-units-001.html new file mode 100644 index 000000000000..ae20834572ef --- /dev/null +++ b/testing/web-platform/tests/css/css-values-3/absolute-length-units-001.html @@ -0,0 +1,43 @@ + + +absolute length units test + + + + + + + +
    +
    +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/testing/web-platform/tests/css/css-values-3/reference/vh_not_refreshing_on_chrome-ref.html b/testing/web-platform/tests/css/css-values-3/reference/vh_not_refreshing_on_chrome-ref.html index eb5b15d4aa5d..32ce9ada1556 100644 --- a/testing/web-platform/tests/css/css-values-3/reference/vh_not_refreshing_on_chrome-ref.html +++ b/testing/web-platform/tests/css/css-values-3/reference/vh_not_refreshing_on_chrome-ref.html @@ -1,10 +1,11 @@ - + CSS Reference File + diff --git a/testing/web-platform/tests/css/css-values-3/vh_not_refreshing_on_chrome.html b/testing/web-platform/tests/css/css-values-3/vh_not_refreshing_on_chrome.html index 086e37e30fd8..b4e0a413ab97 100644 --- a/testing/web-platform/tests/css/css-values-3/vh_not_refreshing_on_chrome.html +++ b/testing/web-platform/tests/css/css-values-3/vh_not_refreshing_on_chrome.html @@ -1,6 +1,6 @@ - + CSS Values and Units Test: vh-based dimension doesn't change when the element's other dimension doesn't change. @@ -8,6 +8,7 @@ + + + + diff --git a/testing/web-platform/tests/css/work-in-progress/opera/OWNERS b/testing/web-platform/tests/css/work-in-progress/opera/OWNERS index 638516146952..8b137891791f 100644 --- a/testing/web-platform/tests/css/work-in-progress/opera/OWNERS +++ b/testing/web-platform/tests/css/work-in-progress/opera/OWNERS @@ -1 +1 @@ -@zcorpan + diff --git a/testing/web-platform/tests/cssom-view/OWNERS b/testing/web-platform/tests/cssom-view/OWNERS index 678152d6503c..5e0cb233944b 100644 --- a/testing/web-platform/tests/cssom-view/OWNERS +++ b/testing/web-platform/tests/cssom-view/OWNERS @@ -1,3 +1,2 @@ @AutomatedTester @plinss -@zcorpan diff --git a/testing/web-platform/tests/cssom-view/elementFromPosition.html b/testing/web-platform/tests/cssom-view/elementFromPosition.html index b781bb3713ed..d4da36ff1f70 100644 --- a/testing/web-platform/tests/cssom-view/elementFromPosition.html +++ b/testing/web-platform/tests/cssom-view/elementFromPosition.html @@ -85,7 +85,7 @@ // 元素范围内 {x: 50, y: 50, r: 'inside'}, // 右边线 - {x: 110, y: 10, r: 'right line'}, + {x: 110, y: 50, r: 'right line'}, // 左下角 {x: 10, y: 110, r: 'bottom left corner'}, // 下边线 diff --git a/testing/web-platform/tests/cssom-view/interfaces.html b/testing/web-platform/tests/cssom-view/interfaces.html new file mode 100644 index 000000000000..c6e3662334e7 --- /dev/null +++ b/testing/web-platform/tests/cssom-view/interfaces.html @@ -0,0 +1,67 @@ + + + +CSSOM View automated IDL tests + + + + + + + + + +

    CSSOM View IDL tests

    +
    + + diff --git a/testing/web-platform/tests/cssom-view/scrollBoundaryBehavior-manual.html b/testing/web-platform/tests/cssom-view/scrollBoundaryBehavior-manual.html new file mode 100644 index 000000000000..efd00437bde0 --- /dev/null +++ b/testing/web-platform/tests/cssom-view/scrollBoundaryBehavior-manual.html @@ -0,0 +1,151 @@ + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    + +

    scroll-boundary-behavior

    +

    Tests that scroll-boundary-behavior prevents scroll-propagation in the area and direction as specified.

    +
      +
    1. Make two scrolls on BLUE, in this order: scroll UP (or drag down), then scroll LEFT (or drag right). Scroll (or drag) until nothing is scrolling. Then tap on DONE.
    2. +
    3. Repeat the same scrolls as in step 1 and then tap on DONE.
    4. +
    5. Repeat the same scrolls as in step 1 and then tap on DONE.
    6. +
    7. Make two separate scrolls on GREEN, in this order: scroll UP (or drag down), then scroll LEFT (or drag right). Scroll (or drag) until nothing is scrolling. Then tap on DONE.
    8. +
    + + + diff --git a/testing/web-platform/tests/cssom-view/scrollintoview.html b/testing/web-platform/tests/cssom-view/scrollintoview.html new file mode 100644 index 000000000000..c69025b4943a --- /dev/null +++ b/testing/web-platform/tests/cssom-view/scrollintoview.html @@ -0,0 +1,112 @@ + +CSSOM View - scrollIntoView + + + + + + + + + + +
    +
    + diff --git a/testing/web-platform/tests/cssom-view/ttwf-scrollintoview.html b/testing/web-platform/tests/cssom-view/ttwf-scrollintoview.html deleted file mode 100644 index 1ccb9c580de6..000000000000 --- a/testing/web-platform/tests/cssom-view/ttwf-scrollintoview.html +++ /dev/null @@ -1,32 +0,0 @@ - - - - CSSOM View - 6 - scrollIntoView tests - - - - - - - - - -
    -
    -
    -
    -
    - - - diff --git a/testing/web-platform/tests/cssom/OWNERS b/testing/web-platform/tests/cssom/OWNERS index fc98874a3222..bd161115db0d 100644 --- a/testing/web-platform/tests/cssom/OWNERS +++ b/testing/web-platform/tests/cssom/OWNERS @@ -1,4 +1,3 @@ -@zcorpan @dbaron @plinss @rune-opera diff --git a/testing/web-platform/tests/cssom/interfaces.html b/testing/web-platform/tests/cssom/interfaces.html index cf43e94bc116..e289c5a3496e 100644 --- a/testing/web-platform/tests/cssom/interfaces.html +++ b/testing/web-platform/tests/cssom/interfaces.html @@ -1,174 +1,89 @@ - - + + + CSSOM automated IDL tests - - - - - -
    - - diff --git a/testing/web-platform/tests/cssom/support/xmlss-pi.xhtml b/testing/web-platform/tests/cssom/support/xmlss-pi.xhtml new file mode 100644 index 000000000000..8e22b50b25a5 --- /dev/null +++ b/testing/web-platform/tests/cssom/support/xmlss-pi.xhtml @@ -0,0 +1 @@ + diff --git a/testing/web-platform/tests/docs/OWNERS b/testing/web-platform/tests/docs/OWNERS index 20ea37eae2d1..8b80152b3e82 100644 --- a/testing/web-platform/tests/docs/OWNERS +++ b/testing/web-platform/tests/docs/OWNERS @@ -1,4 +1,3 @@ @sideshowbarker @dontcallmedom -@zcorpan @gsnedders diff --git a/testing/web-platform/tests/docs/introduction.md b/testing/web-platform/tests/docs/introduction.md index 2845b7d0f98e..94156f77d970 100644 --- a/testing/web-platform/tests/docs/introduction.md +++ b/testing/web-platform/tests/docs/introduction.md @@ -74,7 +74,7 @@ The testsuite has a few types of tests, outlined below: ## GitHub -GitHub is used both for issue tracking and test submissions; we +[GitHub](https://github.com/w3c/web-platform-tests/) is used both for [issue tracking](https://github.com/w3c/web-platform-tests/issues) and [test submissions](https://github.com/w3c/web-platform-tests/pulls); we provide [a limited introduction][github-intro] to both git and GitHub. diff --git a/testing/web-platform/tests/dom/OWNERS b/testing/web-platform/tests/dom/OWNERS index 7b9191bbd82f..487f8ddbc0e3 100644 --- a/testing/web-platform/tests/dom/OWNERS +++ b/testing/web-platform/tests/dom/OWNERS @@ -1,4 +1,3 @@ @ayg @jdm -@zcorpan @zqzhang diff --git a/testing/web-platform/tests/dom/nodes/Node-cloneNode.html b/testing/web-platform/tests/dom/nodes/Node-cloneNode.html index 5ed7b08c92a0..6c8663076a41 100644 --- a/testing/web-platform/tests/dom/nodes/Node-cloneNode.html +++ b/testing/web-platform/tests/dom/nodes/Node-cloneNode.html @@ -54,7 +54,6 @@ create_element_and_check("a", "HTMLAnchorElement"); create_element_and_check("abbr", "HTMLElement"); create_element_and_check("acronym", "HTMLElement"); create_element_and_check("address", "HTMLElement"); -create_element_and_check("applet", "HTMLAppletElement"); create_element_and_check("area", "HTMLAreaElement"); create_element_and_check("article", "HTMLElement"); create_element_and_check("aside", "HTMLElement"); diff --git a/testing/web-platform/tests/encrypted-media/encrypted-media-default-feature-policy.https.sub.html b/testing/web-platform/tests/encrypted-media/encrypted-media-default-feature-policy.https.sub.html new file mode 100644 index 000000000000..1514d306f30e --- /dev/null +++ b/testing/web-platform/tests/encrypted-media/encrypted-media-default-feature-policy.https.sub.html @@ -0,0 +1,21 @@ + + + + + + + + diff --git a/testing/web-platform/tests/feature-policy/OWNERS b/testing/web-platform/tests/feature-policy/OWNERS new file mode 100644 index 000000000000..ceb5bd9981b1 --- /dev/null +++ b/testing/web-platform/tests/feature-policy/OWNERS @@ -0,0 +1 @@ +@clelland diff --git a/testing/web-platform/tests/feature-policy/README.md b/testing/web-platform/tests/feature-policy/README.md index 775a35412636..a5276f0a7f34 100644 --- a/testing/web-platform/tests/feature-policy/README.md +++ b/testing/web-platform/tests/feature-policy/README.md @@ -37,8 +37,8 @@ HTTP tests are used to test features with header policy. * test if feature is enabled / disabled in a cross-origin iframe. Examples: -`/payment-request/payment-disabled-by-feature-policy.https.sub.html` -`/payment-request/payment-disabled-by-feature-policy.https.sub.html.headers` +`/feature-policy/payment-disabled-by-feature-policy.https.sub.html` +`/feature-policy/payment-disabled-by-feature-policy.https.sub.html.headers` ### How to Write Container Policy Tests Simply use `test_feature_availability()` with the optional argument @@ -47,7 +47,7 @@ Simply use `test_feature_availability()` with the optional argument * feature is enabled / disabled in a cross-origin iframe. Example: -`/payment-request/payment-allowed-by-feature-policy-attribute.https.sub.html` +`/feature-policy/payment-allowed-by-feature-policy-attribute.https.sub.html` ### How to Write Container Policy Tests with Redirect Similar to the section above, append @@ -55,5 +55,5 @@ Similar to the section above, append passed to `test_feature_availability()`. Example: -`/payment-request/payment-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html` +`/feature-policy/payment-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html` diff --git a/testing/web-platform/tests/payment-request/payment-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html b/testing/web-platform/tests/feature-policy/payment-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html similarity index 100% rename from testing/web-platform/tests/payment-request/payment-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html rename to testing/web-platform/tests/feature-policy/payment-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html diff --git a/testing/web-platform/tests/payment-request/payment-allowed-by-feature-policy-attribute.https.sub.html b/testing/web-platform/tests/feature-policy/payment-allowed-by-feature-policy-attribute.https.sub.html similarity index 100% rename from testing/web-platform/tests/payment-request/payment-allowed-by-feature-policy-attribute.https.sub.html rename to testing/web-platform/tests/feature-policy/payment-allowed-by-feature-policy-attribute.https.sub.html diff --git a/testing/web-platform/tests/payment-request/payment-allowed-by-feature-policy.https.sub.html b/testing/web-platform/tests/feature-policy/payment-allowed-by-feature-policy.https.sub.html similarity index 100% rename from testing/web-platform/tests/payment-request/payment-allowed-by-feature-policy.https.sub.html rename to testing/web-platform/tests/feature-policy/payment-allowed-by-feature-policy.https.sub.html diff --git a/testing/web-platform/tests/payment-request/payment-allowed-by-feature-policy.https.sub.html.headers b/testing/web-platform/tests/feature-policy/payment-allowed-by-feature-policy.https.sub.html.headers similarity index 100% rename from testing/web-platform/tests/payment-request/payment-allowed-by-feature-policy.https.sub.html.headers rename to testing/web-platform/tests/feature-policy/payment-allowed-by-feature-policy.https.sub.html.headers diff --git a/testing/web-platform/tests/payment-request/payment-default-feature-policy.https.sub.html b/testing/web-platform/tests/feature-policy/payment-default-feature-policy.https.sub.html similarity index 100% rename from testing/web-platform/tests/payment-request/payment-default-feature-policy.https.sub.html rename to testing/web-platform/tests/feature-policy/payment-default-feature-policy.https.sub.html diff --git a/testing/web-platform/tests/payment-request/payment-disabled-by-feature-policy.https.sub.html b/testing/web-platform/tests/feature-policy/payment-disabled-by-feature-policy.https.sub.html similarity index 100% rename from testing/web-platform/tests/payment-request/payment-disabled-by-feature-policy.https.sub.html rename to testing/web-platform/tests/feature-policy/payment-disabled-by-feature-policy.https.sub.html diff --git a/testing/web-platform/tests/payment-request/payment-disabled-by-feature-policy.https.sub.html.headers b/testing/web-platform/tests/feature-policy/payment-disabled-by-feature-policy.https.sub.html.headers similarity index 100% rename from testing/web-platform/tests/payment-request/payment-disabled-by-feature-policy.https.sub.html.headers rename to testing/web-platform/tests/feature-policy/payment-disabled-by-feature-policy.https.sub.html.headers diff --git a/testing/web-platform/tests/feature-policy/resources/featurepolicy.js b/testing/web-platform/tests/feature-policy/resources/featurepolicy.js index 1d7395a60b82..12679c89a756 100644 --- a/testing/web-platform/tests/feature-policy/resources/featurepolicy.js +++ b/testing/web-platform/tests/feature-policy/resources/featurepolicy.js @@ -35,10 +35,11 @@ function test_feature_availability( frame.setAttribute(allow_attribute, true); } - window.addEventListener('message', test.step_func(evt => { + window.addEventListener('message', test.step_func(function handler(evt) { if (evt.source === frame.contentWindow) { expect_feature_available(evt.data, feature_description); document.body.removeChild(frame); + window.removeEventListener('message', handler); test.done(); } })); @@ -54,3 +55,100 @@ function expect_feature_available_default(data, feature_description) { function expect_feature_unavailable_default(data, feature_description) { assert_false(data.enabled, feature_description); } + +// This is the same as test_feature_availability() but instead of passing in a +// function to check the result of the message sent back from an iframe, instead +// just compares the result to an expected result passed in. +// Arguments: +// test: test created by testharness. Examples: async_test, promise_test. +// src: the URL to load in an iframe in which to test the feature. +// expected_result: the expected value to compare to the data passed back +// from the src page by postMessage. +// allow_attribute: Optional argument, only provided when an allow +// attribute should be specified on the iframe. +function test_feature_availability_with_post_message_result( + test, src, expected_result, allow_attribute) { + var test_result = function(data, feature_description) { + assert_equals(data, expected_result); + }; + test_feature_availability(null, test, src, test_result, allow_attribute); +} + +// This function runs all feature policy tests for a particular feature that +// has a default policy of "self". This includes testing: +// 1. Feature usage succeeds by default in the top level frame. +// 2. Feature usage succeeds by default in a same-origin iframe. +// 3. Feature usage fails by default in a cross-origin iframe. +// 4. Feature usage suceeds when an allow attribute is specified on a +// cross-origin iframe. +// +// The same page which called this function will be loaded in the iframe in +// order to test feature usage there. When this function is called in that +// context it will simply run the feature and return a result back via +// postMessage. +// +// Arguments: +// cross_origin: A cross-origin URL base to be used to load the page which +// called into this function. +// feature_name: The name of the feature as it should be specified in an +// allow attribute. +// error_name: If feature usage does not succeed, this is the string +// representation of the error that will be passed in the rejected +// promise. +// feature_promise_factory: A function which returns a promise which tests +// feature usage. If usage succeeds, the promise should resolve. If it +// fails, the promise should reject with an error that can be +// represented as a string. +function run_all_fp_tests_allow_self( + cross_origin, feature_name, error_name, feature_promise_factory) { + // This may be the version of the page loaded up in an iframe. If so, just + // post the result of running the feature promise back to the parent. + if (location.hash.startsWith('#iframe')) { + // This makes it possible to test multiple features in the one test file. + if (!location.hash.includes(feature_name)) + return; + feature_promise_factory().then( + () => window.parent.postMessage('#OK', '*'), + (e) => window.parent.postMessage('#' + e.toString(), '*')); + return; + } + + // Run the various tests. + // 1. Top level frame. + promise_test( + () => feature_promise_factory(), + 'Default "' + feature_name + + '" feature policy ["self"] allows the top-level document.'); + + // 2. Same-origin iframe. + // Append #iframe to the URL so we can detect the iframe'd version of the + // page. + const same_origin_frame_pathname = + location.pathname + '#iframe#' + feature_name; + async_test( + t => { + test_feature_availability_with_post_message_result( + t, same_origin_frame_pathname, '#OK'); + }, + 'Default "' + feature_name + + '" feature policy ["self"] allows same-origin iframes.'); + + // 3. Cross-origin iframe. + const cross_origin_frame_url = cross_origin + same_origin_frame_pathname; + async_test( + t => { + test_feature_availability_with_post_message_result( + t, cross_origin_frame_url, '#' + error_name); + }, + 'Default "' + feature_name + + '" feature policy ["self"] disallows cross-origin iframes.'); + + // 4. Cross-origin iframe with "allow" attribute. + async_test( + t => { + test_feature_availability_with_post_message_result( + t, cross_origin_frame_url, '#OK', feature_name); + }, + 'Feature policy "' + feature_name + + '" can be enabled in cross-origin iframes using "allow" attribute.'); +} diff --git a/testing/web-platform/tests/fetch/OWNERS b/testing/web-platform/tests/fetch/OWNERS index 64550d0d4e4f..e2f2428209f3 100644 --- a/testing/web-platform/tests/fetch/OWNERS +++ b/testing/web-platform/tests/fetch/OWNERS @@ -2,3 +2,4 @@ @youennf @annevk @mnot +@yutakahirano diff --git a/testing/web-platform/tests/fetch/api/cors/cors-expose-star.js b/testing/web-platform/tests/fetch/api/cors/cors-expose-star.js index 90a9351d1e86..e37ddb4c3f2e 100644 --- a/testing/web-platform/tests/fetch/api/cors/cors-expose-star.js +++ b/testing/web-platform/tests/fetch/api/cors/cors-expose-star.js @@ -4,7 +4,7 @@ if (this.document === undefined) { } const url = "http://{{host}}:{{ports[http][1]}}" + dirname(location.pathname) + RESOURCES_DIR + "top.txt", - sharedHeaders = "?pipe=header(Access-Control-Expose-Headers,*)|header(Test,X)|header(Set-Cookie,X)|" + sharedHeaders = "?pipe=header(Access-Control-Expose-Headers,*)|header(Test,X)|header(Set-Cookie,X)|header(*,whoa)|" promise_test(() => { const headers = "header(Access-Control-Allow-Origin,*)" @@ -13,6 +13,7 @@ promise_test(() => { assert_equals(resp.type , "cors") assert_equals(resp.headers.get("test"), "X") assert_equals(resp.headers.get("set-cookie"), null) + assert_equals(resp.headers.get("*"), "whoa") }) }, "Basic Access-Control-Expose-Headers: * support") @@ -25,7 +26,19 @@ promise_test(() => { assert_equals(resp.headers.get("content-type"), "text/plain") // safelisted assert_equals(resp.headers.get("test"), null) assert_equals(resp.headers.get("set-cookie"), null) + assert_equals(resp.headers.get("*"), "whoa") }) -}, "Cannot use * for credentialed fetches") +}, "* for credentialed fetches only matches literally") + +promise_test(() => { + const headers = "header(Access-Control-Allow-Origin,*)|header(Access-Control-Expose-Headers,set-cookie)" + return fetch(url + sharedHeaders + headers).then(resp => { + assert_equals(resp.status, 200) + assert_equals(resp.type , "cors") + assert_equals(resp.headers.get("test"), "X") + assert_equals(resp.headers.get("set-cookie"), null) + assert_equals(resp.headers.get("*"), "whoa") + }) +}, "* can be one of several values") done(); diff --git a/testing/web-platform/tests/fetch/api/cors/cors-preflight-star.any.js b/testing/web-platform/tests/fetch/api/cors/cors-preflight-star.any.js index 213d805ea5b3..8a18b514e969 100644 --- a/testing/web-platform/tests/fetch/api/cors/cors-preflight-star.any.js +++ b/testing/web-platform/tests/fetch/api/cors/cors-preflight-star.any.js @@ -16,7 +16,7 @@ function preflightTest(succeeds, withCredentials, allowMethod, allowHeader, useM if (useMethod) { requestInit.method = useMethod } - if (useHeader) { + if (useHeader.length > 0) { requestInit.headers = [useHeader] } testURL += "allow_methods=" + allowMethod + "&" @@ -36,7 +36,9 @@ preflightTest(true, false, "get", "x-test", "GET", ["X-Test", "1"]) preflightTest(true, false, "*", "x-test", "SUPER", ["X-Test", "1"]) preflightTest(true, false, "*", "*", "OK", ["X-Test", "1"]) preflightTest(false, true, "*", "*", "OK", ["X-Test", "1"]) -preflightTest(false, true, "*", "", "PUT", undefined) -preflightTest(false, true, "put", "*", "PUT", undefined) +preflightTest(false, true, "*", "", "PUT", []) +preflightTest(true, true, "PUT", "*", "PUT", []) +preflightTest(false, true, "put", "*", "PUT", []) preflightTest(false, true, "get", "*", "GET", ["X-Test", "1"]) preflightTest(false, true, "*", "*", "GET", ["X-Test", "1"]) +preflightTest(true, true, "*", "*", "*", ["*", "1"]) diff --git a/testing/web-platform/tests/fetch/api/response/response-cancel-stream.html b/testing/web-platform/tests/fetch/api/response/response-cancel-stream.html index 2a02e1f60ac9..58d6745a12a0 100644 --- a/testing/web-platform/tests/fetch/api/response/response-cancel-stream.html +++ b/testing/web-platform/tests/fetch/api/response/response-cancel-stream.html @@ -12,7 +12,6 @@ diff --git a/testing/web-platform/tests/gamepad/idlharness-manual.html b/testing/web-platform/tests/gamepad/idlharness-manual.html index 73d3aeadd9a6..3b96073790c8 100644 --- a/testing/web-platform/tests/gamepad/idlharness-manual.html +++ b/testing/web-platform/tests/gamepad/idlharness-manual.html @@ -43,8 +43,8 @@ interface Gamepad { readonly attribute boolean connected; readonly attribute DOMHighResTimeStamp timestamp; readonly attribute GamepadMappingType mapping; - readonly attribute double[] axes; - readonly attribute GamepadButton[] buttons; + readonly attribute FrozenArray axes; + readonly attribute FrozenArray buttons; }; enum GamepadMappingType { diff --git a/testing/web-platform/tests/gamepad/idlharness.html b/testing/web-platform/tests/gamepad/idlharness.html index 0acd4cae989b..559d2ef8ad27 100644 --- a/testing/web-platform/tests/gamepad/idlharness.html +++ b/testing/web-platform/tests/gamepad/idlharness.html @@ -26,8 +26,8 @@ interface Gamepad { readonly attribute boolean connected; readonly attribute DOMHighResTimeStamp timestamp; readonly attribute GamepadMappingType mapping; - readonly attribute double[] axes; - readonly attribute GamepadButton[] buttons; + readonly attribute FrozenArray axes; + readonly attribute FrozenArray buttons; }; enum GamepadMappingType { diff --git a/testing/web-platform/tests/generic-sensor/idlharness.html b/testing/web-platform/tests/generic-sensor/idlharness.https.html similarity index 82% rename from testing/web-platform/tests/generic-sensor/idlharness.html rename to testing/web-platform/tests/generic-sensor/idlharness.https.html index 5fffbbb34be6..da0bb71aa4ad 100644 --- a/testing/web-platform/tests/generic-sensor/idlharness.html +++ b/testing/web-platform/tests/generic-sensor/idlharness.https.html @@ -7,14 +7,9 @@ -
    -
    +
     
    -
    -[SecureContext, Constructor(DOMString type, SensorErrorEventInit errorEventInitDict)]
    +
     
     
     
     
    -
     
    -
    -interface Event {
    -};
    -
    -interface Error {
    -};
    -
    -dictionary EventInit {
    -};
    -
    +
     
    -
    -[SecureContext]
    +
     
     
    diff --git a/testing/web-platform/tests/hr-time/timeOrigin.html b/testing/web-platform/tests/hr-time/timeOrigin.html
    index 415d74529f1a..20aea7508451 100644
    --- a/testing/web-platform/tests/hr-time/timeOrigin.html
    +++ b/testing/web-platform/tests/hr-time/timeOrigin.html
    @@ -9,10 +9,11 @@
     const windowOrigin = performance.timeOrigin;
     
     test(() => {
    +  // Use a 30ms cushion when comparing with Date() to account for inaccuracy.
       const startTime = Date.now();
    -  assert_greater_than_equal(startTime + 1, windowOrigin, 'Date.now() should be at least as large as the window timeOrigin.');
    +  assert_greater_than_equal(startTime + 30, windowOrigin, 'Date.now() should be at least as large as the window timeOrigin.');
       const startNow = performance.now();
    -  assert_less_than_equal(startTime, windowOrigin + startNow + 1, 'Date.now() should be close to window timeOrigin.');
    +  assert_less_than_equal(startTime, windowOrigin + startNow + 30, 'Date.now() should be close to window timeOrigin.');
     }, 'Window timeOrigin is close to Date.now() when there is no system clock adjustment.');
     
     const workerScript = 'postMessage({timeOrigin: performance.timeOrigin})';
    diff --git a/testing/web-platform/tests/hr-time/window-worker-time-origin.html b/testing/web-platform/tests/hr-time/window-worker-time-origin.html
    deleted file mode 100644
    index d7031c439473..000000000000
    --- a/testing/web-platform/tests/hr-time/window-worker-time-origin.html
    +++ /dev/null
    @@ -1,36 +0,0 @@
    -
    -
    -
    -
    -performance.now() time origin
    -
    -
    -
    -
    -
    -
    -
    -
    -

    Description

    -

    This test validates that a Worker's time origin is its moment of creation and differs from its spawner's.

    -
    - - diff --git a/testing/web-platform/tests/hr-time/window-worker-timeOrigin.window.js b/testing/web-platform/tests/hr-time/window-worker-timeOrigin.window.js new file mode 100644 index 000000000000..1e5ef1cdffec --- /dev/null +++ b/testing/web-platform/tests/hr-time/window-worker-timeOrigin.window.js @@ -0,0 +1,30 @@ +"use strict" +// https://w3c.github.io/hr-time/#time-origin + +async_test(function(test) { + // Cache global time before starting worker + const globalTimeOrigin = performance.timeOrigin; + const globalNowBeforeWorkerStart = performance.now(); + + // Start worker and retrieve time + const workerScript = "postMessage({timeOrigin: performance.timeOrigin, now: performance.now()})"; + const blob = new Blob([workerScript]); + let worker = new Worker(URL.createObjectURL(blob)); + + worker.addEventListener("message", test.step_func_done(function(event) { + const workerTimeOrigin = event.data.timeOrigin; + const workerNow = event.data.now; + + assert_not_equals(workerTimeOrigin, 0, "worker timeOrigin must not be 0"); + assert_not_equals(performance.timeOrigin, 0, "Document timeOrigin must not be 0"); + + assert_equals(globalTimeOrigin, performance.timeOrigin, "timeOrigin should not be changed in same document mode"); + assert_less_than(globalTimeOrigin, workerTimeOrigin, "Document timeOrigin must be earlier than worker timeOrigin"); + + // Document and worker's now() start from their respective timeOrigins. + const timeDiff = workerTimeOrigin - globalTimeOrigin; // convert worker's time to Document time. + assert_less_than(globalTimeOrigin + globalNowBeforeWorkerStart, globalTimeOrigin + timeDiff + workerNow, "Document old now is earlier than worker now."); + + // Comparing timing between Document and worker threads could be delicate as it relies on the thread implementation and could be subject to race conditions. + })); +}, 'timeOrigin and now() should be correctly ordered between window and worker'); diff --git a/testing/web-platform/tests/html/OWNERS b/testing/web-platform/tests/html/OWNERS index 627071770bd0..1f659c8f6bf7 100644 --- a/testing/web-platform/tests/html/OWNERS +++ b/testing/web-platform/tests/html/OWNERS @@ -1,4 +1,3 @@ @jdm @jgraham -@zcorpan @zqzhang diff --git a/testing/web-platform/tests/html/browsers/the-window-object/named-access-on-the-window-object/named-objects.html b/testing/web-platform/tests/html/browsers/the-window-object/named-access-on-the-window-object/named-objects.html index f020e0ecbe18..d5b1789d5945 100644 --- a/testing/web-platform/tests/html/browsers/the-window-object/named-access-on-the-window-object/named-objects.html +++ b/testing/web-platform/tests/html/browsers/the-window-object/named-access-on-the-window-object/named-objects.html @@ -9,7 +9,6 @@

    -
    @@ -33,10 +32,9 @@ test(function() { }, "Check if the first nested browsing context is returned by window['c']"); test(function() { - assert_equals(window['a'].length, 5, "The length should be 5."); assert_true(window['a'] instanceof HTMLCollection); assert_array_equals(window['a'], - [ document.getElementById('app1'), document.getElementById('embed1'), + [ document.getElementById('embed1'), document.getElementById('form1'), document.getElementById('img1'), document.getElementById('obj1') ], "The elements are not in tree order."); @@ -44,10 +42,10 @@ test(function() { document.getElementById('form1').setAttribute("name", ""); document.getElementById('embed1').setAttribute("name", ""); assert_array_equals(window['a'], - [ document.getElementById('app1'), document.getElementById('img1'), + [ document.getElementById('img1'), document.getElementById('obj1') ], "Window['a'] should not contain the elements with empty name attribute."); -}, "Check if window['a'] contains all applet, embed, form, img, and object elements, and their order"); +}, "Check if window['a'] contains all embed, form, img, and object elements, and their order"); var t = async_test("Check that window['fs'] does not return the frameset element with name='fs' (historical)"); function on_load () { diff --git a/testing/web-platform/tests/html/dom/documents/dom-tree-accessors/nameditem-03.html b/testing/web-platform/tests/html/dom/documents/dom-tree-accessors/nameditem-03.html index 4c330b6a367a..be2ca173b02f 100644 --- a/testing/web-platform/tests/html/dom/documents/dom-tree-accessors/nameditem-03.html +++ b/testing/web-platform/tests/html/dom/documents/dom-tree-accessors/nameditem-03.html @@ -6,105 +6,13 @@
    -
    - - - - - - - - - - - - - - - - - - -
    diff --git a/testing/web-platform/tests/html/dom/documents/dom-tree-accessors/nameditem-08.html b/testing/web-platform/tests/html/dom/documents/dom-tree-accessors/nameditem-08.html index a5c26f39eed0..bb024d9e781f 100644 --- a/testing/web-platform/tests/html/dom/documents/dom-tree-accessors/nameditem-08.html +++ b/testing/web-platform/tests/html/dom/documents/dom-tree-accessors/nameditem-08.html @@ -1,14 +1,11 @@ -Named items: duplicate id attributes for applet, object and img +Named items: duplicate id attributes for object and img
    -
    - -
    @@ -16,14 +13,6 @@
    + +
    + + diff --git a/testing/web-platform/tests/html/dom/interfaces.html b/testing/web-platform/tests/html/dom/interfaces.html index 84406156e8ac..6ce15163f3d9 100644 --- a/testing/web-platform/tests/html/dom/interfaces.html +++ b/testing/web-platform/tests/html/dom/interfaces.html @@ -204,7 +204,6 @@ function doTest([html, dom, cssom, uievents, touchevents]) { MessageEvent: ['new MessageEvent("message", { data: 5 })'], MessageChannel: [], MessagePort: [], - HTMLAppletElement: ['document.createElement("applet")'], HTMLMarqueeElement: ['document.createElement("marquee")'], HTMLFrameSetElement: ['document.createElement("frameset")'], HTMLFrameElement: ['document.createElement("frame")'], diff --git a/testing/web-platform/tests/html/infrastructure/common-dom-interfaces/collections/htmlallcollection.html b/testing/web-platform/tests/html/infrastructure/common-dom-interfaces/collections/htmlallcollection.html index fd250426464c..e17c0eb82fd3 100644 --- a/testing/web-platform/tests/html/infrastructure/common-dom-interfaces/collections/htmlallcollection.html +++ b/testing/web-platform/tests/html/infrastructure/common-dom-interfaces/collections/htmlallcollection.html @@ -19,6 +19,9 @@
    +
    +
    +
    + + + + + + + + + + + + + + +
    +
    +
    +
    +
    + + diff --git a/testing/web-platform/tests/html/semantics/document-metadata/the-style-element/style_type_change.html b/testing/web-platform/tests/html/semantics/document-metadata/the-style-element/style_type_change.html new file mode 100644 index 000000000000..a19b3c86d754 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/document-metadata/the-style-element/style_type_change.html @@ -0,0 +1,39 @@ + + + + + Dynamically changing HTMLStyleElement.type should change the rendering accordingly + + + + + + + Text content. + + + \ No newline at end of file diff --git a/testing/web-platform/tests/html/semantics/embedded-content/media-elements/mime-types/canPlayType.html b/testing/web-platform/tests/html/semantics/embedded-content/media-elements/mime-types/canPlayType.html index c5d37e752062..4f94cddc7084 100644 --- a/testing/web-platform/tests/html/semantics/embedded-content/media-elements/mime-types/canPlayType.html +++ b/testing/web-platform/tests/html/semantics/embedded-content/media-elements/mime-types/canPlayType.html @@ -52,6 +52,9 @@ function type_codecs_test(type, audioCodecs, videoCodecs) { // Spec: Generally, a user agent should never return "probably" for a type // that allows the codecs parameter if that parameter is not present. t(type, 'maybe'); + t(type + ';', 'maybe'); + t(type + ';codecs', 'maybe'); + t(type + ';codecs=', 'maybe'); typeSupported = true; }, type + ' (optional)'); @@ -87,7 +90,7 @@ function type_codecs_test(type, audioCodecs, videoCodecs) { }); }); }, type + ' codecs order'); - } + } test(function() { t(mime(type, ['bogus']), ''); diff --git a/testing/web-platform/tests/html/semantics/embedded-content/media-elements/track/track-element/track-cue-order.html b/testing/web-platform/tests/html/semantics/embedded-content/media-elements/track/track-element/track-cue-order.html new file mode 100644 index 000000000000..58e11ebe7012 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/embedded-content/media-elements/track/track-element/track-cue-order.html @@ -0,0 +1,83 @@ + +Text track cue order + + + + diff --git a/testing/web-platform/tests/html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html b/testing/web-platform/tests/html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html index 30b30e1271ba..b40d5fb94cf5 100644 --- a/testing/web-platform/tests/html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html +++ b/testing/web-platform/tests/html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html @@ -38,6 +38,9 @@ + + + diff --git a/testing/web-platform/tests/html/semantics/interfaces.js b/testing/web-platform/tests/html/semantics/interfaces.js index 5ccc891c358b..96abf61e2ce1 100644 --- a/testing/web-platform/tests/html/semantics/interfaces.js +++ b/testing/web-platform/tests/html/semantics/interfaces.js @@ -3,7 +3,7 @@ var elements = [ ["abbr", ""], ["acronym", ""], ["address", ""], - ["applet", "Applet"], + ["applet", "Unknown"], ["area", "Area"], ["article", ""], ["aside", ""], diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/script-language-type.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/script-language-type.html deleted file mode 100644 index b94834c83dd1..000000000000 --- a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/script-language-type.html +++ /dev/null @@ -1,18 +0,0 @@ - -Script: combinations of @type and @language - - - - -
    - - - diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/script-languages-01.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/script-languages-01.html deleted file mode 100644 index f2f2724df5ae..000000000000 --- a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/script-languages-01.html +++ /dev/null @@ -1,24 +0,0 @@ - -Script @type: unknown parameters - - - - -
    -
    - - -
    - diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/script-type-and-language-empty.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/script-type-and-language-empty.html new file mode 100644 index 000000000000..6ce1b279f74f --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/script-type-and-language-empty.html @@ -0,0 +1,48 @@ + +Script @type and @language: empty strings + + + + + + + + + + + + + + + + + + + + diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/script-languages-02.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/script-type-and-language-js.html similarity index 95% rename from testing/web-platform/tests/html/semantics/scripting-1/the-script-element/script-languages-02.html rename to testing/web-platform/tests/html/semantics/scripting-1/the-script-element/script-type-and-language-js.html index 69613e5104f4..2f56ade9bee8 100644 --- a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/script-languages-02.html +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/script-type-and-language-js.html @@ -1,7 +1,8 @@ -Script @type: JavaScript types +Script @type and @language: JavaScript types +
    diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/script-type-and-language-with-params.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/script-type-and-language-with-params.html new file mode 100644 index 000000000000..977ee7d0a482 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/script-type-and-language-with-params.html @@ -0,0 +1,41 @@ + +Script @type and @language: unknown type parameters + + + + + + + + + + + + + + + + + + + diff --git a/testing/web-platform/tests/html/semantics/selectors/pseudo-classes/checked-type-change.html b/testing/web-platform/tests/html/semantics/selectors/pseudo-classes/checked-type-change.html new file mode 100644 index 000000000000..661d9e4355eb --- /dev/null +++ b/testing/web-platform/tests/html/semantics/selectors/pseudo-classes/checked-type-change.html @@ -0,0 +1,24 @@ + + +Selector: pseudo-class :checked input type change + + + + + + +This text should be green. + diff --git a/testing/web-platform/tests/html/semantics/selectors/pseudo-classes/indeterminate-type-change.html b/testing/web-platform/tests/html/semantics/selectors/pseudo-classes/indeterminate-type-change.html new file mode 100644 index 000000000000..b3e4cce30234 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/selectors/pseudo-classes/indeterminate-type-change.html @@ -0,0 +1,24 @@ + + +Selector: pseudo-class :indeterminate input type change + + + + + + +This text should be green. + diff --git a/testing/web-platform/tests/html/semantics/selectors/pseudo-classes/inrange-outofrange-type-change.html b/testing/web-platform/tests/html/semantics/selectors/pseudo-classes/inrange-outofrange-type-change.html new file mode 100644 index 000000000000..9c1be9ca275d --- /dev/null +++ b/testing/web-platform/tests/html/semantics/selectors/pseudo-classes/inrange-outofrange-type-change.html @@ -0,0 +1,43 @@ + + +Selector: pseudo-classes (:in-range, :out-of-range) input type change + + + + + + +This text should be green. + +This text should be green. + diff --git a/testing/web-platform/tests/html/webappapis/idle-callbacks/callback-suspended.html b/testing/web-platform/tests/html/webappapis/idle-callbacks/callback-suspended.html index 6040de922fb3..28bfa98c1468 100644 --- a/testing/web-platform/tests/html/webappapis/idle-callbacks/callback-suspended.html +++ b/testing/web-platform/tests/html/webappapis/idle-callbacks/callback-suspended.html @@ -80,7 +80,7 @@ running = false; }), // ... or not. If not, we expect a load event. - waitForMessage("foo") + waitForMessage("foo", _ => win) ])) .then(_ => win.close()) .catch(e => { diff --git a/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content.html b/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content.html deleted file mode 100644 index b6b41c21f14a..000000000000 --- a/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content.html +++ /dev/null @@ -1,136 +0,0 @@ - - -registerContentHandler() - - - - - - -

    Note: If your browser limits the number of handler -registration requests on a page, you might need to disable or significantly -increase that limit for the tests below to run.

    - - -
    - - - - - diff --git a/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content/001.xhtml b/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content/001.xhtml deleted file mode 100644 index a0d2fa15b8c7..000000000000 --- a/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content/001.xhtml +++ /dev/null @@ -1,16 +0,0 @@ - - - -isContentHandlerRegistered for new content type - - - - - -
    - - diff --git a/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content/002.xhtml b/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content/002.xhtml deleted file mode 100644 index d5c2ff3e05a8..000000000000 --- a/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content/002.xhtml +++ /dev/null @@ -1,19 +0,0 @@ - - - -isContentHandlerRegistered for content type that is not yet accepted - - - - - -
    - - diff --git a/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content/003.xhtml b/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content/003.xhtml deleted file mode 100644 index 92e7ca8f55e2..000000000000 --- a/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content/003.xhtml +++ /dev/null @@ -1,18 +0,0 @@ - - - -Content type case insensitivity in isContentHandlerRegistered - - - - - -
    - - diff --git a/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content/004.xhtml b/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content/004.xhtml deleted file mode 100644 index a82f3506bce0..000000000000 --- a/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content/004.xhtml +++ /dev/null @@ -1,18 +0,0 @@ - - - -Non-matching url in isContentHandlerRegistered - - - - - -
    - - diff --git a/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content/005.xhtml b/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content/005.xhtml deleted file mode 100644 index b8c8b58d17f1..000000000000 --- a/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content/005.xhtml +++ /dev/null @@ -1,18 +0,0 @@ - - - -Invalid characters in content type in isContentHandlerRegistered - - - - - -
    - - diff --git a/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content/006.xhtml b/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content/006.xhtml deleted file mode 100644 index 86d0cff6190d..000000000000 --- a/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content/006.xhtml +++ /dev/null @@ -1,18 +0,0 @@ - - - -Blacklisted content type and isContentHandlerRegistered - - - - - -
    - - diff --git a/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/historical.window.js b/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/historical.window.js new file mode 100644 index 000000000000..c27845e6a7d4 --- /dev/null +++ b/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/historical.window.js @@ -0,0 +1,10 @@ +[ + "registerContentHandler", + "isProtocolHandlerRegistered", + "isContentHandlerRegistered", + "unregisterContentHandler" +].forEach(method => { + test(() => { + assert_false(method in self.navigator); + }, method + "() is removed"); +}); diff --git a/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/navigator-pluginarray.html b/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/navigator-pluginarray.html index 8798b2630648..ab4f61ee9f96 100644 --- a/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/navigator-pluginarray.html +++ b/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/navigator-pluginarray.html @@ -4,6 +4,25 @@ - - - - -
    - - diff --git a/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/002.xhtml b/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/002.xhtml deleted file mode 100644 index ce2c8dc0d607..000000000000 --- a/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/002.xhtml +++ /dev/null @@ -1,19 +0,0 @@ - - - -isProtocolHandlerRegistered for protocol that is not yet accepted - - - - - -
    - - diff --git a/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/003.xhtml b/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/003.xhtml deleted file mode 100644 index 035d5b9a64bb..000000000000 --- a/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/003.xhtml +++ /dev/null @@ -1,18 +0,0 @@ - - - -Protocol case insensitivity in isProtocolHandlerRegistered - - - - - -
    - - diff --git a/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/004.xhtml b/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/004.xhtml deleted file mode 100644 index 3fd14dd12941..000000000000 --- a/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/004.xhtml +++ /dev/null @@ -1,18 +0,0 @@ - - - -Non-matching url in isProtocolHandlerRegistered - - - - - -
    - - diff --git a/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/005.xhtml b/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/005.xhtml deleted file mode 100644 index 894ff4a6a23b..000000000000 --- a/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/005.xhtml +++ /dev/null @@ -1,18 +0,0 @@ - - - -Invalid characters in protocol scheme and isProtocolHandlerRegistered - - - - - -
    - - diff --git a/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/006.xhtml b/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/006.xhtml deleted file mode 100644 index 7529a7eb2cb2..000000000000 --- a/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/006.xhtml +++ /dev/null @@ -1,19 +0,0 @@ - - - -Scheme outside white list and isProtocolHandlerRegistered - - - - - -
    - - diff --git a/testing/web-platform/tests/innerText/getter-tests.js b/testing/web-platform/tests/innerText/getter-tests.js index 7882be4dcf1c..6df8912dc937 100644 --- a/testing/web-platform/tests/innerText/getter-tests.js +++ b/testing/web-platform/tests/innerText/getter-tests.js @@ -197,6 +197,13 @@ testText("

    abc testText("

    abc
    def", "abc\ndef", "No blank lines around
    with margin"); testText("
    123abcdef", "123abcdef", "No newlines at display:inline-block boundary"); testText("
    123 abc def", "123abcdef", "Leading/trailing space removal at display:inline-block boundary"); +testText("
    123

    abc

    def", "123\n\nabc\n\ndef", "Blank lines around

    even without margin"); +testText("

    123

    abc

    def", "123\nabc\ndef", "No blank lines around

    "); +testText("
    123

    abc

    def", "123\nabc\ndef", "No blank lines around

    "); +testText("
    123

    abc

    def", "123\nabc\ndef", "No blank lines around

    "); +testText("
    123

    abc

    def", "123\nabc\ndef", "No blank lines around

    "); +testText("
    123
    abc
    def", "123\nabc\ndef", "No blank lines around
    "); +testText("
    123
    abc
    def", "123\nabc\ndef", "No blank lines around
    "); /**** Spans ****/ diff --git a/testing/web-platform/tests/input-events/input-events-cut-paste-manual.html b/testing/web-platform/tests/input-events/input-events-cut-paste-manual.html new file mode 100644 index 000000000000..4091c87cdd34 --- /dev/null +++ b/testing/web-platform/tests/input-events/input-events-cut-paste-manual.html @@ -0,0 +1,83 @@ + + +Cut and Paste should trigger corresponding InputEvent + + +

    To manually run this test, please follow the steps below:
    +1. Select 'plain' => Cut (e.g. Ctrl/Cmd-X) => Paste (e.g. Ctrl/Cmd-V).
    +2. Select 'rich' => Cut => Paste.
    +3. Select 'prevent' => Paste.
    +4. Select 'prevent' => Cut => Select 'normal' => Paste.
    +
    +If a "PASS" result appears the test passes, otherwise it fails

    + +

    rich

    +

    prevent

    +

    normal

    + diff --git a/testing/web-platform/tests/input-events/input-events-exec-command.html b/testing/web-platform/tests/input-events/input-events-exec-command.html new file mode 100644 index 000000000000..6c512023296c --- /dev/null +++ b/testing/web-platform/tests/input-events/input-events-exec-command.html @@ -0,0 +1,86 @@ + + +execCommand() should only trigger 'input' + + +

    + diff --git a/testing/web-platform/tests/input-events/input-events-get-target-ranges-manual.html b/testing/web-platform/tests/input-events/input-events-get-target-ranges-manual.html new file mode 100644 index 000000000000..7e6a59769d04 --- /dev/null +++ b/testing/web-platform/tests/input-events/input-events-get-target-ranges-manual.html @@ -0,0 +1,76 @@ + + +InputEvent.getTargetRanges() behavior + + +

    To manually run this test, please follow the steps below:
    +1. Place caret at the end of 'hello world'.
    +2. Press Ctrl-Backspace (Alt-Backspace on macOS) to delete word backwards.
    +3. Place caret at the end of 'test2' => Press 'a' key.
    +4. Select 'test2a' => Press 'b' key.
    +5. Select 'b' => Bold text through context menu or Command-b on macOS.
    +6. Place caret at the end of 'test3' => Press 'a' key => Press Backspace key.
    +
    +If a "PASS" result appears the test passes, otherwise it fails

    +

    hello world

    +

    test2

    + + diff --git a/testing/web-platform/tests/input-events/input-events-typing-data-manual.html b/testing/web-platform/tests/input-events/input-events-typing-data-manual.html deleted file mode 100644 index 26e179c3c0f1..000000000000 --- a/testing/web-platform/tests/input-events/input-events-typing-data-manual.html +++ /dev/null @@ -1,38 +0,0 @@ - - -InputEvent have data when typing on textarea and contenteditable - - -

    To manually run this test, please follow the steps below:
    -1. Focus the first box and press key 'a' and then 'b'.
    -2. Focus the second box and press key 'c' and then 'd'.
    -
    -If a "PASS" result appears the test passes, otherwise it fails

    - -

    - diff --git a/testing/web-platform/tests/input-events/input-events-typing-manual.html b/testing/web-platform/tests/input-events/input-events-typing-manual.html new file mode 100644 index 000000000000..5f81c33c7519 --- /dev/null +++ b/testing/web-platform/tests/input-events/input-events-typing-manual.html @@ -0,0 +1,60 @@ + + +InputEvent have correct data/order when typing on textarea and contenteditable + + +

    To manually run this test, please follow the steps below:
    +1. Focus the first box and press key 'a' and then Shift-'b'.
    +2. Focus the second box and press key 'c' and then Shift-'d'.
    +
    +If a "PASS" result appears the test passes, otherwise it fails

    + +

    + diff --git a/testing/web-platform/tests/interfaces/cssom-view.idl b/testing/web-platform/tests/interfaces/cssom-view.idl new file mode 100644 index 000000000000..af779a1cc4af --- /dev/null +++ b/testing/web-platform/tests/interfaces/cssom-view.idl @@ -0,0 +1,184 @@ +enum ScrollBehavior { "auto", "instant", "smooth" }; + +dictionary ScrollOptions { + ScrollBehavior behavior = "auto"; +}; +dictionary ScrollToOptions : ScrollOptions { + unrestricted double left; + unrestricted double top; +}; + +partial interface Window { + [NewObject] MediaQueryList matchMedia(CSSOMString query); + [SameObject, Replaceable] readonly attribute Screen screen; + + // browsing context + void moveTo(long x, long y); + void moveBy(long x, long y); + void resizeTo(long x, long y); + void resizeBy(long x, long y); + + // viewport + [Replaceable] readonly attribute long innerWidth; + [Replaceable] readonly attribute long innerHeight; + + // viewport scrolling + [Replaceable] readonly attribute double scrollX; + [Replaceable] readonly attribute double pageXOffset; + [Replaceable] readonly attribute double scrollY; + [Replaceable] readonly attribute double pageYOffset; + void scroll(optional ScrollToOptions options); + void scroll(unrestricted double x, unrestricted double y); + void scrollTo(optional ScrollToOptions options); + void scrollTo(unrestricted double x, unrestricted double y); + void scrollBy(optional ScrollToOptions options); + void scrollBy(unrestricted double x, unrestricted double y); + + // client + [Replaceable] readonly attribute long screenX; + [Replaceable] readonly attribute long screenY; + [Replaceable] readonly attribute long outerWidth; + [Replaceable] readonly attribute long outerHeight; + [Replaceable] readonly attribute double devicePixelRatio; +}; + +[Exposed=Window] +interface MediaQueryList : EventTarget { + readonly attribute CSSOMString media; + readonly attribute boolean matches; + void addListener(EventListener? listener); + void removeListener(EventListener? listener); + attribute EventHandler onchange; +}; + +[Exposed=Window, + Constructor(CSSOMString type, optional MediaQueryListEventInit eventInitDict)] +interface MediaQueryListEvent : Event { + readonly attribute CSSOMString media; + readonly attribute boolean matches; +}; + +dictionary MediaQueryListEventInit : EventInit { + CSSOMString media = ""; + boolean matches = false; +}; + +[Exposed=Window] +interface Screen { + readonly attribute long availWidth; + readonly attribute long availHeight; + readonly attribute long width; + readonly attribute long height; + readonly attribute unsigned long colorDepth; + readonly attribute unsigned long pixelDepth; +}; + +partial interface Document { + Element? elementFromPoint(double x, double y); + sequence elementsFromPoint(double x, double y); + CaretPosition? caretPositionFromPoint(double x, double y); + readonly attribute Element? scrollingElement; +}; + +[Exposed=Window] +interface CaretPosition { + readonly attribute Node offsetNode; + readonly attribute unsigned long offset; + [NewObject] DOMRect? getClientRect(); +}; + +enum ScrollLogicalPosition { "start", "center", "end", "nearest" }; +dictionary ScrollIntoViewOptions : ScrollOptions { + ScrollLogicalPosition block = "center"; + ScrollLogicalPosition inline = "center"; +}; + +partial interface Element { + DOMRectList getClientRects(); + [NewObject] DOMRect getBoundingClientRect(); + void scrollIntoView(); + void scrollIntoView((boolean or object) arg); + void scroll(optional ScrollToOptions options); + void scroll(unrestricted double x, unrestricted double y); + void scrollTo(optional ScrollToOptions options); + void scrollTo(unrestricted double x, unrestricted double y); + void scrollBy(optional ScrollToOptions options); + void scrollBy(unrestricted double x, unrestricted double y); + attribute unrestricted double scrollTop; + attribute unrestricted double scrollLeft; + readonly attribute long scrollWidth; + readonly attribute long scrollHeight; + readonly attribute long clientTop; + readonly attribute long clientLeft; + readonly attribute long clientWidth; + readonly attribute long clientHeight; +}; + +partial interface HTMLElement { + readonly attribute Element? offsetParent; + readonly attribute long offsetTop; + readonly attribute long offsetLeft; + readonly attribute long offsetWidth; + readonly attribute long offsetHeight; +}; + +partial interface HTMLImageElement { + readonly attribute long x; + readonly attribute long y; +}; + +partial interface Range { + DOMRectList getClientRects(); + [NewObject] DOMRect getBoundingClientRect(); +}; + +/* TODO This is commented out because: "Partial interface MouseEvent with no original interface" +partial interface MouseEvent { + readonly attribute double screenX; + readonly attribute double screenY; + readonly attribute double pageX; + readonly attribute double pageY; + readonly attribute double clientX; + readonly attribute double clientY; + readonly attribute double x; + readonly attribute double y; + readonly attribute double offsetX; + readonly attribute double offsetY; +}; + +partial dictionary MouseEventInit { + double screenX = 0.0; + double screenY = 0.0; + double clientX = 0.0; + double clientY = 0.0; +}; +*/ + +enum CSSBoxType { "margin", "border", "padding", "content" }; +dictionary BoxQuadOptions { + CSSBoxType box = "border"; + GeometryNode relativeTo; // XXX default document (i.e. viewport) +}; + +dictionary ConvertCoordinateOptions { + CSSBoxType fromBox = "border"; + CSSBoxType toBox = "border"; +}; + +[Exposed=Window, + NoInterfaceObject] +interface GeometryUtils { + sequence getBoxQuads(optional BoxQuadOptions options); + DOMQuad convertQuadFromNode(DOMQuadInit quad, GeometryNode from, optional ConvertCoordinateOptions options); + DOMQuad convertRectFromNode(DOMRectReadOnly rect, GeometryNode from, optional ConvertCoordinateOptions options); + DOMPoint convertPointFromNode(DOMPointInit point, GeometryNode from, optional ConvertCoordinateOptions options); // XXX z,w turns into 0 +}; + +Text implements GeometryUtils; // like Range +Element implements GeometryUtils; +/* TODO Commented out because: "CSSPseudoElement implements GeometryUtils, but CSSPseudoElement is undefined." +CSSPseudoElement implements GeometryUtils; +*/ +Document implements GeometryUtils; + +typedef (Text or Element or CSSPseudoElement or Document) GeometryNode; diff --git a/testing/web-platform/tests/interfaces/cssom.idl b/testing/web-platform/tests/interfaces/cssom.idl index e5a998ebf5d8..b372ed6b2b5c 100644 --- a/testing/web-platform/tests/interfaces/cssom.idl +++ b/testing/web-platform/tests/interfaces/cssom.idl @@ -1,294 +1,143 @@ +typedef USVString CSSOMString; + +[Exposed=Window, + LegacyArrayClass] interface MediaList { - stringifier attribute DOMString mediaText; + stringifier attribute [TreatNullAs=EmptyString] CSSOMString mediaText; readonly attribute unsigned long length; - getter DOMString item(unsigned long index); - void appendMedium(DOMString medium); - void deleteMedium(DOMString medium); + getter CSSOMString? item(unsigned long index); + void appendMedium(CSSOMString medium); + void deleteMedium(CSSOMString medium); }; +[Exposed=Window] interface StyleSheet { - readonly attribute DOMString type; - readonly attribute DOMString href; - readonly attribute Node ownerNode; - readonly attribute StyleSheet parentStyleSheet; - readonly attribute DOMString title; - [PutForwards=mediaText] readonly attribute MediaList media; - attribute boolean disabled; + readonly attribute CSSOMString type; + readonly attribute USVString? href; + readonly attribute (Element or ProcessingInstruction)? ownerNode; + readonly attribute StyleSheet? parentStyleSheet; + readonly attribute DOMString? title; + [SameObject, PutForwards=mediaText] readonly attribute MediaList media; + attribute boolean disabled; }; +[Exposed=Window] interface CSSStyleSheet : StyleSheet { - readonly attribute CSSRule ownerRule; - readonly attribute CSSRuleList cssRules; - unsigned long insertRule(DOMString rule, unsigned long index); + readonly attribute CSSRule? ownerRule; + [SameObject] readonly attribute CSSRuleList cssRules; + unsigned long insertRule(CSSOMString rule, optional unsigned long index = 0); void deleteRule(unsigned long index); }; -typedef sequence StyleSheetList; +[Exposed=Window, + LegacyArrayClass] +interface StyleSheetList { + getter StyleSheet? item(unsigned long index); + readonly attribute unsigned long length; +}; partial interface Document { [SameObject] readonly attribute StyleSheetList styleSheets; }; -[NoInterfaceObject] interface LinkStyle { - readonly attribute StyleSheet sheet; +[Exposed=Window, + NoInterfaceObject] +interface LinkStyle { + readonly attribute StyleSheet? sheet; }; ProcessingInstruction implements LinkStyle; +[Exposed=Window, + LegacyArrayClass] +interface CSSRuleList { + getter CSSRule? item(unsigned long index); + readonly attribute unsigned long length; +}; -typedef sequence CSSRuleList; - +[Exposed=Window] interface CSSRule { - // Types const unsigned short STYLE_RULE = 1; + const unsigned short CHARSET_RULE = 2; // historical const unsigned short IMPORT_RULE = 3; const unsigned short MEDIA_RULE = 4; const unsigned short FONT_FACE_RULE = 5; const unsigned short PAGE_RULE = 6; + const unsigned short MARGIN_RULE = 9; const unsigned short NAMESPACE_RULE = 10; readonly attribute unsigned short type; - - // Parsing and serialization - attribute DOMString cssText; - - // Context - readonly attribute CSSRule parentRule; - readonly attribute CSSStyleSheet parentStyleSheet; + attribute CSSOMString cssText; + readonly attribute CSSRule? parentRule; + readonly attribute CSSStyleSheet? parentStyleSheet; }; +[Exposed=Window] interface CSSStyleRule : CSSRule { - attribute DOMString selectorText; - readonly attribute CSSStyleDeclaration style; + attribute CSSOMString selectorText; + [SameObject, PutForwards=cssText] readonly attribute CSSStyleDeclaration style; }; +[Exposed=Window] interface CSSImportRule : CSSRule { - readonly attribute DOMString href; - [PutForwards=mediaText] readonly attribute MediaList media; - readonly attribute CSSStyleSheet styleSheet; + readonly attribute USVString href; + [SameObject, PutForwards=mediaText] readonly attribute MediaList media; + [SameObject] readonly attribute CSSStyleSheet styleSheet; }; -interface CSSMediaRule : CSSRule { - [PutForwards=mediaText] readonly attribute MediaList media; - readonly attribute CSSRuleList cssRules; - unsigned long insertRule(DOMString rule, unsigned long index); +[Exposed=Window] +interface CSSGroupingRule : CSSRule { + [SameObject] readonly attribute CSSRuleList cssRules; + unsigned long insertRule(CSSOMString rule, optional unsigned long index = 0); void deleteRule(unsigned long index); }; -interface CSSFontFaceRule : CSSRule { - readonly attribute CSSStyleDeclaration style; +[Exposed=Window] +interface CSSPageRule : CSSGroupingRule { + attribute CSSOMString selectorText; + [SameObject, PutForwards=cssText] readonly attribute CSSStyleDeclaration style; }; -interface CSSPageRule : CSSRule { - attribute DOMString selectorText; - readonly attribute CSSStyleDeclaration style; +[Exposed=Window] +interface CSSMarginRule : CSSRule { + readonly attribute CSSOMString name; + [SameObject, PutForwards=cssText] readonly attribute CSSStyleDeclaration style; }; +[Exposed=Window] interface CSSNamespaceRule : CSSRule { - readonly attribute DOMString namespaceURI; - readonly attribute DOMString? prefix; + readonly attribute CSSOMString namespaceURI; + readonly attribute CSSOMString prefix; }; +[Exposed=Window] interface CSSStyleDeclaration { - attribute DOMString cssText; - + [CEReactions] attribute CSSOMString cssText; readonly attribute unsigned long length; - DOMString item(unsigned long index); - - DOMString getPropertyValue(DOMString property); - DOMString getPropertyPriority(DOMString property); - void setProperty(DOMString property, DOMString value, optional DOMString priority); - DOMString removeProperty(DOMString property); - - readonly attribute CSSStyleDeclarationValue values; - - readonly attribute CSSRule parentRule; - - // CSS Properties - attribute DOMString azimuth; - attribute DOMString background; - attribute DOMString backgroundAttachment; - attribute DOMString backgroundColor; - attribute DOMString backgroundImage; - attribute DOMString backgroundPosition; - attribute DOMString backgroundRepeat; - attribute DOMString border; - attribute DOMString borderCollapse; - attribute DOMString borderColor; - attribute DOMString borderSpacing; - attribute DOMString borderStyle; - attribute DOMString borderTop; - attribute DOMString borderRight; - attribute DOMString borderBottom; - attribute DOMString borderLeft; - attribute DOMString borderTopColor; - attribute DOMString borderRightColor; - attribute DOMString borderBottomColor; - attribute DOMString borderLeftColor; - attribute DOMString borderTopStyle; - attribute DOMString borderRightStyle; - attribute DOMString borderBottomStyle; - attribute DOMString borderLeftStyle; - attribute DOMString borderTopWidth; - attribute DOMString borderRightWidth; - attribute DOMString borderBottomWidth; - attribute DOMString borderLeftWidth; - attribute DOMString borderWidth; - attribute DOMString bottom; - attribute DOMString captionSide; - attribute DOMString clear; - attribute DOMString clip; - attribute DOMString color; - attribute DOMString content; - attribute DOMString counterIncrement; - attribute DOMString counterReset; - attribute DOMString cue; - attribute DOMString cueAfter; - attribute DOMString cueBefore; - attribute DOMString cursor; - attribute DOMString direction; - attribute DOMString display; - attribute DOMString elevation; - attribute DOMString emptyCells; - attribute DOMString cssFloat; - attribute DOMString font; - attribute DOMString fontFamily; - attribute DOMString fontSize; - attribute DOMString fontSizeAdjust; - attribute DOMString fontStretch; - attribute DOMString fontStyle; - attribute DOMString fontVariant; - attribute DOMString fontWeight; - attribute DOMString height; - attribute DOMString left; - attribute DOMString letterSpacing; - attribute DOMString lineHeight; - attribute DOMString listStyle; - attribute DOMString listStyleImage; - attribute DOMString listStylePosition; - attribute DOMString listStyleType; - attribute DOMString margin; - attribute DOMString marginTop; - attribute DOMString marginRight; - attribute DOMString marginBottom; - attribute DOMString marginLeft; - attribute DOMString marks; - attribute DOMString maxHeight; - attribute DOMString maxWidth; - attribute DOMString minHeight; - attribute DOMString minWidth; - attribute DOMString orphans; - attribute DOMString outline; - attribute DOMString outlineColor; - attribute DOMString outlineStyle; - attribute DOMString outlineWidth; - attribute DOMString overflow; - attribute DOMString padding; - attribute DOMString paddingTop; - attribute DOMString paddingRight; - attribute DOMString paddingBottom; - attribute DOMString paddingLeft; - attribute DOMString page; - attribute DOMString pageBreakAfter; - attribute DOMString pageBreakBefore; - attribute DOMString pageBreakInside; - attribute DOMString pause; - attribute DOMString pauseAfter; - attribute DOMString pauseBefore; - attribute DOMString pitch; - attribute DOMString pitchRange; - attribute DOMString playDuring; - attribute DOMString position; - attribute DOMString quotes; - attribute DOMString richness; - attribute DOMString right; - attribute DOMString size; - attribute DOMString speak; - attribute DOMString speakHeader; - attribute DOMString speakNumeral; - attribute DOMString speakPunctuation; - attribute DOMString speechRate; - attribute DOMString stress; - attribute DOMString tableLayout; - attribute DOMString textAlign; - attribute DOMString textDecoration; - attribute DOMString textIndent; - attribute DOMString textShadow; - attribute DOMString textTransform; - attribute DOMString top; - attribute DOMString unicodeBidi; - attribute DOMString verticalAlign; - attribute DOMString visibility; - attribute DOMString voiceFamily; - attribute DOMString volume; - attribute DOMString whiteSpace; - attribute DOMString widows; - attribute DOMString width; - attribute DOMString wordSpacing; - attribute DOMString zIndex; + getter CSSOMString item(unsigned long index); + CSSOMString getPropertyValue(CSSOMString property); + CSSOMString getPropertyPriority(CSSOMString property); + [CEReactions] void setProperty(CSSOMString property, [TreatNullAs=EmptyString] CSSOMString value, [TreatNullAs=EmptyString] optional CSSOMString priority = ""); + [CEReactions] void setPropertyValue(CSSOMString property, [TreatNullAs=EmptyString] CSSOMString value); + [CEReactions] void setPropertyPriority(CSSOMString property, [TreatNullAs=EmptyString] CSSOMString priority); + [CEReactions] CSSOMString removeProperty(CSSOMString property); + readonly attribute CSSRule? parentRule; + [CEReactions] attribute [TreatNullAs=EmptyString] CSSOMString cssFloat; }; -interface CSSStyleDeclarationValue { - // ... - - // CSS Properties - +[Exposed=Window, + NoInterfaceObject] +interface ElementCSSInlineStyle { + [SameObject, PutForwards=cssText] readonly attribute CSSStyleDeclaration style; }; -interface CSSPropertyValue { - attribute DOMString cssText; +HTMLElement implements ElementCSSInlineStyle; + +SVGElement implements ElementCSSInlineStyle; + +partial interface Window { + [NewObject] CSSStyleDeclaration getComputedStyle(Element elt, optional CSSOMString? pseudoElt); }; -[NoInterfaceObject] interface CSSMapValue { - getter CSSValue (DOMString name); +[Exposed=Window] +interface CSS { + static CSSOMString escape(CSSOMString ident); }; - -[NoInterfaceObject] interface CSSPropertyValueList { - readonly attribute CSSValue[] list; -}; - -[NoInterfaceObject] interface CSSComponentValue { - readonly attribute DOMString type; - attribute any value; -}; - -[NoInterfaceObject] interface CSSStringComponentValue { - attribute DOMString string; -}; - -[NoInterfaceObject] interface CSSKeywordComponentValue { - attribute DOMString keyword; -}; - -[NoInterfaceObject] interface CSSIdentifierComponentValue { - attribute DOMString identifier; -}; - -[NoInterfaceObject] interface CSSColorComponentValue { - attribute short red; - attribute short green; - attribute short blue; - attribute float alpha; -}; - -[NoInterfaceObject] interface CSSLengthComponentValue { - attribute float em; - attribute float ex; - attribute float px; - // figure out what to do with absolute lengths -}; - -[NoInterfaceObject] interface CSSPercentageComponentValue { - attribute float percent; -}; - -[NoInterfaceObject] interface CSSURLComponentValue { - attribute DOMString? url; -}; - -[NoInterfaceObject] interface ElementCSSInlineStyle { - readonly attribute CSSStyleDeclaration style; -}; - -//partial interface Window { -// CSSStyleDeclaration getComputedStyle(Element elt); -// CSSStyleDeclaration getComputedStyle(Element elt, DOMString pseudoElt); -//}; diff --git a/testing/web-platform/tests/interfaces/geometry.idl b/testing/web-platform/tests/interfaces/geometry.idl index c0aed767344e..556e8a5cdef1 100644 --- a/testing/web-platform/tests/interfaces/geometry.idl +++ b/testing/web-platform/tests/interfaces/geometry.idl @@ -12,7 +12,7 @@ interface DOMPointReadOnly { DOMPoint matrixTransform(optional DOMMatrixInit matrix); - serializer = { attribute }; + [Default] toJSON(); }; [Constructor(optional unrestricted double x = 0, optional unrestricted double y = 0, @@ -52,7 +52,7 @@ interface DOMRectReadOnly { readonly attribute unrestricted double bottom; readonly attribute unrestricted double left; - serializer = { attribute }; + [Default] toJSON(); }; [Constructor(optional unrestricted double x = 0, optional unrestricted double y = 0, @@ -97,7 +97,7 @@ interface DOMQuad { [SameObject] readonly attribute DOMPoint p4; [NewObject] DOMRect getBounds(); - serializer = { attribute }; + [Default] toJSON(); }; dictionary DOMQuadInit { @@ -178,7 +178,7 @@ interface DOMMatrixReadOnly { [NewObject] Float64Array toFloat64Array(); [Exposed=Window] stringifier; - serializer = { attribute }; + [Default] toJSON(); }; [Constructor(optional (DOMString or sequence) init), diff --git a/testing/web-platform/tests/interfaces/html.idl b/testing/web-platform/tests/interfaces/html.idl index 48e41da4e8b7..a372298d7c02 100644 --- a/testing/web-platform/tests/interfaces/html.idl +++ b/testing/web-platform/tests/interfaces/html.idl @@ -1777,13 +1777,8 @@ interface NavigatorLanguage { [NoInterfaceObject] interface NavigatorContentUtils { - // content handler registration void registerProtocolHandler(DOMString scheme, USVString url, DOMString title); - void registerContentHandler(DOMString mimeType, USVString url, DOMString title); - DOMString isProtocolHandlerRegistered(DOMString scheme, USVString url); - DOMString isContentHandlerRegistered(DOMString mimeType, USVString url); void unregisterProtocolHandler(DOMString scheme, USVString url); - void unregisterContentHandler(DOMString mimeType, USVString url); }; [NoInterfaceObject] diff --git a/testing/web-platform/tests/interfaces/payment-handler.idl b/testing/web-platform/tests/interfaces/payment-handler.idl new file mode 100644 index 000000000000..88d3b1ce6961 --- /dev/null +++ b/testing/web-platform/tests/interfaces/payment-handler.idl @@ -0,0 +1,55 @@ +[SecureContext, + Exposed=(Window,Worker)] +interface PaymentManager { + [SameObject] + readonly attribute PaymentInstruments instruments; + [Exposed=Window] static Promise requestPermission(); +}; +[SecureContext, + Exposed=(Window,Worker)] +interface PaymentInstruments { + Promise delete(DOMString instrumentKey); + Promise get(DOMString instrumentKey); + Promise> keys(); + Promise has(DOMString instrumentKey); + Promise set(DOMString instrumentKey, + PaymentInstrument details); + Promise clear(); +}; +dictionary PaymentInstrument { + required DOMString name; + sequence icons; + sequence enabledMethods; + object capabilities; +}; +dictionary ImageObject { + required USVString src; + DOMString sizes; + DOMString type; +}; +[Constructor(DOMString type, PaymentRequestEventInit eventInitDict), + Exposed=ServiceWorker] +interface PaymentRequestEvent : ExtendableEvent { + readonly attribute USVString topLevelOrigin; + readonly attribute USVString paymentRequestOrigin; + readonly attribute DOMString paymentRequestId; + readonly attribute FrozenArray methodData; + readonly attribute object total; + readonly attribute FrozenArray modifiers; + readonly attribute DOMString instrumentKey; + Promise openWindow(USVString url); + void respondWith(Promise handlerResponse); +}; +dictionary PaymentRequestEventInit : ExtendableEventInit { + USVString topLevelOrigin; + USVString paymentRequestOrigin; + DOMString paymentRequestId; + sequence methodData; + PaymentCurrencyAmount total; + sequence modifiers; + DOMString instrumentKey; +}; +dictionary PaymentHandlerResponse { + DOMString methodName; + object details; +}; diff --git a/testing/web-platform/tests/interfaces/payment-request.idl b/testing/web-platform/tests/interfaces/payment-request.idl new file mode 100644 index 000000000000..beb6d5ff740f --- /dev/null +++ b/testing/web-platform/tests/interfaces/payment-request.idl @@ -0,0 +1,114 @@ +[Constructor(sequence methodData, PaymentDetailsInit details, optional PaymentOptions options), + SecureContext, + Exposed=Window] +interface PaymentRequest : EventTarget { + Promise show(); + Promise abort(); + Promise canMakePayment(); + + readonly attribute DOMString id; + readonly attribute PaymentAddress? shippingAddress; + readonly attribute DOMString? shippingOption; + readonly attribute PaymentShippingType? shippingType; + + attribute EventHandler onshippingaddresschange; + + attribute EventHandler onshippingoptionchange; +}; +dictionary PaymentMethodData { + required DOMString supportedMethods; + object data; +}; +dictionary PaymentCurrencyAmount { + required DOMString currency; + required DOMString value; + // Note: currencySystem is "at risk" of being removed! + DOMString currencySystem = "urn:iso:std:iso:4217"; +}; +dictionary PaymentDetailsBase { + sequence displayItems; + sequence shippingOptions; + sequence modifiers; +}; +dictionary PaymentDetailsInit : PaymentDetailsBase { + DOMString id; + required PaymentItem total; +}; +dictionary PaymentDetailsUpdate : PaymentDetailsBase { + DOMString error; + PaymentItem total; +}; +dictionary PaymentDetailsModifier { + required DOMString supportedMethods; + PaymentItem total; + sequence additionalDisplayItems; + object data; +}; +enum PaymentShippingType { + "shipping", + "delivery", + "pickup" +}; +dictionary PaymentOptions { + boolean requestPayerName = false; + boolean requestPayerEmail = false; + boolean requestPayerPhone = false; + boolean requestShipping = false; + PaymentShippingType shippingType = "shipping"; +}; +dictionary PaymentItem { + required DOMString label; + required PaymentCurrencyAmount amount; + boolean pending = false; +}; +[SecureContext, + Exposed=Window] +interface PaymentAddress { + [Default] object toJSON(); + readonly attribute DOMString country; + readonly attribute FrozenArray addressLine; + readonly attribute DOMString region; + readonly attribute DOMString city; + readonly attribute DOMString dependentLocality; + readonly attribute DOMString postalCode; + readonly attribute DOMString sortingCode; + readonly attribute DOMString languageCode; + readonly attribute DOMString organization; + readonly attribute DOMString recipient; + readonly attribute DOMString phone; +}; +dictionary PaymentShippingOption { + required DOMString id; + required DOMString label; + required PaymentCurrencyAmount amount; + boolean selected = false; +}; +enum PaymentComplete { + "fail", + "success", + "unknown" +}; +[SecureContext, + Exposed=Window] +interface PaymentResponse { + [Default] object toJSON(); + + readonly attribute DOMString requestId; + readonly attribute DOMString methodName; + readonly attribute object details; + readonly attribute PaymentAddress? shippingAddress; + readonly attribute DOMString? shippingOption; + readonly attribute DOMString? payerName; + readonly attribute DOMString? payerEmail; + readonly attribute DOMString? payerPhone; + + Promise complete(optional PaymentComplete result = "unknown"); +}; +[Constructor(DOMString type, optional PaymentRequestUpdateEventInit eventInitDict), + SecureContext, + Exposed=Window] +interface PaymentRequestUpdateEvent : Event { + void updateWith(Promise detailsPromise); +}; +dictionary PaymentRequestUpdateEventInit : EventInit { +}; diff --git a/testing/web-platform/tests/lint.whitelist b/testing/web-platform/tests/lint.whitelist index f2eb7a6e6e32..40d2a7dd5f95 100644 --- a/testing/web-platform/tests/lint.whitelist +++ b/testing/web-platform/tests/lint.whitelist @@ -28,6 +28,7 @@ INDENT TABS: XMLHttpRequest/* INDENT TABS: encoding/legacy*/* INDENT TABS: encrypted-media/polyfill/Makefile +TRAILING WHITESPACE: 2dcontext/tools/current-work-canvas.xhtml TRAILING WHITESPACE: app-uri/* TRAILING WHITESPACE: battery-status/* TRAILING WHITESPACE: conformance-checkers/* @@ -151,7 +152,7 @@ SET TIMEOUT: cookies/resources/testharness-helpers.js SET TIMEOUT: common/reftest-wait.js SET TIMEOUT: conformance-checkers/* SET TIMEOUT: content-security-policy/* -SET TIMEOUT: css-font-display/font-display.html +SET TIMEOUT: css-fonts/font-display/font-display.html SET TIMEOUT: encrypted-media/Google/migrated_to_root_disabled/encrypted-media-utils.js SET TIMEOUT: encrypted-media/polyfill/chrome-polyfill.js SET TIMEOUT: encrypted-media/polyfill/clearkey-polyfill.js diff --git a/testing/web-platform/tests/longtask-timing/OWNERS b/testing/web-platform/tests/longtask-timing/OWNERS new file mode 100644 index 000000000000..08ce2f9a493f --- /dev/null +++ b/testing/web-platform/tests/longtask-timing/OWNERS @@ -0,0 +1,2 @@ +@spanicker +@npm1 diff --git a/testing/web-platform/tests/magnetometer/idlharness.https.html b/testing/web-platform/tests/magnetometer/idlharness.https.html index f32b727065c8..2f98dda24d09 100644 --- a/testing/web-platform/tests/magnetometer/idlharness.https.html +++ b/testing/web-platform/tests/magnetometer/idlharness.https.html @@ -8,32 +8,20 @@ -
    -
    -interface Event {
    -};
    -
    -interface Error {
    -};
    -
    -dictionary EventInit {
    -};
    -
    +
     
    -
    -[SecureContext]
    +
     
     
    diff --git a/testing/web-platform/tests/mediacapture-streams/GUM-api.https.html b/testing/web-platform/tests/mediacapture-streams/GUM-api.https.html
    index 176f458c2c29..148317017692 100644
    --- a/testing/web-platform/tests/mediacapture-streams/GUM-api.https.html
    +++ b/testing/web-platform/tests/mediacapture-streams/GUM-api.https.html
    @@ -1,7 +1,7 @@
     
     
     
    -getUserMedia: test that getUserMedia is present (with or without vendor prefix)
    +getUserMedia: test that getUserMedia is present
     
     
     
    @@ -9,15 +9,14 @@
     
     

    Description

    This test checks for the presence of the -navigator.getUserMedia method, taking vendor prefixes into account.

    +navigator.mediaDevices.getUserMedia method.

    - diff --git a/testing/web-platform/tests/mediacapture-streams/GUM-deny.https.html b/testing/web-platform/tests/mediacapture-streams/GUM-deny.https.html index f61d62333831..17440996c9fd 100644 --- a/testing/web-platform/tests/mediacapture-streams/GUM-deny.https.html +++ b/testing/web-platform/tests/mediacapture-streams/GUM-deny.https.html @@ -15,22 +15,18 @@
    - diff --git a/testing/web-platform/tests/mediacapture-streams/GUM-empty-option-param.https.html b/testing/web-platform/tests/mediacapture-streams/GUM-empty-option-param.https.html index a543129bbcfd..c7904cb4c7d7 100644 --- a/testing/web-platform/tests/mediacapture-streams/GUM-empty-option-param.https.html +++ b/testing/web-platform/tests/mediacapture-streams/GUM-empty-option-param.https.html @@ -1,7 +1,7 @@ -getUserMedia({}) aborts with NOT_SUPPORTED_ERR +getUserMedia({}) rejects with TypeError @@ -13,20 +13,17 @@ options parameter raises a NOT_SUPPORTED_ERR exception.

    - - diff --git a/testing/web-platform/tests/mediacapture-streams/GUM-optional-constraint.https.html b/testing/web-platform/tests/mediacapture-streams/GUM-optional-constraint.https.html index 7e69ca03fe9f..becd871ab2a1 100644 --- a/testing/web-platform/tests/mediacapture-streams/GUM-optional-constraint.https.html +++ b/testing/web-platform/tests/mediacapture-streams/GUM-optional-constraint.https.html @@ -14,18 +14,16 @@ getUserMedia is handled as optional

    - diff --git a/testing/web-platform/tests/mediacapture-streams/GUM-trivial-constraint.https.html b/testing/web-platform/tests/mediacapture-streams/GUM-trivial-constraint.https.html index c24d02b84614..283bcb2c32a4 100644 --- a/testing/web-platform/tests/mediacapture-streams/GUM-trivial-constraint.https.html +++ b/testing/web-platform/tests/mediacapture-streams/GUM-trivial-constraint.https.html @@ -14,17 +14,17 @@ constraint (width >=0) in getUserMedia works

    - diff --git a/testing/web-platform/tests/mediacapture-streams/GUM-unknownkey-option-param.https.html b/testing/web-platform/tests/mediacapture-streams/GUM-unknownkey-option-param.https.html index c288c743932d..b27927222012 100644 --- a/testing/web-platform/tests/mediacapture-streams/GUM-unknownkey-option-param.https.html +++ b/testing/web-platform/tests/mediacapture-streams/GUM-unknownkey-option-param.https.html @@ -1,37 +1,31 @@ -getUserMedia({doesnotexist:true}) aborts with NOT_SUPPORTED_ERR +getUserMedia({doesnotexist:true}) rejects with TypeError

    Description

    This test checks that getUserMedia with an unknown value -in the options parameter raises a NOT_SUPPORTED_ERR exception.

    +in the constraints parameter rejects with a TypeError.

    - diff --git a/testing/web-platform/tests/mediacapture-streams/MediaStream-MediaElement-preload-none.https.html b/testing/web-platform/tests/mediacapture-streams/MediaStream-MediaElement-preload-none.https.html index 6b9da9ce0a2b..6015bb7bb2de 100644 --- a/testing/web-platform/tests/mediacapture-streams/MediaStream-MediaElement-preload-none.https.html +++ b/testing/web-platform/tests/mediacapture-streams/MediaStream-MediaElement-preload-none.https.html @@ -6,7 +6,6 @@ -

    When prompted, accept to share your audio and video streams.

    @@ -38,23 +37,26 @@ async_test(function(t) { var aud = document.querySelector("audio"); - navigator.getUserMedia({audio:true}, t.step_func(function(stream) - { - testPreloadNone(t, aud, t.step_func(function() - { - aud.src = URL.createObjectURL(stream); - t.add_cleanup(function() { URL.revokeObjectURL(aud.src); }); - })); - }), t.unreached_func("getUserMedia error callback was invoked.")); + navigator.mediaDevices.getUserMedia({audio:true}) + .then(t.step_func(function(stream) + { + testPreloadNone(t, aud, t.step_func(function() + { + aud.src = URL.createObjectURL(stream); + t.add_cleanup(function() { URL.revokeObjectURL(aud.src); }); + })); + }), + t.unreached_func("getUserMedia error callback was invoked.")); }, "Test that preload 'none' is ignored for MediaStream object URL used as src"); async_test(function(t) { var vid = document.querySelector("video"); - navigator.getUserMedia({video:true}, t.step_func(function(stream) - { - testPreloadNone(t, vid, t.step_func(function() { vid.srcObject = stream; })); - }), t.unreached_func("getUserMedia error callback was invoked.")); + navigator.mediaDevices.getUserMedia({video:true}) + .then(t.step_func(function(stream) + { + testPreloadNone(t, vid, t.step_func(function() { vid.srcObject = stream; })); + }), t.unreached_func("getUserMedia error callback was invoked.")); }, "Test that preload 'none' is ignored for MediaStream used as srcObject"); diff --git a/testing/web-platform/tests/mediacapture-streams/MediaStream-MediaElement-srcObject.https.html b/testing/web-platform/tests/mediacapture-streams/MediaStream-MediaElement-srcObject.https.html index 1bdbe3eeeaf1..63442bea25b3 100644 --- a/testing/web-platform/tests/mediacapture-streams/MediaStream-MediaElement-srcObject.https.html +++ b/testing/web-platform/tests/mediacapture-streams/MediaStream-MediaElement-srcObject.https.html @@ -17,38 +17,38 @@ via the srcObject attribute.

    - diff --git a/testing/web-platform/tests/mediacapture-streams/MediaStream-add-audio-track.https.html b/testing/web-platform/tests/mediacapture-streams/MediaStream-add-audio-track.https.html index e3650aae0201..e976b162ea9c 100644 --- a/testing/web-platform/tests/mediacapture-streams/MediaStream-add-audio-track.https.html +++ b/testing/web-platform/tests/mediacapture-streams/MediaStream-add-audio-track.https.html @@ -14,16 +14,15 @@
    - - + + + + + + diff --git a/testing/web-platform/tests/mediacapture-streams/MediaStream-finished-add.https.html b/testing/web-platform/tests/mediacapture-streams/MediaStream-finished-add.https.html index a0c4b28b1e7a..bfe561af1ad9 100644 --- a/testing/web-platform/tests/mediacapture-streams/MediaStream-finished-add.https.html +++ b/testing/web-platform/tests/mediacapture-streams/MediaStream-finished-add.https.html @@ -16,16 +16,15 @@ MediaStream is allowed.

    - - - diff --git a/testing/web-platform/tests/mediacapture-streams/MediaStream-idl.https.html b/testing/web-platform/tests/mediacapture-streams/MediaStream-idl.https.html index 21ab468c7143..8e60709cf1b5 100644 --- a/testing/web-platform/tests/mediacapture-streams/MediaStream-idl.https.html +++ b/testing/web-platform/tests/mediacapture-streams/MediaStream-idl.https.html @@ -19,37 +19,39 @@ follows the algorithm set in the spec.

    - diff --git a/testing/web-platform/tests/mediacapture-streams/MediaStream-removetrack.https.html b/testing/web-platform/tests/mediacapture-streams/MediaStream-removetrack.https.html index 1a62bedd761b..787af0bbe52f 100644 --- a/testing/web-platform/tests/mediacapture-streams/MediaStream-removetrack.https.html +++ b/testing/web-platform/tests/mediacapture-streams/MediaStream-removetrack.https.html @@ -14,15 +14,14 @@
    - - - + - + diff --git a/testing/web-platform/tests/mediacapture-streams/MediaStreamTrack-end-manual.https.html b/testing/web-platform/tests/mediacapture-streams/MediaStreamTrack-end-manual.https.html index 6b6b72fc0c18..3500b03bc8c0 100644 --- a/testing/web-platform/tests/mediacapture-streams/MediaStreamTrack-end-manual.https.html +++ b/testing/web-platform/tests/mediacapture-streams/MediaStreamTrack-end-manual.https.html @@ -16,11 +16,10 @@ correctly set into inactive state when permission is revoked.

    - - - diff --git a/testing/web-platform/tests/microdata/conformance-requirements/.gitkeep b/testing/web-platform/tests/microdata/conformance-requirements/.gitkeep deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/testing/web-platform/tests/microdata/converting-html-to-other-formats/.gitkeep b/testing/web-platform/tests/microdata/converting-html-to-other-formats/.gitkeep deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/testing/web-platform/tests/microdata/converting-html-to-other-formats/json/.gitkeep b/testing/web-platform/tests/microdata/converting-html-to-other-formats/json/.gitkeep deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/testing/web-platform/tests/microdata/dependencies/.gitkeep b/testing/web-platform/tests/microdata/dependencies/.gitkeep deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/testing/web-platform/tests/microdata/encoding-microdata/.gitkeep b/testing/web-platform/tests/microdata/encoding-microdata/.gitkeep deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/testing/web-platform/tests/microdata/encoding-microdata/associating-names-with-items/.gitkeep b/testing/web-platform/tests/microdata/encoding-microdata/associating-names-with-items/.gitkeep deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/testing/web-platform/tests/microdata/encoding-microdata/items/.gitkeep b/testing/web-platform/tests/microdata/encoding-microdata/items/.gitkeep deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/testing/web-platform/tests/microdata/encoding-microdata/microdata-and-other-namespaces/.gitkeep b/testing/web-platform/tests/microdata/encoding-microdata/microdata-and-other-namespaces/.gitkeep deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/testing/web-platform/tests/microdata/encoding-microdata/names-the-itemprop-attribute/.gitkeep b/testing/web-platform/tests/microdata/encoding-microdata/names-the-itemprop-attribute/.gitkeep deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/testing/web-platform/tests/microdata/encoding-microdata/names-the-itemprop-attribute/original-id.json b/testing/web-platform/tests/microdata/encoding-microdata/names-the-itemprop-attribute/original-id.json deleted file mode 100644 index 144cacfda8bf..000000000000 --- a/testing/web-platform/tests/microdata/encoding-microdata/names-the-itemprop-attribute/original-id.json +++ /dev/null @@ -1 +0,0 @@ -{"original_id":"names:-the-itemprop-attribute"} \ No newline at end of file diff --git a/testing/web-platform/tests/microdata/encoding-microdata/the-microdata-model/.gitkeep b/testing/web-platform/tests/microdata/encoding-microdata/the-microdata-model/.gitkeep deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/testing/web-platform/tests/microdata/encoding-microdata/values/.gitkeep b/testing/web-platform/tests/microdata/encoding-microdata/values/.gitkeep deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/testing/web-platform/tests/microdata/iana/.gitkeep b/testing/web-platform/tests/microdata/iana/.gitkeep deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/testing/web-platform/tests/microdata/introduction/.gitkeep b/testing/web-platform/tests/microdata/introduction/.gitkeep deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/testing/web-platform/tests/microdata/introduction/global-identifiers-for-items/.gitkeep b/testing/web-platform/tests/microdata/introduction/global-identifiers-for-items/.gitkeep deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/testing/web-platform/tests/microdata/introduction/overview/.gitkeep b/testing/web-platform/tests/microdata/introduction/overview/.gitkeep deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/testing/web-platform/tests/microdata/introduction/selecting-names-when-defining-vocabularies/.gitkeep b/testing/web-platform/tests/microdata/introduction/selecting-names-when-defining-vocabularies/.gitkeep deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/testing/web-platform/tests/microdata/introduction/the-basic-syntax/.gitkeep b/testing/web-platform/tests/microdata/introduction/the-basic-syntax/.gitkeep deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/testing/web-platform/tests/microdata/introduction/typed-items/.gitkeep b/testing/web-platform/tests/microdata/introduction/typed-items/.gitkeep deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/testing/web-platform/tests/microdata/introduction/using-the-microdata-dom-api/.gitkeep b/testing/web-platform/tests/microdata/introduction/using-the-microdata-dom-api/.gitkeep deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/testing/web-platform/tests/microdata/terminology/.gitkeep b/testing/web-platform/tests/microdata/terminology/.gitkeep deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/testing/web-platform/tests/orientation-sensor/idlharness.https.html b/testing/web-platform/tests/orientation-sensor/idlharness.https.html index 92ed7d4bd550..82ab9b3851b3 100644 --- a/testing/web-platform/tests/orientation-sensor/idlharness.https.html +++ b/testing/web-platform/tests/orientation-sensor/idlharness.https.html @@ -8,32 +8,20 @@ -
    -
    -interface Event {
    -};
    -
    -interface Error {
    -};
    -
    -dictionary EventInit {
    -};
    -
    +
     
    -
    -[SecureContext]
    +
     
     
    diff --git a/testing/web-platform/tests/paint-timing/OWNERS b/testing/web-platform/tests/paint-timing/OWNERS
    new file mode 100644
    index 000000000000..b544ce114059
    --- /dev/null
    +++ b/testing/web-platform/tests/paint-timing/OWNERS
    @@ -0,0 +1,2 @@
    +@spanicker
    +@tdresser
    diff --git a/testing/web-platform/tests/paint-timing/basetest.html b/testing/web-platform/tests/paint-timing/basetest.html
    new file mode 100644
    index 000000000000..7f84566d9a86
    --- /dev/null
    +++ b/testing/web-platform/tests/paint-timing/basetest.html
    @@ -0,0 +1,46 @@
    +
    +
    +Performance Paint Timing Test
    +
    +
    +
    +
    +
    + + + + diff --git a/testing/web-platform/tests/paint-timing/first-contentful-bg-image.html b/testing/web-platform/tests/paint-timing/first-contentful-bg-image.html new file mode 100644 index 000000000000..ddcc78fbe55e --- /dev/null +++ b/testing/web-platform/tests/paint-timing/first-contentful-bg-image.html @@ -0,0 +1,41 @@ + + +Performance Paint Timing Test: FCP due to background image + + + + +
    + + +
    + +
    + diff --git a/testing/web-platform/tests/paint-timing/first-contentful-canvas.html b/testing/web-platform/tests/paint-timing/first-contentful-canvas.html new file mode 100644 index 000000000000..3610a57ec716 --- /dev/null +++ b/testing/web-platform/tests/paint-timing/first-contentful-canvas.html @@ -0,0 +1,41 @@ + + +Performance Paint Timing Test: FCP due to canvas + + + + + + + + + diff --git a/testing/web-platform/tests/paint-timing/first-contentful-image.html b/testing/web-platform/tests/paint-timing/first-contentful-image.html new file mode 100644 index 000000000000..a4e89b376573 --- /dev/null +++ b/testing/web-platform/tests/paint-timing/first-contentful-image.html @@ -0,0 +1,40 @@ + + +Performance Paint Timing Test: FCP due to image + + + + +
    + + + + diff --git a/testing/web-platform/tests/paint-timing/first-contentful-paint.html b/testing/web-platform/tests/paint-timing/first-contentful-paint.html new file mode 100644 index 000000000000..570ce4be21c5 --- /dev/null +++ b/testing/web-platform/tests/paint-timing/first-contentful-paint.html @@ -0,0 +1,66 @@ + + +Performance Paint Timing Test: FP followed by FCP + + + + +
    +
    + + + + diff --git a/testing/web-platform/tests/paint-timing/first-contentful-svg.html b/testing/web-platform/tests/paint-timing/first-contentful-svg.html new file mode 100644 index 000000000000..cf3e95427582 --- /dev/null +++ b/testing/web-platform/tests/paint-timing/first-contentful-svg.html @@ -0,0 +1,40 @@ + + +Performance Paint Timing Test: FCP due to SVG + + + + +
    + + + + diff --git a/testing/web-platform/tests/paint-timing/first-paint-bg-color.html b/testing/web-platform/tests/paint-timing/first-paint-bg-color.html new file mode 100644 index 000000000000..46efb9e2674b --- /dev/null +++ b/testing/web-platform/tests/paint-timing/first-paint-bg-color.html @@ -0,0 +1,37 @@ + + +Performance Paint Timing Test: FP due to background color + + + + +
    + + +
    + +
    + diff --git a/testing/web-platform/tests/paint-timing/first-paint-only.html b/testing/web-platform/tests/paint-timing/first-paint-only.html new file mode 100644 index 000000000000..fb0e75287531 --- /dev/null +++ b/testing/web-platform/tests/paint-timing/first-paint-only.html @@ -0,0 +1,40 @@ + + +Performance Paint Timing Test: FP only + + + + +
    + + + + diff --git a/testing/web-platform/tests/paint-timing/resources/circle.svg b/testing/web-platform/tests/paint-timing/resources/circle.svg new file mode 100644 index 000000000000..6b5fdbe8e065 --- /dev/null +++ b/testing/web-platform/tests/paint-timing/resources/circle.svg @@ -0,0 +1,3 @@ + + + diff --git a/testing/web-platform/tests/paint-timing/resources/circles.png b/testing/web-platform/tests/paint-timing/resources/circles.png new file mode 100644 index 0000000000000000000000000000000000000000..708682a207b47d87f582c79f3a5ab519d7f5205d GIT binary patch literal 2479 zcmV;g2~hTlP)4Tx0C)j~RL^S@K@|QrZmG~B2wH0nvUrdpNm;9CMbtL^5n^i$+aIn^?(HA4aZWV5ov6ELTdbo0FI&wK{O>*+w4vx20?>!`FrQsdJlnHR>OPy zcd~b_n$otK2Za4V;76L-DzNVtaSB-y0*E}{p()372;bw_^6ZZ}PI-92wGS&j#91PI zKs7DSe@(bk%_Y-7gGe}(^>I=@oY#w#*Bu9GZf3^F5WP>3rn}7Ut74&?PWBFvy`A)a zPP5)V!Xd&78LdA?xQ(9mjMYElVd13a#D+Z_7&Y|xU=_C-srWU*6kiZcC!$nw*)9$7 zn6CX+@=AhmkT}X@VSsa5NKe;HZuq)~1$`#h6R+ZTR#D-3j}vF!)ZOnz+5)dI4jl{{ z44Mr{P!L4~VVJN`K!!XTF*LGrKO?IK8z<8w`3e3jI8lUGNUta*C8 zn(P`s>{pjD=7Kek#B;Fw@hxAK%$F&Q6vg9J^Xf~4by_hu-=A!MJ3Znq&n~srbFGPs zH&&aMXZ>nO`|hf|ljc?VPhR!${AbO?W8x_>CU%PFA&Hm8F7cAsOREdwU~R_;ot1_u z(ruCYB-LPGn!NQdT|ZlRy+(fw^-+`=%+gee_kY4FWHg<*4sZI8+sFJD270UUORdLHO0nA4V) z%{fwsET5CQ>B?eK%uw4yQc~9?*JVo2}ze(;aRcp*ceL#HUJSllrgm5wQKR zQu+C;QrUh^8rFfA`ftFz{YAidi-`aL010qNS#tmY3ljhU3ljkVnw%H_00w7CL_t(& z1?`$qZ&gJQ$9JzS5mHNAVuHjbK8gebp@|B90(|tzClc`;zJR8YFM#iALPElmkMaow zB!Se_s63jK)Fz~W*nnx{U4Q?XIX$=M-qIHC<>^ea=j_heotd4T-JO|xbDGa3?FvfD zX@;KrQ%R4gKiwQv5y+dEM4tonnFjNW`a|BmUwb+>s$-3IqbVZY5M&?q6^J|OlFq{Q z1g%-hA&P`p<+((MUl?!UeGS^BA6O=TEfES_h87-LS@1b!%#?A1SZEY2*Ay8$w4{cED{>*?6 zC^s1Q1@C(%K(b{NAmv1N+gTO4zwLB~80n~)l5(S5Ru|HkLhrka=~eL-UBaQ;;H3x zTAETc#zBo6(Sl~O38QtFFmKamif`^9l=>@tZ0Z<%9orrJe(Iijd!)|^SSr| zhTX86Qu&b%H%!ISj0m|s?8to=9Xil{3!3*+?*7CZo64VH=-Pd%Ta7*8Q2LrERK4%iKL=$-PdZM#VZTrHCZ32K8cr;cBge6y2v5%e7-)pen* z=%QNRp*=+NN$?P_#o#S&*pO~*U6e&fdcGBGN1>VKjGTvf8gFEfEP*`{y}6sLrW4rD zg(jKdv_*R(cr7?d^Bnvl0Ws@HyC_v%_x4Di>po?8I=BpDt`T=7bZdLt52;bgQ{R6T zPk8~G8X6_*z0t;~1@iP{<@hta{nj?r$R6S$UgGJXD`Zncx- zfDXoKQ(ZBKTt4s|Z8>0aoO}*ch6tiL89c=6I0v$V0dbqw!T2oLUU8=QzykO5MxiPB zUSY_=D=9KDu99UQ0qySM#_!5`$BsJ3kXZh+yu`;Qp7np}hkSOYnenqr_ctgmz;BNC zVR)@bLy|2{W`!z3nL|!BO;BD_Wk?`eq6rueu@_H)WQYUD!;vHAxn)8X^W<>I&9k#> zg@LqQ95hzvj{KnekP_`P@Kac%4W$6mgNukd;Nnd$PgC z$3u3Y`$hqzW(?s-$JiC~ymXB9<|^U@wnHz{F}|DjoQ^SS@o;T6C#<}$Cnt87uo|#rAxqz@%8a~@5Q-Xf3=9Src!EBYboiHkvK3)> zhOHL0bN`X|=-Kvzc)jeBt(jh4S&nhgk{OOin`6`hOB-&$zT8#4GT%1G*xbssO;xov z$LO}R{nM>XepH)d++It)U)mgFuQs-;w>ie`G}FYpqtWIVn|i6+ZH}?l#a?P{jbem)B*G`*b?AJ++X>*LVF1%KS;%$yG&J;_}DUa0qXOuR_NQ!shADY@6 tWB;Gx{CBS { + const text = await fetch("/interfaces/payment-handler.idl") + .then(response => response.text()); + const idlArray = new IdlArray(); + idlArray.add_idls(text); + idlArray.test(); + done(); +}, "Payment handler interfaces."); diff --git a/testing/web-platform/tests/payment-request/OWNERS b/testing/web-platform/tests/payment-request/OWNERS index ccd89257fe66..6aa9e2b2b50e 100644 --- a/testing/web-platform/tests/payment-request/OWNERS +++ b/testing/web-platform/tests/payment-request/OWNERS @@ -1,2 +1,6 @@ @edenchuang @marcoscaceres +@rsolomakhin +@domenic +@AmazingJaze +@MSFTkihans diff --git a/testing/web-platform/tests/payment-request/payment-request-update-event-constructor.http.html b/testing/web-platform/tests/payment-request/PaymentRequestUpdateEvent/constructor.http.html similarity index 100% rename from testing/web-platform/tests/payment-request/payment-request-update-event-constructor.http.html rename to testing/web-platform/tests/payment-request/PaymentRequestUpdateEvent/constructor.http.html diff --git a/testing/web-platform/tests/payment-request/payment-request-update-event-constructor.https.html b/testing/web-platform/tests/payment-request/PaymentRequestUpdateEvent/constructor.https.html similarity index 97% rename from testing/web-platform/tests/payment-request/payment-request-update-event-constructor.https.html rename to testing/web-platform/tests/payment-request/PaymentRequestUpdateEvent/constructor.https.html index e158a143b732..eb58b6a7ece3 100644 --- a/testing/web-platform/tests/payment-request/payment-request-update-event-constructor.https.html +++ b/testing/web-platform/tests/payment-request/PaymentRequestUpdateEvent/constructor.https.html @@ -36,6 +36,7 @@ test(() => { assert_true(ev.bubbles, "set by EventInitDict"); assert_true(ev.cancelable, "set by EventInitDict"); assert_true(ev.composed, "set by EventInitDict"); + assert_equals(ev.target, null, "initially null"); assert_equals(ev.type, "test"); }, "PaymentRequestUpdateEvent can be constructed with an EventInitDict, even if not trusted"); diff --git a/testing/web-platform/tests/payment-request/PaymentRequestUpdateEvent/updateWith-duplicate-shipping-options-manual.https.html b/testing/web-platform/tests/payment-request/PaymentRequestUpdateEvent/updateWith-duplicate-shipping-options-manual.https.html new file mode 100644 index 000000000000..11ba26fd1d17 --- /dev/null +++ b/testing/web-platform/tests/payment-request/PaymentRequestUpdateEvent/updateWith-duplicate-shipping-options-manual.https.html @@ -0,0 +1,89 @@ + + + + + updateWith() method - duplicate shippingOption ids + + + + +

    updateWith() method - duplicate shippingOptions ids

    +

    + When the payment sheet is shown, select a different shipping address. + If you have to manually abort the test from the payment sheet, then the + test has failed. +

    +
      +
    1. + +
    2. +
    diff --git a/testing/web-platform/tests/payment-request/payment-request-update-event-updatewith-method.https.html b/testing/web-platform/tests/payment-request/PaymentRequestUpdateEvent/updatewith-method.https.html similarity index 100% rename from testing/web-platform/tests/payment-request/payment-request-update-event-updatewith-method.https.html rename to testing/web-platform/tests/payment-request/PaymentRequestUpdateEvent/updatewith-method.https.html diff --git a/testing/web-platform/tests/payment-request/algorithms-manual.https.html b/testing/web-platform/tests/payment-request/algorithms-manual.https.html new file mode 100644 index 000000000000..bcb4b23c0645 --- /dev/null +++ b/testing/web-platform/tests/payment-request/algorithms-manual.https.html @@ -0,0 +1,180 @@ + + + + + Payment Request algorithms + + + + +
    +

    + User aborts the payment request algorithm +

    + +

    + When presented with the payment sheet, abort the payment request (e.g., by hitting the esc key or pressing a UA provided button). +

    +
      +
    1. + +
    2. +
    +
    + +
    +

    Shipping address changed algorithm

    + +

    + When prompted, please change or enter a new shipping address and then select Pay. +

    +
      +
    1. + +
    2. +
    +
    + +
    +

    Shipping option changed algorithm

    + +

    + Finally, when prompted, please select "shipping option 2" and then select Pay. +

    +
      +
    1. + +
    2. +
    +
    diff --git a/testing/web-platform/tests/payment-request/allowpaymentrequest/removing-allowpaymentrequest.https.sub.html b/testing/web-platform/tests/payment-request/allowpaymentrequest/removing-allowpaymentrequest.https.sub.html index fcd7f1d3ca02..090af39ed76b 100644 --- a/testing/web-platform/tests/payment-request/allowpaymentrequest/removing-allowpaymentrequest.https.sub.html +++ b/testing/web-platform/tests/payment-request/allowpaymentrequest/removing-allowpaymentrequest.https.sub.html @@ -13,26 +13,50 @@ async_test((t) => { const path = location.pathname.substring(0, location.pathname.lastIndexOf('/') + 1); iframe.src = "https://{{domains[www1]}}:{{ports[https][0]}}" + path + "echo-PaymentRequest.html"; iframe.onload = t.step_func(() => { - if (i === 1) { + if (i === 0) { + // 2. The iframe has now loaded (the first load). + // The allowpaymentrequest flag is set. iframe.allowPaymentRequest = false; + // 3. The allowpaymentrequest attribute has now been removed. + // The allowpaymentrequest flag is *still set* for the document. } + // 4. (first load) Ask the subdocument to invoke PaymentRequest and post back the result. + // (See below for steps 5 and 6.) + // 7. (second load) Ask the subdocument to invoke PaymentRequest and post back the result. iframe.contentWindow.postMessage('What is the result of new PaymentRequest(...)?', '*'); }); window.onmessage = t.step_func((e) => { i++; if (i === 1) { + // 5. This is the first message we receive, from the first load. + // Since the allowpaymentrequest flag was set, we expect success. assert_equals(e.data.message, 'Success', 'before navigation'); - // Navigate the iframe. This will fire a second 'load' event on the iframe. + // 6. Navigate the iframe. This will fire a second 'load' event on the iframe. + // At this time, the iframe does not have an allowpaymentrequest attribute. + // https://html.spec.whatwg.org/#the-location-interface:dom-location-href-3 + // https://html.spec.whatwg.org/#location-object-setter-navigate + // https://html.spec.whatwg.org/#location-object-navigate + // https://html.spec.whatwg.org/#navigate step 12 + // https://html.spec.whatwg.org/#process-a-navigate-response step 5 + // https://html.spec.whatwg.org/#read-html + // https://html.spec.whatwg.org/#initialise-the-document-object step 8 + // https://html.spec.whatwg.org/#set-the-allow*-flags step 3 does *not* set the allowpaymentrequest flag. iframe.contentWindow.location.href = iframe.src + '?2'; } else { + // 8. This is the second message we receive, from the second load. + // Since the allowpaymentrequest flag was not set, we expect an exception. assert_equals(e.data.message, 'Exception', 'after navigation'); assert_array_equals(e.data.details, [true /* ex instanceof DOMException*/, 18 /* ex.code */, 'SecurityError' /* ex.name */], 'after navigation'); t.done(); } }); + // 1. The browsing context for the iframe is created when the iframe is inserted to the document. + // https://html.spec.whatwg.org/#the-iframe-element:creating-a-new-browsing-context + // https://html.spec.whatwg.org/#creating-a-new-browsing-context step 11 + // https://html.spec.whatwg.org/#set-the-allow*-flags step 3 sets the allowpaymentrequest flag. document.body.appendChild(iframe); }); diff --git a/testing/web-platform/tests/payment-request/allowpaymentrequest/setting-allowpaymentrequest-timing.https.sub.html b/testing/web-platform/tests/payment-request/allowpaymentrequest/setting-allowpaymentrequest-timing.https.sub.html index 6a1221450e83..072b94f286ed 100644 --- a/testing/web-platform/tests/payment-request/allowpaymentrequest/setting-allowpaymentrequest-timing.https.sub.html +++ b/testing/web-platform/tests/payment-request/allowpaymentrequest/setting-allowpaymentrequest-timing.https.sub.html @@ -6,6 +6,10 @@ + + + +

    PaymentRequest shippingOption attribute

    +

    + When the payment sheet is presented, select "PICK ME!" as the shipping option. +

    +
      +
    1. + +
    2. +
    diff --git a/testing/web-platform/tests/payment-request/interfaces.https.html b/testing/web-platform/tests/payment-request/interfaces.https.html index db707650753d..bfbcad48afe5 100644 --- a/testing/web-platform/tests/payment-request/interfaces.https.html +++ b/testing/web-platform/tests/payment-request/interfaces.https.html @@ -5,136 +5,27 @@ - - - diff --git a/testing/web-platform/tests/payment-request/payment-request-constructor.https.html b/testing/web-platform/tests/payment-request/payment-request-constructor.https.html index 5568c184a751..b2ed28969dfa 100644 --- a/testing/web-platform/tests/payment-request/payment-request-constructor.https.html +++ b/testing/web-platform/tests/payment-request/payment-request-constructor.https.html @@ -350,10 +350,18 @@ test(() => { const details = Object.assign({}, defaultDetails, { shippingOptions: [invalidShippingOption], }); + const request = new PaymentRequest(defaultMethods, details, { + requestShipping: false, + }); + assert_equals( + request.shippingOption, + null, + "shippingOption must be null, because requestShipping is false" + ); assert_throws( new TypeError(), () => { - new PaymentRequest(defaultMethods, details); + new PaymentRequest(defaultMethods, details, { requestShipping: true }); }, `Expected TypeError for option.amount.value: "${amount}"` ); @@ -368,7 +376,16 @@ test(() => { assert_equals( request.shippingOption, null, - "request.shippingOption must be null" + "shippingOption must be null, as requestShipping is missing" + ); + // defaultDetails lacks shipping options + const request2 = new PaymentRequest(defaultMethods, defaultDetails, { + requestShipping: true, + }); + assert_equals( + request2.shippingOption, + null, + `request2.shippingOption must be null` ); }, "If there is no selected shipping option, then PaymentRequest.shippingOption remains null"); @@ -376,13 +393,38 @@ test(() => { smokeTest(); const selectedOption = Object.assign({}, defaultShippingOption, { selected: true, - id: "PASS", + id: "the-id", }); const shippingOptions = [selectedOption]; const details = Object.assign({}, defaultDetails, { shippingOptions }); - const request = new PaymentRequest(defaultMethods, details); - assert_equals(request.shippingOption, "PASS", "selected option must be PASS"); -}, "If there is a selected shipping option, then it becomes synchronously selected"); + const requestNoShippingRequested1 = new PaymentRequest( + defaultMethods, + details + ); + assert_equals( + requestNoShippingRequested1.shippingOption, + null, + "Must be null when no shipping is requested (defaults to false)" + ); + const requestNoShippingRequested2 = new PaymentRequest( + defaultMethods, + details, + { requestShipping: false } + ); + assert_equals( + requestNoShippingRequested2.shippingOption, + null, + "Must be null when requestShipping is false" + ); + const requestWithShipping = new PaymentRequest(defaultMethods, details, { + requestShipping: "truthy value", + }); + assert_equals( + requestWithShipping.shippingOption, + "the-id", + "Selected option must be 'the-id'" + ); +}, "If there is a selected shipping option, and requestShipping is set, then that option becomes synchronously selected"); test(() => { smokeTest(); @@ -396,13 +438,27 @@ test(() => { }); const passOption = Object.assign({}, defaultShippingOption, { selected: true, - id: "PASS", + id: "the-id", }); const shippingOptions = [failOption1, failOption2, passOption]; const details = Object.assign({}, defaultDetails, { shippingOptions }); - const request = new PaymentRequest(defaultMethods, details); - assert_equals(request.shippingOption, "PASS", "selected option must PASS"); -}, "If there is a multiple selected shipping options, only the last is selected"); + const requestNoShipping = new PaymentRequest(defaultMethods, details, { + requestShipping: false, + }); + assert_equals( + requestNoShipping.shippingOption, + null, + "shippingOption must be null, as requestShipping is false" + ); + const requestWithShipping = new PaymentRequest(defaultMethods, details, { + requestShipping: true, + }); + assert_equals( + requestWithShipping.shippingOption, + "the-id", + "selected option must 'the-id" + ); +}, "If requestShipping is set, and if there is a multiple selected shipping options, only the last is selected."); test(() => { smokeTest(); @@ -414,9 +470,49 @@ test(() => { }); const shippingOptions = [selectedOption, unselectedOption]; const details = Object.assign({}, defaultDetails, { shippingOptions }); - const request = new PaymentRequest(defaultMethods, details); - assert_equals(request.shippingOption, null, "selected option must be null"); -}, "If there are any duplicate shipping option ids, then there are no shipping options"); + const requestNoShipping = new PaymentRequest(defaultMethods, details); + assert_equals( + requestNoShipping.shippingOption, + null, + "shippingOption must be null, because requestShipping is false" + ); + assert_throws( + new TypeError(), + () => { + new PaymentRequest(defaultMethods, details, { requestShipping: true }); + }, + "Expected to throw a TypeError because duplicate IDs" + ); +}, "If there are any duplicate shipping option ids, and shipping is requested, then throw a TypeError"); + +test(() => { + smokeTest(); + const dupShipping1 = Object.assign({}, defaultShippingOption, { + selected: true, + id: "DUPLICATE", + label: "Fail 1", + }); + const dupShipping2 = Object.assign({}, defaultShippingOption, { + selected: false, + id: "DUPLICATE", + label: "Fail 2", + }); + const shippingOptions = [dupShipping1, defaultShippingOption, dupShipping2]; + const details = Object.assign({}, defaultDetails, { shippingOptions }); + const requestNoShipping = new PaymentRequest(defaultMethods, details); + assert_equals( + requestNoShipping.shippingOption, + null, + "shippingOption must be null, because requestShipping is false" + ); + assert_throws( + new TypeError(), + () => { + new PaymentRequest(defaultMethods, details, { requestShipping: true }); + }, + "Expected to throw a TypeError because duplicate IDs" + ); +}, "Throw when there are duplicate shippingOption ids, even if other values are different"); // Process payment details modifiers: test(() => { diff --git a/testing/web-platform/tests/payment-request/payment-request-ctor-currency-code-checks.https.html b/testing/web-platform/tests/payment-request/payment-request-ctor-currency-code-checks.https.html index 3a5e0e700841..1641683beb51 100644 --- a/testing/web-platform/tests/payment-request/payment-request-ctor-currency-code-checks.https.html +++ b/testing/web-platform/tests/payment-request/payment-request-ctor-currency-code-checks.https.html @@ -194,7 +194,7 @@ test(() => { shippingOptions: [shippingOption], }; try { - new PaymentRequest(defaultMethods, details); + new PaymentRequest(defaultMethods, details, { requestShipping: true }); } catch (err) { assert_unreached( `Unexpected exception with valid shippingOption currency code "${validCurrency}": ${err.message}.` @@ -204,7 +204,7 @@ test(() => { } try { const details = Object.assign({}, defaultDetails, { shippingOptions }); - new PaymentRequest(defaultMethods, details); + new PaymentRequest(defaultMethods, details, { requestShipping: true }); } catch (err) { assert_unreached( `Unexpected error with multiple valid shppingOptions: ${err.message}.` @@ -228,7 +228,7 @@ test(() => { assert_throws( RANGE_ERROR, () => { - new PaymentRequest(defaultMethods, details); + new PaymentRequest(defaultMethods, details, { requestShipping: true }); }, `Expected RangeError with invalid shippingOption currency code "${invalidCurrency}".` ); diff --git a/testing/web-platform/tests/payment-request/payment-request-id-attribute.https.html b/testing/web-platform/tests/payment-request/payment-request-id-attribute.https.html index 8e774bd5c29a..9d77a88f4e96 100644 --- a/testing/web-platform/tests/payment-request/payment-request-id-attribute.https.html +++ b/testing/web-platform/tests/payment-request/payment-request-id-attribute.https.html @@ -12,6 +12,7 @@ test(() => { id: "pass", total, }); + assert_idl_attribute(request1, "id"); assert_equals(request1.id, "pass", "Expected PaymentRequest.id to be 'pass'"); const request2 = new PaymentRequest(methods, { total, diff --git a/testing/web-platform/tests/payment-request/payment-request-onshippingaddresschange-attribute.https.html b/testing/web-platform/tests/payment-request/payment-request-onshippingaddresschange-attribute.https.html index 6b6878300847..5c54d48568a4 100644 --- a/testing/web-platform/tests/payment-request/payment-request-onshippingaddresschange-attribute.https.html +++ b/testing/web-platform/tests/payment-request/payment-request-onshippingaddresschange-attribute.https.html @@ -19,6 +19,11 @@ const defaultDetails = Object.freeze({ }, }); +test(() => { + const request = new PaymentRequest(defaultMethods, defaultDetails); + assert_idl_attribute(request, "onshippingaddresschange"); +}, "Must have a onshippingaddresschange IDL attribute"); + test(() => { const request = new PaymentRequest(defaultMethods, defaultDetails); const ev = new Event("shippingaddresschange"); diff --git a/testing/web-platform/tests/payment-request/payment-request-onshippingoptionchange-attribute.https.html b/testing/web-platform/tests/payment-request/payment-request-onshippingoptionchange-attribute.https.html index 29c1189767db..a4d8fbc4825f 100644 --- a/testing/web-platform/tests/payment-request/payment-request-onshippingoptionchange-attribute.https.html +++ b/testing/web-platform/tests/payment-request/payment-request-onshippingoptionchange-attribute.https.html @@ -19,6 +19,11 @@ const defaultDetails = Object.freeze({ }, }); +test(() => { + const request = new PaymentRequest(defaultMethods, defaultDetails); + assert_idl_attribute(request, "onshippingoptionchange"); +}, "Must have a onshippingoptionchange IDL attribute"); + test(() => { const request = new PaymentRequest(defaultMethods, defaultDetails); const ev = new Event("shippingoptionchange"); diff --git a/testing/web-platform/tests/payment-request/payment-request-shippingAddress-attribute.https.html b/testing/web-platform/tests/payment-request/payment-request-shippingAddress-attribute.https.html new file mode 100644 index 000000000000..08918356b6fe --- /dev/null +++ b/testing/web-platform/tests/payment-request/payment-request-shippingAddress-attribute.https.html @@ -0,0 +1,28 @@ + + + +Test for PaymentRequest shippingAddress attribute + + + + diff --git a/testing/web-platform/tests/payment-request/payment-request-shippingOption-attribute.https.html b/testing/web-platform/tests/payment-request/payment-request-shippingOption-attribute.https.html new file mode 100644 index 000000000000..b5f9ea65c6c8 --- /dev/null +++ b/testing/web-platform/tests/payment-request/payment-request-shippingOption-attribute.https.html @@ -0,0 +1,100 @@ + + + +Test for PaymentRequest shippingOption attribute + + + + diff --git a/testing/web-platform/tests/payment-request/payment-request-shippingType-attribute.https.html b/testing/web-platform/tests/payment-request/payment-request-shippingType-attribute.https.html index 6e7252b40ce2..b1ed0d028860 100644 --- a/testing/web-platform/tests/payment-request/payment-request-shippingType-attribute.https.html +++ b/testing/web-platform/tests/payment-request/payment-request-shippingType-attribute.https.html @@ -20,6 +20,11 @@ const defaultDetails = Object.freeze({ }, }); +test(() => { + const request = new PaymentRequest(defaultMethods, defaultDetails); + assert_idl_attribute(request, "shippingType"); +}, "Must have a shippingType IDL attribute"); + test(() => { const request1 = new PaymentRequest(defaultMethods, defaultDetails, {}); assert_equals(request1.shippingType, null, "must be null"); diff --git a/testing/web-platform/tests/payment-request/payment-request-show-method.https.html b/testing/web-platform/tests/payment-request/payment-request-show-method.https.html index 7dea7e448be7..555c4936537a 100644 --- a/testing/web-platform/tests/payment-request/payment-request-show-method.https.html +++ b/testing/web-platform/tests/payment-request/payment-request-show-method.https.html @@ -19,6 +19,16 @@ const defaultDetails = Object.freeze({ }, }); +test(() => { + try { + new PaymentRequest(defaultMethods, defaultDetails); + } catch (err) { + done(); + throw err; + } +}, "Must be possible to construct a payment request"); + + promise_test(async t => { const request = new PaymentRequest(defaultMethods, defaultDetails); const acceptPromise = request.show(); // Sets state to "interactive" diff --git a/testing/web-platform/tests/payment-request/payment-response/helpers.js b/testing/web-platform/tests/payment-request/payment-response/helpers.js index 0c22066cd0ab..90425e21a94a 100644 --- a/testing/web-platform/tests/payment-request/payment-response/helpers.js +++ b/testing/web-platform/tests/payment-request/payment-response/helpers.js @@ -1,5 +1,33 @@ setup({ explicit_done: true, explicit_timeout: true }); +const validMethod = Object.freeze({ + supportedMethods: "basic-card", +}); + +const validMethods = Object.freeze([validMethod]); + +const validAmount = Object.freeze({ + currency: "USD", + value: "1.00", +}); + +const validTotal = Object.freeze({ + label: "Valid total", + amount: validAmount, +}); +const validDetails = { + total: validTotal, +}; + +test(() => { + try { + new PaymentRequest(validMethods, validDetails); + } catch (err) { + done(); + throw err; + } +}, "Can construct a payment request (smoke test)."); + /** * Pops up a payment sheet, allowing options to be * passed in if particular values are needed. @@ -67,13 +95,41 @@ async function runManualTest(button, options, expected = {}, id = undefined) { const { request, response } = await getPaymentRequestResponse(options, id); await response.complete(); test(() => { + assert_idl_attribute( + response, + "requestId", + "Expected requestId to be an IDL attribute." + ); assert_equals(response.requestId, request.id, `Expected ids to match`); for (const [attribute, value] of Object.entries(expected)) { + assert_idl_attribute( + response, + attribute, + `Expected ${attribute} to be an IDL attribute.` + ); assert_equals( response[attribute], value, `Expected response ${attribute} attribute to be ${value}` ); } + if (options && options.requestShipping) { + assert_equals( + response.shippingOption, + "pass", + "request.shippingOption must be 'pass'" + ); + } else { + assert_equals( + request.shippingOption, + null, + "If requestShipping is falsy, request.shippingOption must be null" + ); + assert_equals( + response.shippingOption, + null, + "request.shippingOption must be null" + ); + } }, button.textContent.trim()); } diff --git a/testing/web-platform/tests/payment-request/payment-response/shippingAddress-attribute-manual.https.html b/testing/web-platform/tests/payment-request/payment-response/shippingAddress-attribute-manual.https.html index 659e8d6599cc..cc3ce2a13f57 100644 --- a/testing/web-platform/tests/payment-request/payment-response/shippingAddress-attribute-manual.https.html +++ b/testing/web-platform/tests/payment-request/payment-response/shippingAddress-attribute-manual.https.html @@ -13,6 +13,7 @@ async function checkNullShippingAddress(button, options) { const { request, response } = await getPaymentRequestResponse(options); await response.complete(); test(() => { + assert_idl_attribute(response, "shippingAddress"); assert_equals( response.shippingAddress, null, @@ -32,6 +33,7 @@ async function runManualTest(button, options = {}, expected = {}, id) { await response.complete(); test(() => { assert_equals(response.requestId, request.id, `Expected ids to match`); + assert_idl_attribute(response, "shippingAddress"); const { shippingAddress: addr } = request; assert_true( addr instanceof PaymentAddress, diff --git a/testing/web-platform/tests/payment-request/rejects_if_not_active.https.html b/testing/web-platform/tests/payment-request/rejects_if_not_active.https.html new file mode 100644 index 000000000000..063d31b13860 --- /dev/null +++ b/testing/web-platform/tests/payment-request/rejects_if_not_active.https.html @@ -0,0 +1,156 @@ + + + +PaymentRequest show() rejects if doc is not fully active + + + + + diff --git a/testing/web-platform/tests/payment-request/resources/page1.html b/testing/web-platform/tests/payment-request/resources/page1.html new file mode 100644 index 000000000000..7fc080d380c4 --- /dev/null +++ b/testing/web-platform/tests/payment-request/resources/page1.html @@ -0,0 +1 @@ + diff --git a/testing/web-platform/tests/payment-request/resources/page2.html b/testing/web-platform/tests/payment-request/resources/page2.html new file mode 100644 index 000000000000..7fc080d380c4 --- /dev/null +++ b/testing/web-platform/tests/payment-request/resources/page2.html @@ -0,0 +1 @@ + diff --git a/testing/web-platform/tests/payment-request/shipping-address-changed-manual.https.html b/testing/web-platform/tests/payment-request/shipping-address-changed-manual.https.html new file mode 100644 index 000000000000..787af96b1f6a --- /dev/null +++ b/testing/web-platform/tests/payment-request/shipping-address-changed-manual.https.html @@ -0,0 +1,77 @@ + + + +Test for PaymentRequest shippingAddress attribute + + + + + + +

    PaymentRequest shippingAddress attribute

    +

    + When the payment sheet is presented, enter or select a shipping address. +

    +
      +
    1. + +
    2. +
    diff --git a/testing/web-platform/tests/payment-request/user-abort-algorithm-manual.https.html b/testing/web-platform/tests/payment-request/user-abort-algorithm-manual.https.html new file mode 100644 index 000000000000..cbc5d2f361ab --- /dev/null +++ b/testing/web-platform/tests/payment-request/user-abort-algorithm-manual.https.html @@ -0,0 +1,62 @@ + + + + + User aborts the payment request algorithm. + + + + +

    + User aborts the payment request algorithm. +

    +

    + When presented with the payment sheet, abort the payment request + (e.g., by hitting the esc key or pressing a UA provided button). +

    +
      +
    1. + +
    2. +
    diff --git a/testing/web-platform/tests/performance-timeline/po-observe.html b/testing/web-platform/tests/performance-timeline/po-observe.html index dcfd373f4f4d..d65c8a40c981 100644 --- a/testing/web-platform/tests/performance-timeline/po-observe.html +++ b/testing/web-platform/tests/performance-timeline/po-observe.html @@ -36,7 +36,8 @@ PerformanceObserverInit.buffered should retrieve previously buffered entries } function shouldExclude(entry) { // exclude all `resource` entries that aren't for "square.png" - return entry.type === "resource" && entry.name.indexOf("square.png") === -1 + return entry.entryType === "resource" && + entry.name.indexOf("square.png") === -1; } function runTest() { // this PerformanceObserver is a nop because we've already been notified about all of our `entryTypes` diff --git a/testing/web-platform/tests/presentation-api/receiving-ua/support/PresentationConnection_onmessage_receiving-ua.html b/testing/web-platform/tests/presentation-api/receiving-ua/support/PresentationConnection_onmessage_receiving-ua.html index e48fffdd6dd0..0734a5570c21 100644 --- a/testing/web-platform/tests/presentation-api/receiving-ua/support/PresentationConnection_onmessage_receiving-ua.html +++ b/testing/web-platform/tests/presentation-api/receiving-ua/support/PresentationConnection_onmessage_receiving-ua.html @@ -63,8 +63,8 @@ navigator.presentation.receiver.connectionList.then(list => { assert_equals(connection.binaryType, 'arraybuffer', 'the default value of binaryType is "arraybuffer"'); const eventWatcher = new EventWatcher(t, connection, 'message'); - return eventWatcher.wait_for('message').then(evt => { - checkEvent(evt); + return eventWatcher.wait_for('message').then(event => { + checkEvent(event); assert_equals(event.data, message1, 'receive a string correctly'); return watchEvent(connection, eventWatcher, 'message'); }).then(event => { diff --git a/testing/web-platform/tests/quirks-mode/OWNERS b/testing/web-platform/tests/quirks-mode/OWNERS index 638516146952..8b137891791f 100644 --- a/testing/web-platform/tests/quirks-mode/OWNERS +++ b/testing/web-platform/tests/quirks-mode/OWNERS @@ -1 +1 @@ -@zcorpan + diff --git a/testing/web-platform/tests/resources/idlharness.js b/testing/web-platform/tests/resources/idlharness.js index 5ba69890f142..a3bc373b82c3 100644 --- a/testing/web-platform/tests/resources/idlharness.js +++ b/testing/web-platform/tests/resources/idlharness.js @@ -332,7 +332,7 @@ IdlArray.prototype.is_json_type = function(type) */ var idlType = type.idlType; - + if (type.generic == "Promise") { return false; } // nullable and annotated types don't need to be handled separately, @@ -392,9 +392,12 @@ IdlArray.prototype.is_json_type = function(type) default: var thing = this.members[idlType]; if (!thing) { throw new Error("Type " + idlType + " not found"); } - if (thing instanceof IdlEnum) { return true; } + if (thing instanceof IdlTypedef) { + return this.is_json_type(thing.idlType); + } + // dictionaries where all of their members are JSON types if (thing instanceof IdlDictionary) { var stack = thing.get_inheritance_stack(); @@ -407,7 +410,7 @@ IdlArray.prototype.is_json_type = function(type) } return Array.from(map.values()).every(this.is_json_type, this); } - + // interface types that have a toJSON operation declared on themselves or // one of their inherited or consequential interfaces. if (thing instanceof IdlInterface) { @@ -930,7 +933,7 @@ IdlInterface.prototype.get_inheritance_stack = function() { * and B.get_inheritance_stack() should return [B, C]. * * Note: as dictionary inheritance is expressed identically by the AST, - * this works just as well for getting a stack of inherited dictionaries. + * this works just as well for getting a stack of inherited dictionaries. */ var stack = [this]; @@ -1788,10 +1791,6 @@ IdlInterface.prototype.do_member_operation_asserts = function(memberHolderObject })), "property has wrong .length"); - if (member.is_to_json_regular_operation()) { - this.test_to_json_operation(memberHolderObject, member); - } - // Make some suitable arguments var args = member.arguments.map(function(arg) { return create_suitable_object(arg.idlType); @@ -1854,7 +1853,7 @@ IdlInterface.prototype.test_to_json_operation = function(memberHolderObject, mem test(function() { var json = memberHolderObject.toJSON(); map.forEach(function(type, k) { - assert_true(k in json, "property " + k + " should be present in the output of " + this.name + ".prototype.toJSON()"); + assert_true(k in json, "property " + JSON.stringify(k) + " should be present in the output of " + this.name + ".prototype.toJSON()"); var descriptor = Object.getOwnPropertyDescriptor(json, k); assert_true(descriptor.writable, "property " + k + " should be writable"); assert_true(descriptor.configurable, "property " + k + " should be configurable"); @@ -1863,7 +1862,7 @@ IdlInterface.prototype.test_to_json_operation = function(memberHolderObject, mem delete json[k]; }, this); for (var k in json) { - assert_unreached("property " + k + " should not be present in the output of " + this.name + ".prototype.toJSON()"); + assert_unreached("property " + JSON.stringify(k) + " should not be present in the output of " + this.name + ".prototype.toJSON()"); } }.bind(this), "Test default toJSON operation of " + this.name); } else { @@ -2065,6 +2064,7 @@ IdlInterface.prototype.test_object = function(desc) : "object"; this.test_primary_interface_of(desc, obj, exception, expected_typeof); + var current_interface = this; while (current_interface) { @@ -2281,6 +2281,10 @@ IdlInterface.prototype.test_interface_of = function(desc, obj, exception, expect } }.bind(this)); } + + if (member.is_to_json_regular_operation()) { + this.test_to_json_operation(obj, member); + } } }; diff --git a/testing/web-platform/tests/resources/test/tests/idlharness/IdlArray/is_json_type.html b/testing/web-platform/tests/resources/test/tests/idlharness/IdlArray/is_json_type.html index 57f714b6637e..42f9dd52c29e 100644 --- a/testing/web-platform/tests/resources/test/tests/idlharness/IdlArray/is_json_type.html +++ b/testing/web-platform/tests/resources/test/tests/idlharness/IdlArray/is_json_type.html @@ -179,6 +179,16 @@ idl.add_untested_idls('interface Foo : Bar { };'); assert_throws(new Error(), _ => idl.is_json_type(typeFrom("Foo"))); }, "should throw for interfaces which inherit from another interface which wasn't added to the IdlArray"); + + test(function() { + var idl = new IdlArray(); + assert_true(idl.is_json_type(typedefFrom("typedef double DOMHighResTimeStamp;").idlType)); + }, 'should return true for typedefs whose source type is a JSON type'); + + test(function() { + var idl = new IdlArray(); + assert_false(idl.is_json_type(typedefFrom("typedef DataView DOMHighResTimeStamp;").idlType)); + }, 'should return false for typedefs whose source type is not a JSON type'); diff --git a/testing/web-platform/tests/resources/test/tests/idlharness/IdlInterface/test_to_json_operation.html b/testing/web-platform/tests/resources/test/tests/idlharness/IdlInterface/test_to_json_operation.html index b91f3eef5ea3..2dd93718cee7 100644 --- a/testing/web-platform/tests/resources/test/tests/idlharness/IdlInterface/test_to_json_operation.html +++ b/testing/web-platform/tests/resources/test/tests/idlharness/IdlInterface/test_to_json_operation.html @@ -13,11 +13,15 @@ + + + diff --git a/testing/web-platform/tests/streams/readable-byte-streams/brand-checks.html b/testing/web-platform/tests/streams/readable-byte-streams/brand-checks.html new file mode 100644 index 000000000000..98d2e281ffaf --- /dev/null +++ b/testing/web-platform/tests/streams/readable-byte-streams/brand-checks.html @@ -0,0 +1,10 @@ + + +brand-checks.js browser context wrapper file + + + + + + + diff --git a/testing/web-platform/tests/streams/readable-byte-streams/brand-checks.js b/testing/web-platform/tests/streams/readable-byte-streams/brand-checks.js new file mode 100644 index 000000000000..702c6530165c --- /dev/null +++ b/testing/web-platform/tests/streams/readable-byte-streams/brand-checks.js @@ -0,0 +1,194 @@ +'use strict'; + +if (self.importScripts) { + self.importScripts('../resources/test-utils.js'); + self.importScripts('/resources/testharness.js'); +} + +let ReadableStreamBYOBReader; +let ReadableByteStreamController; + +test(() => { + + // It's not exposed globally, but we test a few of its properties here. + ReadableStreamBYOBReader = realRSBYOBReader().constructor; + + assert_equals(ReadableStreamBYOBReader.name, 'ReadableStreamBYOBReader', 'ReadableStreamBYOBReader should be set'); + +}, 'Can get the ReadableStreamBYOBReader constructor indirectly'); + +test(() => { + + // It's not exposed globally, but we test a few of its properties here. + ReadableByteStreamController = realRBSController().constructor; + + assert_equals(ReadableByteStreamController.name, 'ReadableByteStreamController', + 'ReadableByteStreamController should be set'); + +}, 'Can get the ReadableByteStreamController constructor indirectly'); + +function fakeRS() { + return Object.setPrototypeOf({ + cancel() { return Promise.resolve(); }, + getReader() { return realRSBYOBReader(); }, + pipeThrough(obj) { return obj.readable; }, + pipeTo() { return Promise.resolve(); }, + tee() { return [realRS(), realRS()]; } + }, ReadableStream.prototype); +} + +function realRS() { + return new ReadableStream(); +} + +function fakeRSBYOBReader() { + return Object.setPrototypeOf({ + get closed() { return Promise.resolve(); }, + cancel() { return Promise.resolve(); }, + read() { return Promise.resolve({ value: undefined, done: true }); }, + releaseLock() { return; } + }, ReadableStreamBYOBReader.prototype); +} + +function realRSBYOBReader() { + return new ReadableStream({ type: 'bytes' }).getReader({ mode: 'byob' }); +} + +function fakeRBSController() { + return Object.setPrototypeOf({ + close() { }, + enqueue() { }, + error() { } + }, ReadableByteStreamController.prototype); +} + +function realRBSController() { + let controller; + new ReadableStream({ + start(c) { + controller = c; + }, + type: 'bytes' + }); + return controller; +} + +test(() => { + + assert_throws(new TypeError(), () => new ReadableStreamBYOBReader(fakeRS()), 'constructor should throw'); + +}, 'ReadableStreamBYOBReader enforces a brand check on its argument'); + +promise_test(t => { + + return getterRejectsForAll(t, ReadableStreamBYOBReader.prototype, 'closed', + [fakeRSBYOBReader(), realRS(), realRBSController(), undefined, null]); + +}, 'ReadableStreamBYOBReader.prototype.closed enforces a brand check'); + +promise_test(t => { + + return methodRejectsForAll(t, ReadableStreamBYOBReader.prototype, 'cancel', + [fakeRSBYOBReader(), realRS(), realRBSController(), undefined, null]); + +}, 'ReadableStreamBYOBReader.prototype.cancel enforces a brand check'); + +promise_test(t => { + + return methodRejectsForAll(t, ReadableStreamBYOBReader.prototype, 'read', + [fakeRSBYOBReader(), realRS(), realRBSController(), undefined, null], [new Uint8Array(1)]); + +}, 'ReadableStreamBYOBReader.prototype.read enforces a brand check'); + +test(() => { + + methodThrowsForAll(ReadableStreamBYOBReader.prototype, 'releaseLock', + [fakeRSBYOBReader(), realRS(), realRBSController(), undefined, null]); + +}, 'ReadableStreamBYOBReader.prototype.releaseLock enforces a brand check'); + +test(() => { + + assert_throws(new TypeError(), () => new ReadableByteStreamController(fakeRS()), + 'Constructing a ReadableByteStreamController should throw'); + +}, 'ReadableByteStreamController enforces a brand check on its arguments'); + +test(() => { + + assert_throws(new TypeError(), () => new ReadableByteStreamController(realRS()), + 'Constructing a ReadableByteStreamController should throw'); + +}, 'ReadableByteStreamController can\'t be given a fully-constructed ReadableStream'); + +test(() => { + + getterThrowsForAll(ReadableByteStreamController.prototype, 'byobRequest', + [fakeRBSController(), realRS(), realRSBYOBReader(), undefined, null]); + +}, 'ReadableByteStreamController.prototype.byobRequest enforces a brand check'); + +test(() => { + + methodThrowsForAll(ReadableByteStreamController.prototype, 'close', + [fakeRBSController(), realRS(), realRSBYOBReader(), undefined, null]); + +}, 'ReadableByteStreamController.prototype.close enforces a brand check'); + +test(() => { + + methodThrowsForAll(ReadableByteStreamController.prototype, 'enqueue', + [fakeRBSController(), realRS(), realRSBYOBReader(), undefined, null], [new Uint8Array(1)]); + +}, 'ReadableByteStreamController.prototype.enqueue enforces a brand check'); + +test(() => { + + methodThrowsForAll(ReadableByteStreamController.prototype, 'error', + [fakeRBSController(), realRS(), realRSBYOBReader(), undefined, null]); + +}, 'ReadableByteStreamController.prototype.error enforces a brand check'); + +// ReadableStreamBYOBRequest can only be accessed asynchronously, so cram everything into one test. +promise_test(t => { + + let ReadableStreamBYOBRequest; + const rs = new ReadableStream({ + pull(controller) { + return t.step(() => { + const byobRequest = controller.byobRequest; + ReadableStreamBYOBRequest = byobRequest.constructor; + brandChecks(); + byobRequest.respond(1); + }); + }, + type: 'bytes' + }); + const reader = rs.getReader({ mode: 'byob' }); + return reader.read(new Uint8Array(1)); + + function fakeRSBYOBRequest() { + return Object.setPrototypeOf({ + get view() {}, + respond() {}, + respondWithNewView() {} + }, ReadableStreamBYOBRequest.prototype); + } + + function brandChecks() { + for (const badController of [fakeRBSController(), realRS(), realRSBYOBReader(), undefined, null]) { + assert_throws(new TypeError(), () => new ReadableStreamBYOBRequest(badController, new Uint8Array(1)), + 'ReadableStreamBYOBRequest constructor must throw for an invalid controller argument'); + } + getterThrowsForAll(ReadableStreamBYOBRequest.prototype, 'view', + [fakeRSBYOBRequest(), realRS(), realRSBYOBReader(), realRBSController(), undefined, null]); + methodThrowsForAll(ReadableStreamBYOBRequest.prototype, 'respond', + [fakeRSBYOBRequest(), realRS(), realRSBYOBReader(), realRBSController(), undefined, null], [1]); + methodThrowsForAll(ReadableStreamBYOBRequest.prototype, 'respondWithNewView', + [fakeRSBYOBRequest(), realRS(), realRSBYOBReader(), realRBSController(), undefined, null], + [new Uint8Array(1)]); + } + +}, 'ReadableStreamBYOBRequest enforces brand checks'); + +done(); diff --git a/testing/web-platform/tests/streams/readable-byte-streams/brand-checks.serviceworker.https.html b/testing/web-platform/tests/streams/readable-byte-streams/brand-checks.serviceworker.https.html new file mode 100644 index 000000000000..2439cdb95e98 --- /dev/null +++ b/testing/web-platform/tests/streams/readable-byte-streams/brand-checks.serviceworker.https.html @@ -0,0 +1,12 @@ + + +brand-checks.js service worker wrapper file + + + + + + diff --git a/testing/web-platform/tests/streams/readable-byte-streams/brand-checks.sharedworker.html b/testing/web-platform/tests/streams/readable-byte-streams/brand-checks.sharedworker.html new file mode 100644 index 000000000000..cff72eca4634 --- /dev/null +++ b/testing/web-platform/tests/streams/readable-byte-streams/brand-checks.sharedworker.html @@ -0,0 +1,11 @@ + + +brand-checks.js shared worker wrapper file + + + + + diff --git a/testing/web-platform/tests/streams/resources/test-utils.js b/testing/web-platform/tests/streams/resources/test-utils.js index 00ca56aa6f50..4c58e75f784f 100644 --- a/testing/web-platform/tests/streams/resources/test-utils.js +++ b/testing/web-platform/tests/streams/resources/test-utils.js @@ -33,6 +33,7 @@ self.getterThrowsForAll = (obj, getterName, targets) => { self.methodThrows = (obj, methodName, target, args) => { const method = obj[methodName]; + assert_equals(typeof method, 'function', methodName + ' should exist'); assert_throws(new TypeError(), () => method.apply(target, args), methodName + ' should throw a TypeError'); }; diff --git a/testing/web-platform/tests/tools/ci/ci_stability.sh b/testing/web-platform/tests/tools/ci/ci_stability.sh index c83dad34d013..1b814ee58e36 100644 --- a/testing/web-platform/tests/tools/ci/ci_stability.sh +++ b/testing/web-platform/tests/tools/ci/ci_stability.sh @@ -8,7 +8,7 @@ cd $WPT_ROOT source tools/ci/lib.sh test_stability() { - ./wpt check-stability $PRODUCT --output-bytes $((1024 * 1024 * 3)) --metadata ~/meta/ + ./wpt check-stability $PRODUCT --output-bytes $((1024 * 1024 * 3)) --metadata ~/meta/ --install-fonts } main() { diff --git a/testing/web-platform/tests/tools/wptrunner/wptrunner/browsers/sauce.py b/testing/web-platform/tests/tools/wptrunner/wptrunner/browsers/sauce.py index a2f29a4c54f3..c38dd0b289d8 100644 --- a/testing/web-platform/tests/tools/wptrunner/wptrunner/browsers/sauce.py +++ b/testing/web-platform/tests/tools/wptrunner/wptrunner/browsers/sauce.py @@ -161,7 +161,7 @@ class SauceConnect(): if self.sc_process.returncode is not None and self.sc_process.returncode > 0: raise SauceException("Unable to start Sauce Connect Proxy. Process exited with code %s", self.sc_process.returncode) - def __exit__(self, *args): + def __exit__(self, exc_type, exc_val, exc_tb): self.sc_process.terminate() if os.path.exists(self.temp_dir): try: diff --git a/testing/web-platform/tests/tools/wptrunner/wptrunner/environment.py b/testing/web-platform/tests/tools/wptrunner/wptrunner/environment.py index 167da95159f8..73b54ceb9f3a 100644 --- a/testing/web-platform/tests/tools/wptrunner/wptrunner/environment.py +++ b/testing/web-platform/tests/tools/wptrunner/wptrunner/environment.py @@ -117,7 +117,7 @@ class TestEnvironment(object): for port, server in servers: server.kill() for cm in self.env_extras: - cm.__exit__() + cm.__exit__(exc_type, exc_val, exc_tb) self.cache_manager.__exit__(exc_type, exc_val, exc_tb) self.ssl_env.__exit__(exc_type, exc_val, exc_tb) self.stash.__exit__() diff --git a/testing/web-platform/tests/tools/wptrunner/wptrunner/font.py b/testing/web-platform/tests/tools/wptrunner/wptrunner/font.py new file mode 100644 index 000000000000..fdf1b1249e24 --- /dev/null +++ b/testing/web-platform/tests/tools/wptrunner/wptrunner/font.py @@ -0,0 +1,110 @@ +import ctypes +import logging +import os +import platform + +from shutil import copy2, rmtree +from subprocess import call + +HERE = os.path.split(__file__)[0] +SYSTEM = platform.system().lower() + + +class FontInstaller(object): + def __init__(self, font_dir=None, **fonts): + self.font_dir = font_dir + self.installed_fonts = False + self.created_dir = False + self.fonts = fonts + + def __enter__(self, options=None): + for _, font_path in self.fonts.items(): + font_name = font_path.split('/')[-1] + install = getattr(self, 'install_%s_font' % SYSTEM, None) + if not install: + logging.warning('Font installation not supported on %s', + SYSTEM) + return False + if install(font_name, font_path): + self.installed_fonts = True + logging.info('Installed font: %s', font_name) + else: + logging.warning('Unable to install font: %s', font_name) + + def __exit__(self, exc_type, exc_val, exc_tb): + if not self.installed_fonts: + return False + + for _, font_path in self.fonts.items(): + font_name = font_path.split('/')[-1] + remove = getattr(self, 'remove_%s_font' % SYSTEM, None) + if not remove: + logging.warning('Font removal not supported on %s', SYSTEM) + return False + if remove(font_name, font_path): + logging.info('Removed font: %s', font_name) + else: + logging.warning('Unable to remove font: %s', font_name) + + def install_linux_font(self, font_name, font_path): + if not self.font_dir: + self.font_dir = os.path.join(os.path.expanduser('~'), '.fonts') + if not os.path.exists(self.font_dir): + os.makedirs(self.font_dir) + self.created_dir = True + if not os.path.exists(os.path.join(self.font_dir, font_name)): + copy2(font_path, self.font_dir) + try: + fc_cache_returncode = call('fc-cache') + return not fc_cache_returncode + except OSError: # If fontconfig doesn't exist, return False + logging.error('fontconfig not available on this Linux system.') + return False + + def install_darwin_font(self, font_name, font_path): + if not self.font_dir: + self.font_dir = os.path.join(os.path.expanduser('~'), + 'Library/Fonts') + if not os.path.exists(self.font_dir): + os.makedirs(self.font_dir) + self.created_dir = True + if not os.path.exists(os.path.join(self.font_dir, font_name)): + copy2(font_path, self.font_dir) + return True + + def install_windows_font(self, _, font_path): + hwnd_broadcast = 0xFFFF + wm_fontchange = 0x001D + + gdi32 = ctypes.WinDLL('gdi32') + if gdi32.AddFontResourceW(font_path): + return bool(ctypes.windll.user32.SendMessageW(hwnd_broadcast, + wm_fontchange)) + + def remove_linux_font(self, font_name, _): + if self.created_dir: + rmtree(self.font_dir) + else: + os.remove('%s/%s' % (self.font_dir, font_name)) + try: + fc_cache_returncode = call('fc-cache') + return not fc_cache_returncode + except OSError: # If fontconfig doesn't exist, return False + logging.error('fontconfig not available on this Linux system.') + return False + + def remove_darwin_font(self, font_name, _): + if self.created_dir: + rmtree(self.font_dir) + else: + os.remove(os.path.join(self.font_dir, font_name)) + return True + + def remove_windows_font(self, _, font_path): + hwnd_broadcast = 0xFFFF + wm_fontchange = 0x001D + + gdi32 = ctypes.WinDLL('gdi32') + if gdi32.RemoveFontResourceW(font_path): + return bool(ctypes.windll.user32.SendMessageW(hwnd_broadcast, + wm_fontchange)) diff --git a/testing/web-platform/tests/tools/wptrunner/wptrunner/wptcommandline.py b/testing/web-platform/tests/tools/wptrunner/wptrunner/wptcommandline.py index b3dc8b93722e..0964e6cf2d35 100644 --- a/testing/web-platform/tests/tools/wptrunner/wptrunner/wptcommandline.py +++ b/testing/web-platform/tests/tools/wptrunner/wptrunner/wptcommandline.py @@ -138,6 +138,11 @@ scheme host and port.""") default=None, help="Browser against which to run tests") config_group.add_argument("--config", action="store", type=abs_path, dest="config", help="Path to config file") + config_group.add_argument("--install-fonts", action="store_true", + default=None, + help="Allow the wptrunner to install fonts on your system") + config_group.add_argument("--font-dir", action="store", type=abs_path, dest="font_dir", + help="Path to local font installation directory", default=None) build_type = parser.add_mutually_exclusive_group() build_type.add_argument("--debug-build", dest="debug", action="store_true", diff --git a/testing/web-platform/tests/tools/wptrunner/wptrunner/wptrunner.py b/testing/web-platform/tests/tools/wptrunner/wptrunner/wptrunner.py index c8e3e545d954..9855ecc672c9 100644 --- a/testing/web-platform/tests/tools/wptrunner/wptrunner/wptrunner.py +++ b/testing/web-platform/tests/tools/wptrunner/wptrunner/wptrunner.py @@ -10,6 +10,7 @@ import testloader import wptcommandline import wptlogging import wpttest +from font import FontInstaller from testrunner import ManagerGroup from browsers.base import NullBrowser @@ -141,6 +142,12 @@ def run_tests(config, test_paths, product, **kwargs): check_args(**kwargs) + if kwargs["install_fonts"]: + env_extras.append(FontInstaller( + font_dir=kwargs["font_dir"], + ahem=os.path.join(kwargs["tests_root"], "fonts/Ahem.ttf") + )) + if "test_loader" in kwargs: run_info = wpttest.get_run_info(kwargs["run_info"], product, debug=None, extras=run_info_extras(**kwargs)) @@ -251,7 +258,6 @@ def run_tests(config, test_paths, product, **kwargs): if repeat_until_unexpected and unexpected_total > 0: break logger.suite_end() - return unexpected_total == 0 def start(**kwargs): diff --git a/testing/web-platform/tests/uievents/OWNERS b/testing/web-platform/tests/uievents/OWNERS index aa05033e7f44..dc5daae64bdd 100644 --- a/testing/web-platform/tests/uievents/OWNERS +++ b/testing/web-platform/tests/uievents/OWNERS @@ -1,2 +1,3 @@ @jdm +@NavidZ @zqzhang diff --git a/testing/web-platform/tests/url/OWNERS b/testing/web-platform/tests/url/OWNERS index 2dcd45470d0a..ed98ff26b308 100644 --- a/testing/web-platform/tests/url/OWNERS +++ b/testing/web-platform/tests/url/OWNERS @@ -1,7 +1,6 @@ @mikewest @tomalec @rubys -@zcorpan @xiaojunwu @smola @domenic diff --git a/testing/web-platform/tests/url/urltestdata.json b/testing/web-platform/tests/url/urltestdata.json index 86560b8f2f6a..3e3137bf3921 100644 --- a/testing/web-platform/tests/url/urltestdata.json +++ b/testing/web-platform/tests/url/urltestdata.json @@ -5564,6 +5564,63 @@ "search": "", "hash": "" }, + "# Windows drive letter quirk in the file slash state", + { + "input": "/c:/foo/bar", + "base": "file:///c:/baz/qux", + "href": "file:///c:/foo/bar", + "protocol": "file:", + "username": "", + "password": "", + "host": "", + "hostname": "", + "port": "", + "pathname": "/c:/foo/bar", + "search": "", + "hash": "" + }, + { + "input": "/c|/foo/bar", + "base": "file:///c:/baz/qux", + "href": "file:///c:/foo/bar", + "protocol": "file:", + "username": "", + "password": "", + "host": "", + "hostname": "", + "port": "", + "pathname": "/c:/foo/bar", + "search": "", + "hash": "" + }, + { + "input": "file:\\c:\\foo\\bar", + "base": "file:///c:/baz/qux", + "href": "file:///c:/foo/bar", + "protocol": "file:", + "username": "", + "password": "", + "host": "", + "hostname": "", + "port": "", + "pathname": "/c:/foo/bar", + "search": "", + "hash": "" + }, + { + "input": "/c:/foo/bar", + "base": "file://host/path", + "href": "file:///c:/foo/bar", + "protocol": "file:", + "username": "", + "password": "", + "host": "", + "hostname": "", + "port": "", + "pathname": "/c:/foo/bar", + "search": "", + "hash": "" + }, "# Windows drive letter quirk with not empty host", { "input": "file://example.net/C:/", diff --git a/testing/web-platform/tests/viewport/viewport-attribute-event-handlers-manual.html b/testing/web-platform/tests/viewport/viewport-attribute-event-handlers-manual.html new file mode 100644 index 000000000000..896f6cd98b3f --- /dev/null +++ b/testing/web-platform/tests/viewport/viewport-attribute-event-handlers-manual.html @@ -0,0 +1,75 @@ + + + + Viewport: Attribute event handlers test + + + + + + + + +

    Viewport: Attribute event handlers test

    +

    + Test Description: This test checks that attribute event handlers function correctly. +

    +

    THIS IS A MANUAL TEST

    +

    + +

    +

    + +
    + + + diff --git a/testing/web-platform/tests/wai-aria/tools/make_tests.pl b/testing/web-platform/tests/wai-aria/tools/make_tests.pl index 6de9c4d9dea2..06370da062f2 100644 --- a/testing/web-platform/tests/wai-aria/tools/make_tests.pl +++ b/testing/web-platform/tests/wai-aria/tools/make_tests.pl @@ -529,7 +529,8 @@ sub build_test() { $fileName =~ s/\s*$//; $fileName =~ s/\///g; $fileName =~ s/\s+/_/g; - $fileName =~ s/[",=]/_/g; + $fileName =~ s/[,=]/_/g; + $fileName =~ s/['"]//g; my $count = 2; if ($testNames->{$fileName}) { @@ -549,6 +550,7 @@ sub build_test() { $title + diff --git a/testing/web-platform/tests/webdriver/tests/state/get_element_attribute.py b/testing/web-platform/tests/webdriver/tests/state/get_element_attribute.py index f89147ea8e37..e662d95a9c78 100644 --- a/testing/web-platform/tests/webdriver/tests/state/get_element_attribute.py +++ b/testing/web-platform/tests/webdriver/tests/state/get_element_attribute.py @@ -160,7 +160,6 @@ def test_normal(session): def test_boolean_attribute(session, tag, attrs): # 13.2 Step 5 for attr in attrs: - print("testing boolean attribute <{0} {1}>".format(tag, attr)) session.url = inline("<{0} {1}>".format(tag, attr)) element = session.find.css(tag, all=False) diff --git a/testing/web-platform/tests/webdriver/tests/support/fixtures.py b/testing/web-platform/tests/webdriver/tests/support/fixtures.py index 94c89d6a2fec..f51c498274fa 100644 --- a/testing/web-platform/tests/webdriver/tests/support/fixtures.py +++ b/testing/web-platform/tests/webdriver/tests/support/fixtures.py @@ -56,7 +56,7 @@ def _dismiss_user_prompts(session): @ignore_exceptions def _restore_window_state(session): """Reset window to an acceptable size, bringing it out of maximized, - minimized, or fullscreened state. + minimized, or fullscreened state """ session.window.size = (800, 600) diff --git a/testing/web-platform/tests/webrtc/RTCConfiguration-iceCandidatePoolSize.html b/testing/web-platform/tests/webrtc/RTCConfiguration-iceCandidatePoolSize.html index f424ec600b79..2e6859d25961 100644 --- a/testing/web-platform/tests/webrtc/RTCConfiguration-iceCandidatePoolSize.html +++ b/testing/web-platform/tests/webrtc/RTCConfiguration-iceCandidatePoolSize.html @@ -26,6 +26,7 @@ dictionary RTCConfiguration { */ test(() => { const pc = new RTCPeerConnection(); + assert_idl_attribute(pc, "getConfiguration"); assert_equals(pc.getConfiguration().iceCandidatePoolSize, 0); }, "Initialize a new RTCPeerConnection with no iceCandidatePoolSize"); @@ -33,6 +34,7 @@ test(() => { const pc = new RTCPeerConnection({ iceCandidatePoolSize: 0 }); + assert_idl_attribute(pc, "getConfiguration"); assert_equals(pc.getConfiguration().iceCandidatePoolSize, 0); }, "Initialize a new RTCPeerConnection with iceCandidatePoolSize: 0"); @@ -40,6 +42,7 @@ test(() => { const pc = new RTCPeerConnection({ iceCandidatePoolSize: 255 }); + assert_idl_attribute(pc, "getConfiguration"); assert_equals(pc.getConfiguration().iceCandidatePoolSize, 255); }, "Initialize a new RTCPeerConnection with iceCandidatePoolSize: 255"); @@ -63,9 +66,11 @@ test(() => { /* Reconfiguration */ -const pc = new RTCPeerConnection({}); test(() => { + const pc = new RTCPeerConnection(); + assert_idl_attribute(pc, "getConfiguration"); + assert_idl_attribute(pc, "setConfiguration"); pc.setConfiguration({ iceCandidatePoolSize: 0 }); @@ -73,6 +78,9 @@ test(() => { }, "Reconfigure RTCPeerConnection instance iceCandidatePoolSize to 0"); test(() => { + const pc = new RTCPeerConnection(); + assert_idl_attribute(pc, "getConfiguration"); + assert_idl_attribute(pc, "setConfiguration"); pc.setConfiguration({ iceCandidatePoolSize: 255 }); @@ -88,8 +96,8 @@ been implemented). Without this check, these tests will pass incorrectly. */ test(() => { + const pc = new RTCPeerConnection(); assert_equals(typeof pc.setConfiguration, "function", "RTCPeerConnection.prototype.setConfiguration is not implemented"); - assert_throws(new TypeError(), () => { pc.setConfiguration({ iceCandidatePoolSize: -1 @@ -98,8 +106,8 @@ test(() => { }, "Reconfigure RTCPeerConnection instance iceCandidatePoolSize to -1 (Out Of Range)"); test(() => { + const pc = new RTCPeerConnection(); assert_equals(typeof pc.setConfiguration, "function", "RTCPeerConnection.prototype.setConfiguration is not implemented"); - assert_throws(new TypeError(), () => { pc.setConfiguration({ iceCandidatePoolSize: 256 diff --git a/testing/web-platform/tests/webrtc/RTCPeerConnection-createAnswer.html b/testing/web-platform/tests/webrtc/RTCPeerConnection-createAnswer.html index aebb5b973761..19b3a4537aaf 100644 --- a/testing/web-platform/tests/webrtc/RTCPeerConnection-createAnswer.html +++ b/testing/web-platform/tests/webrtc/RTCPeerConnection-createAnswer.html @@ -36,7 +36,7 @@ promise_test(t => { const pc = new RTCPeerConnection(); - return generateOffer({ video: true }) + return pc.createOffer({ offerToReceiveVideo: true }) .then(offer => pc.setRemoteDescription(offer)) .then(() => pc.createAnswer()) .then(answer => { @@ -51,7 +51,7 @@ promise_test(t => { const pc = new RTCPeerConnection(); - return generateOffer({ data: true }) + return generateOffer({ pc, data: true }) .then(offer => pc.setRemoteDescription(offer)) .then(() => { pc.close(); diff --git a/testing/web-platform/tests/webrtc/RTCPeerConnection-helper.js b/testing/web-platform/tests/webrtc/RTCPeerConnection-helper.js index 1963df158a95..5f1813f9b522 100644 --- a/testing/web-platform/tests/webrtc/RTCPeerConnection-helper.js +++ b/testing/web-platform/tests/webrtc/RTCPeerConnection-helper.js @@ -61,7 +61,7 @@ function assert_is_session_description(sessionDesc) { } assert_not_equals(sessionDesc, undefined, - 'Expect session description to be defined, but got undefined'); + 'Expect session description to be defined'); assert_true(typeof(sessionDesc) === 'object', 'Expect sessionDescription to be either a RTCSessionDescription or an object'); @@ -107,21 +107,27 @@ function assert_session_desc_not_equals(sessionDesc1, sessionDesc2) { // object with any audio, video, data media lines present function generateOffer(options={}) { const { - audio=false, - video=false, - data=false + audio = false, + video = false, + data = false, + pc, } = options; - const pc = new RTCPeerConnection(); - - if(data) { + if (data) { pc.createDataChannel('test'); } - return pc.createOffer({ - offerToReceiveAudio: audio, - offerToReceiveVideo: video - }).then(offer => { + const setup = {}; + + if (audio) { + setup.offerToReceiveAudio = true; + } + + if (video) { + setup.offerToReceiveVideo = true; + } + + return pc.createOffer(setup).then(offer => { // Guard here to ensure that the generated offer really // contain the number of media lines we want const { sdp } = offer; diff --git a/testing/web-platform/tests/webrtc/RTCPeerConnection-setLocalDescription-answer.html b/testing/web-platform/tests/webrtc/RTCPeerConnection-setLocalDescription-answer.html index 12cf9f77e6b3..99f0d48d20a8 100644 --- a/testing/web-platform/tests/webrtc/RTCPeerConnection-setLocalDescription-answer.html +++ b/testing/web-platform/tests/webrtc/RTCPeerConnection-setLocalDescription-answer.html @@ -63,7 +63,7 @@ const pc = new RTCPeerConnection(); test_state_change_event(t, pc, ['have-remote-offer', 'stable']); - return generateOffer({ video: true }) + return pc.createOffer({ offerToReceiveVideo: true }) .then(offer => pc.setRemoteDescription(offer) .then(() => pc.createAnswer()) @@ -91,7 +91,7 @@ promise_test(t => { const pc = new RTCPeerConnection(); - return generateOffer({ video: true }) + return pc.createOffer({ offerToReceiveVideo: true }) .then(offer => pc.setRemoteDescription(offer) .then(() => pc.createAnswer()) @@ -120,7 +120,7 @@ promise_test(t => { const pc = new RTCPeerConnection(); - return generateOffer({ video: true }) + return pc.createOffer({ offerToReceiveVideo: true }) .then(offer => pc.setRemoteDescription(offer) .then(() => generateAnswer(offer)) @@ -142,7 +142,7 @@ promise_test(t => { const pc = new RTCPeerConnection(); - return generateOffer() + return pc.createOffer() .then(offer => promise_rejects(t, 'InvalidStateError', pc.setLocalDescription({ type: 'answer', sdp: offer.sdp }))); diff --git a/testing/web-platform/tests/webrtc/RTCPeerConnection-setLocalDescription-offer.html b/testing/web-platform/tests/webrtc/RTCPeerConnection-setLocalDescription-offer.html index 8fcc0fb49c0a..5de04e916e6c 100644 --- a/testing/web-platform/tests/webrtc/RTCPeerConnection-setLocalDescription-offer.html +++ b/testing/web-platform/tests/webrtc/RTCPeerConnection-setLocalDescription-offer.html @@ -100,7 +100,7 @@ promise_test(t => { const pc = new RTCPeerConnection(); - return generateOffer({ data: true }) + return generateOffer({ pc, data: true }) .then(offer => promise_rejects(t, 'InvalidModificationError', pc.setLocalDescription(offer))); diff --git a/testing/web-platform/tests/webrtc/RTCPeerConnection-setLocalDescription-pranswer.html b/testing/web-platform/tests/webrtc/RTCPeerConnection-setLocalDescription-pranswer.html index 46fe8811a102..4d6b011bee65 100644 --- a/testing/web-platform/tests/webrtc/RTCPeerConnection-setLocalDescription-pranswer.html +++ b/testing/web-platform/tests/webrtc/RTCPeerConnection-setLocalDescription-pranswer.html @@ -64,7 +64,7 @@ promise_test(t => { const pc = new RTCPeerConnection(); - return generateOffer() + return pc.createOffer() .then(offer => promise_rejects(t, 'InvalidStateError', pc.setLocalDescription({ type: 'pranswer', sdp: offer.sdp }))); @@ -83,7 +83,7 @@ const pc = new RTCPeerConnection(); test_state_change_event(t, pc, ['have-remote-offer', 'have-local-pranswer']); - return generateOffer({ video: true }) + return pc.createOffer({ offerToReceiveVideo: true }) .then(offer => pc.setRemoteDescription(offer) .then(() => pc.createAnswer()) @@ -111,7 +111,7 @@ const pc = new RTCPeerConnection(); test_state_change_event(t, pc, ['have-remote-offer', 'have-local-pranswer']); - return generateOffer({ video: true }) + return pc.createOffer({ offerToReceiveVideo: true }) .then(offer => pc.setRemoteDescription(offer) .then(() => pc.createAnswer()) @@ -127,7 +127,7 @@ const pc = new RTCPeerConnection(); test_state_change_event(t, pc, ['have-remote-offer', 'have-local-pranswer', 'stable']); - return generateOffer({ video: true }) + return pc.createOffer({ offerToReceiveVideo: true }) .then(offer => pc.setRemoteDescription(offer) .then(() => pc.createAnswer()) diff --git a/testing/web-platform/tests/webrtc/RTCPeerConnection-setLocalDescription-rollback.html b/testing/web-platform/tests/webrtc/RTCPeerConnection-setLocalDescription-rollback.html index f6e3a4fb8356..5cafb1e3d2dc 100644 --- a/testing/web-platform/tests/webrtc/RTCPeerConnection-setLocalDescription-rollback.html +++ b/testing/web-platform/tests/webrtc/RTCPeerConnection-setLocalDescription-rollback.html @@ -100,7 +100,7 @@ promise_test(t => { const pc = new RTCPeerConnection(); - return generateOffer({ audio: true }) + return pc.createOffer({ offerToReceiveAudio: true }) .then(offer => pc.setRemoteDescription(offer) .then(() => pc.createAnswer())) diff --git a/testing/web-platform/tests/webrtc/RTCPeerConnection-setLocalDescription.html b/testing/web-platform/tests/webrtc/RTCPeerConnection-setLocalDescription.html index a347db687fa8..72685bd7b096 100644 --- a/testing/web-platform/tests/webrtc/RTCPeerConnection-setLocalDescription.html +++ b/testing/web-platform/tests/webrtc/RTCPeerConnection-setLocalDescription.html @@ -73,7 +73,7 @@ test_state_change_event(t, pc, ['have-remote-offer', 'stable', 'have-local-offer']); - return generateOffer({ data: true }) + return generateOffer({ pc, data: true }) .then(offer => pc.setRemoteDescription(offer)) .then(() => pc.createAnswer()) .then(answer => diff --git a/testing/web-platform/tests/webrtc/RTCPeerConnection-setRemoteDescription-answer.html b/testing/web-platform/tests/webrtc/RTCPeerConnection-setRemoteDescription-answer.html index 1ec291539738..75bbec80c283 100644 --- a/testing/web-platform/tests/webrtc/RTCPeerConnection-setRemoteDescription-answer.html +++ b/testing/web-platform/tests/webrtc/RTCPeerConnection-setRemoteDescription-answer.html @@ -95,7 +95,7 @@ promise_test(t => { const pc = new RTCPeerConnection(); - return generateOffer() + return pc.createOffer() .then(offer => promise_rejects(t, 'InvalidStateError', pc.setRemoteDescription({ type: 'answer', sdp: offer.sdp }))); @@ -104,7 +104,7 @@ promise_test(t => { const pc = new RTCPeerConnection(); - return generateOffer() + return pc.createOffer() .then(offer => pc.setRemoteDescription(offer) .then(() => generateAnswer(offer))) diff --git a/testing/web-platform/tests/webrtc/RTCPeerConnection-setRemoteDescription-offer.html b/testing/web-platform/tests/webrtc/RTCPeerConnection-setRemoteDescription-offer.html index 7dbcb3a8a8cb..133199a55c52 100644 --- a/testing/web-platform/tests/webrtc/RTCPeerConnection-setRemoteDescription-offer.html +++ b/testing/web-platform/tests/webrtc/RTCPeerConnection-setRemoteDescription-offer.html @@ -55,7 +55,7 @@ test_state_change_event(t, pc, ['have-remote-offer']); - return generateOffer({ data: true }) + return generateOffer({ pc, data: true }) .then(offer => pc.setRemoteDescription(offer) .then(() => { @@ -73,8 +73,8 @@ test_state_change_event(t, pc, ['have-remote-offer']); return Promise.all([ - generateOffer({ audio: true }), - generateOffer({ data: true }) + pc.createOffer({ offerToReceiveAudio: true }), + generateOffer({ pc, data: true }) ]).then(([offer1, offer2]) => pc.setRemoteDescription(offer1) .then(() => pc.setRemoteDescription(offer2)) @@ -126,7 +126,7 @@ return pc.createOffer() .then(offer => pc.setLocalDescription(offer)) - .then(() => generateOffer()) + .then(() => pc.createOffer()) .then(offer2 => promise_rejects(t, 'InvalidStateError', pc.setRemoteDescription(offer2))); diff --git a/testing/web-platform/tests/webrtc/RTCPeerConnection-setRemoteDescription-pranswer.html b/testing/web-platform/tests/webrtc/RTCPeerConnection-setRemoteDescription-pranswer.html index 443178f93998..521290fc9554 100644 --- a/testing/web-platform/tests/webrtc/RTCPeerConnection-setRemoteDescription-pranswer.html +++ b/testing/web-platform/tests/webrtc/RTCPeerConnection-setRemoteDescription-pranswer.html @@ -64,7 +64,7 @@ promise_test(t => { const pc = new RTCPeerConnection(); - return generateOffer() + return pc.createOffer() .then(offer => promise_rejects(t, 'InvalidStateError', pc.setRemoteDescription({ type: 'pranswer', sdp: offer.sdp }))); diff --git a/testing/web-platform/tests/webrtc/RTCPeerConnection-setRemoteDescription-rollback.html b/testing/web-platform/tests/webrtc/RTCPeerConnection-setRemoteDescription-rollback.html index ed3c280e2bed..931a25f92b0b 100644 --- a/testing/web-platform/tests/webrtc/RTCPeerConnection-setRemoteDescription-rollback.html +++ b/testing/web-platform/tests/webrtc/RTCPeerConnection-setRemoteDescription-rollback.html @@ -100,7 +100,7 @@ promise_test(t => { const pc = new RTCPeerConnection(); - return generateOffer({ audio: true }) + return pc.createOffer({ offerToReceiveAudio: true }) .then(offer => pc.setRemoteDescription(offer)) .then(() => pc.setRemoteDescription({ type: 'rollback', diff --git a/testing/web-platform/tests/webrtc/RTCPeerConnection-setRemoteDescription.html b/testing/web-platform/tests/webrtc/RTCPeerConnection-setRemoteDescription.html index f01fe08859b7..2efd30190031 100644 --- a/testing/web-platform/tests/webrtc/RTCPeerConnection-setRemoteDescription.html +++ b/testing/web-platform/tests/webrtc/RTCPeerConnection-setRemoteDescription.html @@ -109,7 +109,7 @@ .then(() => generateAnswer(offer))) .then(answer => pc.setRemoteDescription(answer) - .then(() => generateOffer({ data: true })) + .then(() => generateOffer({ pc, data: true })) .then(offer => pc.setRemoteDescription(offer) .then(() => { diff --git a/testing/web-platform/tests/webrtc/RTCSctpTransport-constructor.html b/testing/web-platform/tests/webrtc/RTCSctpTransport-constructor.html index 16b11e3a65ba..347aa0ef4bd2 100644 --- a/testing/web-platform/tests/webrtc/RTCSctpTransport-constructor.html +++ b/testing/web-platform/tests/webrtc/RTCSctpTransport-constructor.html @@ -67,7 +67,7 @@ const pc = new RTCPeerConnection(); assert_equals(pc.sctp, null); - return generateOffer({ data: true }) + return generateOffer({ pc, data: true }) .then(offer => pc.setRemoteDescription(offer)) .then(() => pc.createAnswer()) .then(answer => pc.setLocalDescription(answer)) diff --git a/testing/web-platform/tests/websockets/OWNERS b/testing/web-platform/tests/websockets/OWNERS index 705040182a27..074b077829e3 100644 --- a/testing/web-platform/tests/websockets/OWNERS +++ b/testing/web-platform/tests/websockets/OWNERS @@ -1,5 +1,4 @@ @kristijanburnik -@zcorpan @zqzhang @Jxck @jdm diff --git a/testing/web-platform/tests/websockets/constructor/010.html b/testing/web-platform/tests/websockets/constructor/010.html index 95ec83d19dc0..aee4d78af991 100644 --- a/testing/web-platform/tests/websockets/constructor/010.html +++ b/testing/web-platform/tests/websockets/constructor/010.html @@ -9,14 +9,13 @@ - diff --git a/testing/web-platform/tests/websockets/constructor/011.html b/testing/web-platform/tests/websockets/constructor/011.html index 6f55bc0eab4f..f7a2b99b8307 100644 --- a/testing/web-platform/tests/websockets/constructor/011.html +++ b/testing/web-platform/tests/websockets/constructor/011.html @@ -8,20 +8,20 @@
    diff --git a/testing/web-platform/tests/webstorage/storage_enumerate.html b/testing/web-platform/tests/webstorage/storage_enumerate.html index 1586f7a61288..d8f4253148aa 100644 --- a/testing/web-platform/tests/webstorage/storage_enumerate.html +++ b/testing/web-platform/tests/webstorage/storage_enumerate.html @@ -34,6 +34,33 @@ assert_array_equals(enumeratedArray, expectArray); }, name + ": enumerate a Storage object and get only the keys as a result and the built-in properties of the Storage object should be ignored"); + + test(function() { + const storage = window[name]; + storage.clear(); + + storage.setItem("foo", "bar"); + storage.baz = "quux"; + storage.setItem(0, "alpha"); + storage[42] = "beta"; + + for (let prop in storage) { + if (!storage.hasOwnProperty(prop)) + continue; + const desc = Object.getOwnPropertyDescriptor(storage, prop); + assert_true(desc.configurable); + assert_true(desc.enumerable); + assert_true(desc.writable); + } + + const keys = Object.keys(storage); + keys.sort(); // Storage order is implementation-defined. + assert_array_equals(keys, ["0", "42", "baz", "foo"]); + + const values = Object.values(storage); + values.sort(); // Storage order is implementation-defined. + assert_array_equals(values, ["alpha", "bar", "beta", "quux"]); + }, name + ": test enumeration of numeric and non-numeric keys"); }); diff --git a/testing/web-platform/tests/webvr/idlharness.html b/testing/web-platform/tests/webvr/idlharness.html index b7158117c609..ecb89f37565e 100644 --- a/testing/web-platform/tests/webvr/idlharness.html +++ b/testing/web-platform/tests/webvr/idlharness.html @@ -87,11 +87,11 @@ interface VRDisplay : EventTarget { /** * Begin presenting to the VRDisplay. Must be called in response to a user gesture. - * Repeat calls while already presenting will update the VRLayers being displayed. + * Repeat calls while already presenting will update the layers being displayed. * If the number of values in the leftBounds/rightBounds arrays is not 0 or 4 for any of the passed layers the promise is rejected * If the source of any of the layers is not present (null), the promise is rejected. */ - Promise requestPresent(sequence layers); + Promise requestPresent(sequence layers); /** * Stops presenting to the VRDisplay. @@ -101,10 +101,10 @@ interface VRDisplay : EventTarget { /** * Get the layers currently being presented. */ - sequence getLayers(); + sequence getLayers(); /** - * The VRLayer provided to the VRDisplay will be captured and presented + * The layer provided to the VRDisplay will be captured and presented * in the HMD. Calling this function has the same effect on the source * canvas as any other operation that uses its source image, and canvases * created without preserveDrawingBuffer set to true will be cleared. @@ -115,7 +115,7 @@ interface VRDisplay : EventTarget { typedef (HTMLCanvasElement or OffscreenCanvas) VRSource; -dictionary VRLayer { +dictionary VRLayerInit { VRSource? source = null; sequence leftBounds = []; diff --git a/testing/web-platform/tests/webvtt/OWNERS b/testing/web-platform/tests/webvtt/OWNERS index fb085bbd5465..60dda3bacc2d 100644 --- a/testing/web-platform/tests/webvtt/OWNERS +++ b/testing/web-platform/tests/webvtt/OWNERS @@ -1,3 +1,2 @@ @silviapfeiffer -@zcorpan @BenjaminSchaaf diff --git a/testing/web-platform/tests/webvtt/parsing/cue-text-parsing/dat/entities.dat b/testing/web-platform/tests/webvtt/parsing/cue-text-parsing/dat/entities.dat index 8f5e99d6897d..6522e3f5b8d1 100644 --- a/testing/web-platform/tests/webvtt/parsing/cue-text-parsing/dat/entities.dat +++ b/testing/web-platform/tests/webvtt/parsing/cue-text-parsing/dat/entities.dat @@ -147,4 +147,4 @@ a‏b ¬it; #errors #document-fragment -| "\u00ACit" +| "\u00ACit;" diff --git a/testing/web-platform/tests/webvtt/parsing/cue-text-parsing/tests/entities.html b/testing/web-platform/tests/webvtt/parsing/cue-text-parsing/tests/entities.html index 9f70cd1ab000..dbae784de1e1 100644 --- a/testing/web-platform/tests/webvtt/parsing/cue-text-parsing/tests/entities.html +++ b/testing/web-platform/tests/webvtt/parsing/cue-text-parsing/tests/entities.html @@ -34,6 +34,6 @@ runTests([ {name:'9ed59950764468c4ef2948d71cf75c3f2b60c74d', input:'%26notin%3B', expected:'%23document-fragment%0A%7C%20%22%E2%88%89%22'}, {name:'71a6efcfab81264fb95bb3234c59687c11c72baf', input:'%26not%3B', expected:'%23document-fragment%0A%7C%20%22%C2%AC%22'}, {name:'86d7c20ca3c060f9e699c7da43927c4a07a5d569', input:'%26not', expected:'%23document-fragment%0A%7C%20%22%C2%AC%22'}, -{name:'314cd94292df37044e90ce27b5606bf8ec636b94', input:'%26notit%3B', expected:'%23document-fragment%0A%7C%20%22%C2%ACit%22'} +{name:'314cd94292df37044e90ce27b5606bf8ec636b94', input:'%26notit%3B', expected:'%23document-fragment%0A%7C%20%22%C2%ACit%3B%22'} ]); diff --git a/testing/web-platform/tests/workers/OWNERS b/testing/web-platform/tests/workers/OWNERS index f7dee93e615d..066bbc500fba 100644 --- a/testing/web-platform/tests/workers/OWNERS +++ b/testing/web-platform/tests/workers/OWNERS @@ -1,6 +1,5 @@ @zqzhang @chunywang -@zcorpan @caitp @jdm @annevk diff --git a/testing/web-platform/tests/workers/worker-performance.worker.js b/testing/web-platform/tests/workers/worker-performance.worker.js new file mode 100644 index 000000000000..c4e562b68ebe --- /dev/null +++ b/testing/web-platform/tests/workers/worker-performance.worker.js @@ -0,0 +1,128 @@ +"use strict"; + +// Tests that most of the functionality of the window.performance object is available in web workers. + +importScripts("/resources/testharness.js"); + +function verifyEntry (entry, name, type, duration, assertName) { + assert_equals(entry.name, name, assertName + " has the right name"); + assert_equals(entry.entryType, type, assertName + " has the right type"); + assert_equals(entry.duration, duration, assertName + "has the right duration"); +} + +var start; +test(function testPerformanceNow () { + start = performance.now(); +}, "Can use performance.now in workers"); + +test(function testPerformanceMark () { + performance.mark("mark1"); + // Stall the minimum amount of time to ensure the marks are separate + var now = performance.now(); + while (performance.now() == now) { } + performance.mark("mark2"); +}, "Can use performance.mark in workers"); + +test(function testPerformanceMeasure () { + performance.measure("measure1", "mark1", "mark2"); +}, "Can use performance.measure in workers"); + +test(function testPerformanceGetEntriesByName () { + var mark1s = performance.getEntriesByName("mark1"); + assert_equals(mark1s.length, 1, "getEntriesByName gave correct number of entries"); + verifyEntry(mark1s[0], "mark1", "mark", 0, "Entry got by name"); +}, "Can use performance.getEntriesByName in workers"); + +var marks; +var measures; +test(function testPerformanceGetEntriesByType () { + marks = performance.getEntriesByType("mark"); + assert_equals(marks.length, 2, "getEntriesByType gave correct number of entries"); + verifyEntry(marks[0], "mark1", "mark", 0, "First mark entry"); + verifyEntry(marks[1], "mark2", "mark", 0, "Second mark entry"); + measures = performance.getEntriesByType("measure"); + assert_equals(measures.length, 1, "getEntriesByType(\"measure\") gave correct number of entries"); + verifyEntry(measures[0], "measure1", "measure", marks[1].startTime - marks[0].startTime, "Measure entry"); +}, "Can use performance.getEntriesByType in workers"); + +test(function testPerformanceEntryOrder () { + assert_greater_than(marks[0].startTime, start, "First mark startTime is after a time before it"); + assert_greater_than(marks[1].startTime, marks[0].startTime, "Second mark startTime is after first mark startTime"); + assert_equals(measures[0].startTime, marks[0].startTime, "measure's startTime is the first mark's startTime"); +}, "Performance marks and measures seem to be working correctly in workers"); + +test(function testPerformanceClearing () { + performance.clearMarks(); + assert_equals(performance.getEntriesByType("mark").length, 0, "clearMarks cleared the marks"); + performance.clearMeasures(); + assert_equals(performance.getEntriesByType("measure").length, 0, "clearMeasures cleared the measures"); +}, "Can use clearMarks and clearMeasures in workers"); + +test(function testPerformanceResourceTiming () { // Resource timing + var start = performance.now(); + var xhr = new XMLHttpRequest(); + // Do a synchronous request and add a little artificial delay + xhr.open("GET", "/resources/testharness.js?pipe=trickle(d0.25)", false); + xhr.send(); + // The browser might or might not have added a resource performance entry for the importScripts() above; we're only interested in xmlhttprequest entries + var entries = performance.getEntriesByType("resource").filter(entry => entry.initiatorType == "xmlhttprequest"); + assert_equals(entries.length, 1, "getEntriesByType(\"resource\") returns one entry with initiatorType of xmlhttprequest"); + assert_true(!!entries[0].name.match(/\/resources\/testharness.js/), "Resource entry has loaded url as its name"); + assert_equals(entries[0].entryType, "resource", "Resource entry has correct entryType"); + assert_equals(entries[0].initiatorType, "xmlhttprequest", "Resource entry has correct initiatorType"); + var currentTimestamp = start; + var currentTimestampName = "a time before it"; + [ + "startTime", "fetchStart", "requestStart", "responseStart", "responseEnd" + ].forEach((name) => { + var timestamp = entries[0][name]; + // We want to skip over values that are 0 because of TAO securty rescritions + // Or else this test will fail. This can happen for "requestStart", "responseStart". + if (timestamp != 0) { + assert_greater_than_equal(timestamp, currentTimestamp, "Resource entry " + name + " is after " + currentTimestampName); + currentTimestamp = timestamp; + currentTimestampName = name; + } + }); + assert_greater_than(entries[0].responseEnd, entries[0].startTime, "The resource request should have taken at least some time"); + // We requested a delay of 250ms, but it could be a little bit less, and could be significantly more. + assert_greater_than(entries[0].responseEnd - entries[0].responseStart, 230, "Resource timing numbers reflect reality somewhat"); +}, "Resource timing seems to work in workers"); + +test(function testPerformanceClearResourceTimings () { + performance.clearResourceTimings(); + assert_equals(performance.getEntriesByType("resource").length, 0, "clearResourceTimings cleared the resource timings"); +}, "performance.clearResourceTimings in workers"); + +test(function testPerformanceSetResourceTimingBufferSize () { + performance.setResourceTimingBufferSize(0); + var xhr = new XMLHttpRequest(); + xhr.open("GET", "/resources/testharness.js", false); // synchronous request + xhr.send(); + assert_equals(performance.getEntriesByType("resource").length, 0, "setResourceTimingBufferSize(0) prevents resource entries from being added"); +}, "performance.setResourceTimingBufferSize in workers"); + +test(function testPerformanceHasNoTiming () { + assert_equals(typeof(performance.timing), "undefined", "performance.timing is undefined"); +}, "performance.timing is not available in workers"); + +test(function testPerformanceHasNoNavigation () { + assert_equals(typeof(performance.navigation), "undefined", "performance.navigation is undefined"); +}, "performance.navigation is not available in workers"); + +test(function testPerformanceHasNoToJSON () { + assert_equals(typeof(performance.toJSON), "undefined", "performance.toJSON is undefined"); +}, "performance.toJSON is not available in workers"); + +test(function testPerformanceNoNavigationEntries () { + assert_equals(performance.getEntriesByType("navigation").length, 0, "getEntriesByType(\"navigation\") returns nothing"); + assert_equals(performance.getEntriesByName("document", "navigation").length, 0, "getEntriesByName(\"document\", \"navigation\") returns nothing"); + assert_equals(performance.getEntriesByName("document").length, 0, "getEntriesByName(\"document\") returns nothing"); + var hasNavigation = performance.getEntries().some((e,i,a) => { + return e.entryType == "navigation"; + }); + assert_false(hasNavigation, "getEntries should return no navigation entries."); + +}, "There are no navigation type performance entries in workers"); + +done(); From 305844a08867f7e197a81483a2baea4875eb58a9 Mon Sep 17 00:00:00 2001 From: James Graham Date: Wed, 20 Sep 2017 15:49:06 +0100 Subject: [PATCH 02/56] Bug 1402002 - Update wpt metadata, a=testonly MozReview-Commit-ID: 7GKOdY3zJ1G --HG-- rename : testing/web-platform/meta/css-font-display/font-display.html.ini => testing/web-platform/meta/css-fonts/font-display/font-display.html.ini rename : testing/web-platform/meta/payment-request/payment-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html.ini => testing/web-platform/meta/feature-policy/payment-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html.ini rename : testing/web-platform/meta/payment-request/payment-allowed-by-feature-policy-attribute.https.sub.html.ini => testing/web-platform/meta/feature-policy/payment-allowed-by-feature-policy-attribute.https.sub.html.ini rename : testing/web-platform/meta/payment-request/payment-allowed-by-feature-policy.https.sub.html.ini => testing/web-platform/meta/feature-policy/payment-allowed-by-feature-policy.https.sub.html.ini rename : testing/web-platform/meta/payment-request/payment-default-feature-policy.https.sub.html.ini => testing/web-platform/meta/feature-policy/payment-default-feature-policy.https.sub.html.ini rename : testing/web-platform/meta/payment-request/payment-disabled-by-feature-policy.https.sub.html.ini => testing/web-platform/meta/feature-policy/payment-disabled-by-feature-policy.https.sub.html.ini --- .../meta/FileAPI/idlharness.worker.js.ini | 1 + ...ic-cors-safelisted-request-headers.htm.ini | 5 + .../meta/XMLHttpRequest/data-uri.htm.ini | 1 + ...send-after-setting-document-domain.htm.ini | 3 + .../send-response-event-order.htm.ini | 1 + .../accelerometer/idlharness.https.html.ini | 99 ++++++++ .../ambient-light/idlharness.https.html.ini | 57 +++++ ...ontent-security-policy.https.window.js.ini | 5 + .../credentials-in-url.https.window.js.ini | 14 + .../dangling-markup.https.window.js.ini | 5 + ...nt-and-allowed-schemes.https.window.js.ini | 38 +++ .../port-blocking.https.window.js.ini | 20 ++ ...t-src-applet-archive-codebase.sub.html.ini | 11 - .../object-src-applet-archive.sub.html.ini | 11 - ...ject-src-applet-code-codebase.sub.html.ini | 11 - .../object-src-applet-code.sub.html.ini | 11 - .../font-display}/font-display.html.ini | 0 .../parse-input-arguments-019.html.ini | 3 + .../parse-input-arguments-020.html.ini | 3 + .../parse-input-arguments-021.html.ini | 3 + .../parse-input-arguments-022.html.ini | 3 + .../attribute-value-selector-002.xht.ini | 3 - ...alignment-implies-size-change-007.html.ini | 5 + ...alignment-implies-size-change-009.html.ini | 5 + ...alignment-implies-size-change-017.html.ini | 5 + ...alignment-implies-size-change-025.html.ini | 5 + ...alignment-implies-size-change-027.html.ini | 5 + ...alignment-implies-size-change-035.html.ini | 5 + .../grid-minimum-size-grid-items-007.html.ini | 3 + .../grid-minimum-size-grid-items-009.html.ini | 3 + .../grid-minimum-size-grid-items-021.html.ini | 11 +- .../logicalprops-quirklength.html.ini | 3 - .../values/shape-outside-circle-010.html.ini | 1 + .../values/shape-outside-circle-011.html.ini | 1 + .../values/shape-outside-ellipse-010.html.ini | 1 + .../values/shape-outside-ellipse-011.html.ini | 1 + .../values/shape-outside-inset-008.html.ini | 1 + .../values/shape-outside-polygon-006.html.ini | 1 + .../white-space/pre-wrap-008.html.ini} | 2 +- .../white-space/pre-wrap-010.html.ini | 3 + .../textarea-pre-wrap-008.html.ini | 3 + .../textarea-pre-wrap-010.html.ini | 3 + .../css/css-ui-3/caret-color-020.html.ini | 5 - .../vh_not_refreshing_on_chrome.html.ini | 3 - .../css/geometry-1/spec-examples.html.ini | 14 + .../meta/cssom-view/interfaces.html.ini | 8 + .../meta/cssom-view/scrollintoview.html.ini | 38 +++ .../cssom/getComputedStyle-pseudo.html.ini | 1 + .../meta/cssom/interfaces.html.ini | 240 ++++++++++++++++++ ...-default-feature-policy.https.sub.html.ini | 12 + ...ribute-redirect-on-load.https.sub.html.ini | 0 ...eature-policy-attribute.https.sub.html.ini | 0 ...lowed-by-feature-policy.https.sub.html.ini | 0 ...-default-feature-policy.https.sub.html.ini | 0 ...abled-by-feature-policy.https.sub.html.ini | 0 .../api/cors/cors-expose-star-worker.html.ini | 3 + .../fetch/api/cors/cors-expose-star.html.ini | 3 + .../fetch/api/headers/headers-basic.html.ini | 1 - ...ess.html.ini => idlharness.https.html.ini} | 14 +- .../meta/gyroscope/idlharness.https.html.ini | 57 +++++ .../meta/html/dom/interfaces.html.ini | 3 + .../meta/html/dom/interfaces.worker.js.ini | 5 + .../collections/htmlallcollection.html.ini | 6 + .../the-style-element/style_type.html.ini | 8 + .../track-element/track-cue-order.html.ini | 5 + .../meta/html/semantics/interfaces.html.ini | 6 - .../script-languages-01.html.ini | 8 - ...i => script-type-and-language-js.html.ini} | 2 +- ...ipt-type-and-language-with-params.html.ini | 11 + .../the-navigator-object/content.html.ini | 23 -- .../content/001.xhtml.ini | 5 - .../content/002.xhtml.ini | 5 - .../content/003.xhtml.ini | 5 - .../content/004.xhtml.ini | 5 - .../content/005.xhtml.ini | 5 - .../content/006.xhtml.ini | 5 - .../historical.window.js.ini | 5 + .../protocol/001.xhtml.ini | 5 - .../protocol/002.xhtml.ini | 5 - .../protocol/003.xhtml.ini | 5 - .../protocol/004.xhtml.ini | 5 - .../protocol/005.xhtml.ini | 5 - .../protocol/006.xhtml.ini | 5 - .../input-events-exec-command.html.ini | 5 + .../magnetometer/idlharness.https.html.ini | 78 ++++++ ...m-MediaElement-preload-none.https.html.ini | 26 +- ...ream-MediaElement-srcObject.https.html.ini | 3 +- ...MediaStream-add-audio-track.https.html.ini | 3 +- .../MediaStream-audio-only.https.html.ini | 3 +- ...-default-feature-policy.https.sub.html.ini | 39 +++ .../MediaStream-finished-add.https.html.ini | 3 +- .../MediaStream-idl.https.html.ini | 3 +- .../MediaStream-removetrack.https.html.ini | 3 +- .../MediaStream-video-only.https.html.ini | 3 +- ...t-disabled-audio-is-silence.https.html.ini | 3 +- ...ent-disabled-video-is-black.https.html.ini | 3 + .../MediaStreamTrack-init.https.html.ini | 3 +- .../idlharness.https.html.ini | 78 ++++++ .../meta/paint-timing/basetest.html.ini | 6 + .../first-contentful-bg-image.html.ini | 6 + .../first-contentful-canvas.html.ini | 6 + .../first-contentful-image.html.ini | 6 + .../first-contentful-paint.html.ini | 6 + .../first-contentful-svg.html.ini | 6 + .../first-paint-bg-color.html.ini | 6 + .../paint-timing/first-paint-only.html.ini | 6 + .../interfaces.https.any.js.ini | 113 +++++++++ .../constructor.https.html.ini} | 2 +- .../updatewith-method.https.html.ini} | 2 +- .../payment-request/interfaces.https.html.ini | 167 ++++++++++++ ...payment-request-constructor.https.html.ini | 12 + ...pingaddresschange-attribute.https.html.ini | 3 + ...ppingoptionchange-attribute.https.html.ini | 3 + ...t-shippingAddress-attribute.https.html.ini | 8 + ...st-shippingOption-attribute.https.html.ini | 20 ++ ...uest-shippingType-attribute.https.html.ini | 3 + ...payment-request-show-method.https.html.ini | 3 + ...est-update-event-constructor.http.html.ini | 5 - .../rejects_if_not_active.https.html.ini | 11 + .../performance-timeline/idlharness.html.ini | 5 - .../meta/resource-timing/idlharness.html.ini | 5 - .../skip-waiting-installed.https.html.ini | 5 + .../meta/url/interfaces.any.js.ini | 6 - .../tests/contexts/maximize_window.py.ini | 2 +- .../tests/element_click/select.py.ini | 2 +- .../webdriver/tests/get_window_rect.py.ini | 1 + .../webdriver/tests/minimize_window.py.ini | 2 +- .../webdriver/tests/set_window_rect.py.ini | 1 + ...ion-setRemoteDescription-rollback.html.ini | 9 + ...erConnection-setRemoteDescription.html.ini | 3 + .../meta/websockets/constructor/010.html.ini | 3 - .../meta/websockets/constructor/011.html.ini | 11 - .../workers/worker-performance.worker.js.ini | 11 + 133 files changed, 1413 insertions(+), 225 deletions(-) create mode 100644 testing/web-platform/meta/XMLHttpRequest/access-control-basic-cors-safelisted-request-headers.htm.ini create mode 100644 testing/web-platform/meta/XMLHttpRequest/send-after-setting-document-domain.htm.ini create mode 100644 testing/web-platform/meta/background-fetch/content-security-policy.https.window.js.ini create mode 100644 testing/web-platform/meta/background-fetch/credentials-in-url.https.window.js.ini create mode 100644 testing/web-platform/meta/background-fetch/dangling-markup.https.window.js.ini create mode 100644 testing/web-platform/meta/background-fetch/mixed-content-and-allowed-schemes.https.window.js.ini create mode 100644 testing/web-platform/meta/background-fetch/port-blocking.https.window.js.ini delete mode 100644 testing/web-platform/meta/content-security-policy/blink-contrib/object-src-applet-archive-codebase.sub.html.ini delete mode 100644 testing/web-platform/meta/content-security-policy/blink-contrib/object-src-applet-archive.sub.html.ini delete mode 100644 testing/web-platform/meta/content-security-policy/blink-contrib/object-src-applet-code-codebase.sub.html.ini delete mode 100644 testing/web-platform/meta/content-security-policy/blink-contrib/object-src-applet-code.sub.html.ini rename testing/web-platform/meta/{css-font-display => css-fonts/font-display}/font-display.html.ini (100%) create mode 100644 testing/web-platform/meta/css-paint-api/parse-input-arguments-019.html.ini create mode 100644 testing/web-platform/meta/css-paint-api/parse-input-arguments-020.html.ini create mode 100644 testing/web-platform/meta/css-paint-api/parse-input-arguments-021.html.ini create mode 100644 testing/web-platform/meta/css-paint-api/parse-input-arguments-022.html.ini delete mode 100644 testing/web-platform/meta/css/CSS2/selectors/attribute-value-selector-002.xht.ini create mode 100644 testing/web-platform/meta/css/css-grid-1/alignment/grid-alignment-implies-size-change-007.html.ini create mode 100644 testing/web-platform/meta/css/css-grid-1/alignment/grid-alignment-implies-size-change-009.html.ini create mode 100644 testing/web-platform/meta/css/css-grid-1/alignment/grid-alignment-implies-size-change-017.html.ini create mode 100644 testing/web-platform/meta/css/css-grid-1/alignment/grid-alignment-implies-size-change-025.html.ini create mode 100644 testing/web-platform/meta/css/css-grid-1/alignment/grid-alignment-implies-size-change-027.html.ini create mode 100644 testing/web-platform/meta/css/css-grid-1/alignment/grid-alignment-implies-size-change-035.html.ini create mode 100644 testing/web-platform/meta/css/css-grid-1/grid-items/grid-minimum-size-grid-items-007.html.ini create mode 100644 testing/web-platform/meta/css/css-grid-1/grid-items/grid-minimum-size-grid-items-009.html.ini delete mode 100644 testing/web-platform/meta/css/css-logical-properties-1/logicalprops-quirklength.html.ini rename testing/web-platform/meta/css/{css-ui-3/text-overflow-006.html.ini => css-text-3/white-space/pre-wrap-008.html.ini} (56%) create mode 100644 testing/web-platform/meta/css/css-text-3/white-space/pre-wrap-010.html.ini create mode 100644 testing/web-platform/meta/css/css-text-3/white-space/textarea-pre-wrap-008.html.ini create mode 100644 testing/web-platform/meta/css/css-text-3/white-space/textarea-pre-wrap-010.html.ini delete mode 100644 testing/web-platform/meta/css/css-ui-3/caret-color-020.html.ini delete mode 100644 testing/web-platform/meta/css/css-values-3/vh_not_refreshing_on_chrome.html.ini create mode 100644 testing/web-platform/meta/css/geometry-1/spec-examples.html.ini create mode 100644 testing/web-platform/meta/cssom-view/interfaces.html.ini create mode 100644 testing/web-platform/meta/cssom-view/scrollintoview.html.ini create mode 100644 testing/web-platform/meta/encrypted-media/encrypted-media-default-feature-policy.https.sub.html.ini rename testing/web-platform/meta/{payment-request => feature-policy}/payment-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html.ini (100%) rename testing/web-platform/meta/{payment-request => feature-policy}/payment-allowed-by-feature-policy-attribute.https.sub.html.ini (100%) rename testing/web-platform/meta/{payment-request => feature-policy}/payment-allowed-by-feature-policy.https.sub.html.ini (100%) rename testing/web-platform/meta/{payment-request => feature-policy}/payment-default-feature-policy.https.sub.html.ini (100%) rename testing/web-platform/meta/{payment-request => feature-policy}/payment-disabled-by-feature-policy.https.sub.html.ini (100%) rename testing/web-platform/meta/generic-sensor/{idlharness.html.ini => idlharness.https.html.ini} (62%) create mode 100644 testing/web-platform/meta/html/semantics/document-metadata/the-style-element/style_type.html.ini create mode 100644 testing/web-platform/meta/html/semantics/embedded-content/media-elements/track/track-element/track-cue-order.html.ini delete mode 100644 testing/web-platform/meta/html/semantics/scripting-1/the-script-element/script-languages-01.html.ini rename testing/web-platform/meta/html/semantics/scripting-1/the-script-element/{script-languages-02.html.ini => script-type-and-language-js.html.ini} (99%) create mode 100644 testing/web-platform/meta/html/semantics/scripting-1/the-script-element/script-type-and-language-with-params.html.ini delete mode 100644 testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content.html.ini delete mode 100644 testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content/001.xhtml.ini delete mode 100644 testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content/002.xhtml.ini delete mode 100644 testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content/003.xhtml.ini delete mode 100644 testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content/004.xhtml.ini delete mode 100644 testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content/005.xhtml.ini delete mode 100644 testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content/006.xhtml.ini create mode 100644 testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/historical.window.js.ini delete mode 100644 testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/001.xhtml.ini delete mode 100644 testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/002.xhtml.ini delete mode 100644 testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/003.xhtml.ini delete mode 100644 testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/004.xhtml.ini delete mode 100644 testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/005.xhtml.ini delete mode 100644 testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/006.xhtml.ini create mode 100644 testing/web-platform/meta/input-events/input-events-exec-command.html.ini create mode 100644 testing/web-platform/meta/mediacapture-streams/MediaStream-default-feature-policy.https.sub.html.ini create mode 100644 testing/web-platform/meta/paint-timing/basetest.html.ini create mode 100644 testing/web-platform/meta/paint-timing/first-contentful-bg-image.html.ini create mode 100644 testing/web-platform/meta/paint-timing/first-contentful-canvas.html.ini create mode 100644 testing/web-platform/meta/paint-timing/first-contentful-image.html.ini create mode 100644 testing/web-platform/meta/paint-timing/first-contentful-paint.html.ini create mode 100644 testing/web-platform/meta/paint-timing/first-contentful-svg.html.ini create mode 100644 testing/web-platform/meta/paint-timing/first-paint-bg-color.html.ini create mode 100644 testing/web-platform/meta/paint-timing/first-paint-only.html.ini create mode 100644 testing/web-platform/meta/payment-handler/interfaces.https.any.js.ini rename testing/web-platform/meta/payment-request/{payment-request-update-event-constructor.https.html.ini => PaymentRequestUpdateEvent/constructor.https.html.ini} (85%) rename testing/web-platform/meta/payment-request/{payment-request-update-event-updatewith-method.https.html.ini => PaymentRequestUpdateEvent/updatewith-method.https.html.ini} (84%) create mode 100644 testing/web-platform/meta/payment-request/payment-request-shippingAddress-attribute.https.html.ini create mode 100644 testing/web-platform/meta/payment-request/payment-request-shippingOption-attribute.https.html.ini delete mode 100644 testing/web-platform/meta/payment-request/payment-request-update-event-constructor.http.html.ini create mode 100644 testing/web-platform/meta/payment-request/rejects_if_not_active.https.html.ini delete mode 100644 testing/web-platform/meta/performance-timeline/idlharness.html.ini delete mode 100644 testing/web-platform/meta/resource-timing/idlharness.html.ini create mode 100644 testing/web-platform/meta/service-workers/service-worker/skip-waiting-installed.https.html.ini create mode 100644 testing/web-platform/meta/webrtc/RTCPeerConnection-setRemoteDescription-rollback.html.ini delete mode 100644 testing/web-platform/meta/websockets/constructor/011.html.ini create mode 100644 testing/web-platform/meta/workers/worker-performance.worker.js.ini diff --git a/testing/web-platform/meta/FileAPI/idlharness.worker.js.ini b/testing/web-platform/meta/FileAPI/idlharness.worker.js.ini index 901f4d273382..065bbbf9d9ea 100644 --- a/testing/web-platform/meta/FileAPI/idlharness.worker.js.ini +++ b/testing/web-platform/meta/FileAPI/idlharness.worker.js.ini @@ -22,3 +22,4 @@ [Event interface: existence and properties of interface object] expected: FAIL + diff --git a/testing/web-platform/meta/XMLHttpRequest/access-control-basic-cors-safelisted-request-headers.htm.ini b/testing/web-platform/meta/XMLHttpRequest/access-control-basic-cors-safelisted-request-headers.htm.ini new file mode 100644 index 000000000000..2373b260a044 --- /dev/null +++ b/testing/web-platform/meta/XMLHttpRequest/access-control-basic-cors-safelisted-request-headers.htm.ini @@ -0,0 +1,5 @@ +[access-control-basic-cors-safelisted-request-headers.htm] + type: testharness + [Request with CORS-safelisted headers] + expected: FAIL + diff --git a/testing/web-platform/meta/XMLHttpRequest/data-uri.htm.ini b/testing/web-platform/meta/XMLHttpRequest/data-uri.htm.ini index 41ecffb11f56..4776d55b75e8 100644 --- a/testing/web-platform/meta/XMLHttpRequest/data-uri.htm.ini +++ b/testing/web-platform/meta/XMLHttpRequest/data-uri.htm.ini @@ -2,3 +2,4 @@ type: testharness [XHR method GET with MIME type image/png] expected: FAIL + diff --git a/testing/web-platform/meta/XMLHttpRequest/send-after-setting-document-domain.htm.ini b/testing/web-platform/meta/XMLHttpRequest/send-after-setting-document-domain.htm.ini new file mode 100644 index 000000000000..09aff6098889 --- /dev/null +++ b/testing/web-platform/meta/XMLHttpRequest/send-after-setting-document-domain.htm.ini @@ -0,0 +1,3 @@ +[send-after-setting-document-domain.htm] + expected: + if debug and stylo and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): CRASH diff --git a/testing/web-platform/meta/XMLHttpRequest/send-response-event-order.htm.ini b/testing/web-platform/meta/XMLHttpRequest/send-response-event-order.htm.ini index 54e46bb22dff..d2d87f217d3e 100644 --- a/testing/web-platform/meta/XMLHttpRequest/send-response-event-order.htm.ini +++ b/testing/web-platform/meta/XMLHttpRequest/send-response-event-order.htm.ini @@ -1,2 +1,3 @@ [send-response-event-order.htm] + type: testharness disabled: if (os == "win"): https://bugzilla.mozilla.org/show_bug.cgi?id=1370056 diff --git a/testing/web-platform/meta/accelerometer/idlharness.https.html.ini b/testing/web-platform/meta/accelerometer/idlharness.https.html.ini index 818e27559653..ce8f2e889537 100644 --- a/testing/web-platform/meta/accelerometer/idlharness.https.html.ini +++ b/testing/web-platform/meta/accelerometer/idlharness.https.html.ini @@ -249,3 +249,102 @@ [Accelerometer interface: new GravitySensor(); must inherit property "z" with the proper type] expected: FAIL + [Sensor interface: existence and properties of interface object] + expected: FAIL + + [Sensor interface object length] + expected: FAIL + + [Sensor interface object name] + expected: FAIL + + [Sensor interface: existence and properties of interface prototype object] + expected: FAIL + + [Sensor interface: existence and properties of interface prototype object's "constructor" property] + expected: FAIL + + [Sensor interface: attribute activated] + expected: FAIL + + [Sensor interface: attribute timestamp] + expected: FAIL + + [Sensor interface: operation start()] + expected: FAIL + + [Sensor interface: operation stop()] + expected: FAIL + + [Sensor interface: attribute onreading] + expected: FAIL + + [Sensor interface: attribute onactivate] + expected: FAIL + + [Sensor interface: attribute onerror] + expected: FAIL + + [Sensor interface: new Accelerometer(); must inherit property "activated" with the proper type] + expected: FAIL + + [Sensor interface: new Accelerometer(); must inherit property "timestamp" with the proper type] + expected: FAIL + + [Sensor interface: new Accelerometer(); must inherit property "start()" with the proper type] + expected: FAIL + + [Sensor interface: new Accelerometer(); must inherit property "stop()" with the proper type] + expected: FAIL + + [Sensor interface: new Accelerometer(); must inherit property "onreading" with the proper type] + expected: FAIL + + [Sensor interface: new Accelerometer(); must inherit property "onactivate" with the proper type] + expected: FAIL + + [Sensor interface: new Accelerometer(); must inherit property "onerror" with the proper type] + expected: FAIL + + [Sensor interface: new LinearAccelerationSensor(); must inherit property "activated" with the proper type] + expected: FAIL + + [Sensor interface: new LinearAccelerationSensor(); must inherit property "timestamp" with the proper type] + expected: FAIL + + [Sensor interface: new LinearAccelerationSensor(); must inherit property "start()" with the proper type] + expected: FAIL + + [Sensor interface: new LinearAccelerationSensor(); must inherit property "stop()" with the proper type] + expected: FAIL + + [Sensor interface: new LinearAccelerationSensor(); must inherit property "onreading" with the proper type] + expected: FAIL + + [Sensor interface: new LinearAccelerationSensor(); must inherit property "onactivate" with the proper type] + expected: FAIL + + [Sensor interface: new LinearAccelerationSensor(); must inherit property "onerror" with the proper type] + expected: FAIL + + [Sensor interface: new GravitySensor(); must inherit property "activated" with the proper type] + expected: FAIL + + [Sensor interface: new GravitySensor(); must inherit property "timestamp" with the proper type] + expected: FAIL + + [Sensor interface: new GravitySensor(); must inherit property "start()" with the proper type] + expected: FAIL + + [Sensor interface: new GravitySensor(); must inherit property "stop()" with the proper type] + expected: FAIL + + [Sensor interface: new GravitySensor(); must inherit property "onreading" with the proper type] + expected: FAIL + + [Sensor interface: new GravitySensor(); must inherit property "onactivate" with the proper type] + expected: FAIL + + [Sensor interface: new GravitySensor(); must inherit property "onerror" with the proper type] + expected: FAIL + diff --git a/testing/web-platform/meta/ambient-light/idlharness.https.html.ini b/testing/web-platform/meta/ambient-light/idlharness.https.html.ini index 7421fcf8523f..8d76a0ca6267 100644 --- a/testing/web-platform/meta/ambient-light/idlharness.https.html.ini +++ b/testing/web-platform/meta/ambient-light/idlharness.https.html.ini @@ -87,3 +87,60 @@ [AmbientLightSensor interface: new AmbientLightSensor(); must inherit property "illuminance" with the proper type] expected: FAIL + [Sensor interface: existence and properties of interface object] + expected: FAIL + + [Sensor interface object length] + expected: FAIL + + [Sensor interface object name] + expected: FAIL + + [Sensor interface: existence and properties of interface prototype object] + expected: FAIL + + [Sensor interface: existence and properties of interface prototype object's "constructor" property] + expected: FAIL + + [Sensor interface: attribute activated] + expected: FAIL + + [Sensor interface: attribute timestamp] + expected: FAIL + + [Sensor interface: operation start()] + expected: FAIL + + [Sensor interface: operation stop()] + expected: FAIL + + [Sensor interface: attribute onreading] + expected: FAIL + + [Sensor interface: attribute onactivate] + expected: FAIL + + [Sensor interface: attribute onerror] + expected: FAIL + + [Sensor interface: new AmbientLightSensor(); must inherit property "activated" with the proper type] + expected: FAIL + + [Sensor interface: new AmbientLightSensor(); must inherit property "timestamp" with the proper type] + expected: FAIL + + [Sensor interface: new AmbientLightSensor(); must inherit property "start()" with the proper type] + expected: FAIL + + [Sensor interface: new AmbientLightSensor(); must inherit property "stop()" with the proper type] + expected: FAIL + + [Sensor interface: new AmbientLightSensor(); must inherit property "onreading" with the proper type] + expected: FAIL + + [Sensor interface: new AmbientLightSensor(); must inherit property "onactivate" with the proper type] + expected: FAIL + + [Sensor interface: new AmbientLightSensor(); must inherit property "onerror" with the proper type] + expected: FAIL + diff --git a/testing/web-platform/meta/background-fetch/content-security-policy.https.window.js.ini b/testing/web-platform/meta/background-fetch/content-security-policy.https.window.js.ini new file mode 100644 index 000000000000..2da013577be0 --- /dev/null +++ b/testing/web-platform/meta/background-fetch/content-security-policy.https.window.js.ini @@ -0,0 +1,5 @@ +[content-security-policy.https.window.html] + type: testharness + [fetch blocked by CSP should reject] + expected: FAIL + diff --git a/testing/web-platform/meta/background-fetch/credentials-in-url.https.window.js.ini b/testing/web-platform/meta/background-fetch/credentials-in-url.https.window.js.ini new file mode 100644 index 000000000000..cd5caf09c7bf --- /dev/null +++ b/testing/web-platform/meta/background-fetch/credentials-in-url.https.window.js.ini @@ -0,0 +1,14 @@ +[credentials-in-url.https.window.html] + type: testharness + [fetch without credentials in URL should register ok] + expected: FAIL + + [fetch with username and password in URL should reject] + expected: FAIL + + [fetch with username and empty password in URL should reject] + expected: FAIL + + [fetch with empty username and password in URL should reject] + expected: FAIL + diff --git a/testing/web-platform/meta/background-fetch/dangling-markup.https.window.js.ini b/testing/web-platform/meta/background-fetch/dangling-markup.https.window.js.ini new file mode 100644 index 000000000000..55dde793ec7d --- /dev/null +++ b/testing/web-platform/meta/background-fetch/dangling-markup.https.window.js.ini @@ -0,0 +1,5 @@ +[dangling-markup.https.window.html] + type: testharness + [fetch to URL containing \\n and < should reject] + expected: FAIL + diff --git a/testing/web-platform/meta/background-fetch/mixed-content-and-allowed-schemes.https.window.js.ini b/testing/web-platform/meta/background-fetch/mixed-content-and-allowed-schemes.https.window.js.ini new file mode 100644 index 000000000000..0814484ee020 --- /dev/null +++ b/testing/web-platform/meta/background-fetch/mixed-content-and-allowed-schemes.https.window.js.ini @@ -0,0 +1,38 @@ +[mixed-content-and-allowed-schemes.https.window.html] + type: testharness + [https: fetch should register ok] + expected: FAIL + + [loopback IPv4 http: fetch should register ok] + expected: FAIL + + [loopback IPv6 http: fetch should register ok] + expected: FAIL + + [non-loopback http: fetch should reject] + expected: FAIL + + [non-loopback IPv4 http: fetch should reject] + expected: FAIL + + [non-loopback IPv6 http: fetch should reject] + expected: FAIL + + [https: and non-loopback http: fetch should reject] + expected: FAIL + + [non-loopback http: and https: fetch should reject] + expected: FAIL + + [wss: fetch should reject] + expected: FAIL + + [file: fetch should reject] + expected: FAIL + + [data: fetch should reject] + expected: FAIL + + [unknown scheme fetch should reject] + expected: FAIL + diff --git a/testing/web-platform/meta/background-fetch/port-blocking.https.window.js.ini b/testing/web-platform/meta/background-fetch/port-blocking.https.window.js.ini new file mode 100644 index 000000000000..0754df8c3a09 --- /dev/null +++ b/testing/web-platform/meta/background-fetch/port-blocking.https.window.js.ini @@ -0,0 +1,20 @@ +[port-blocking.https.window.html] + type: testharness + [fetch to default https port should register ok] + expected: FAIL + + [fetch to default http port should register ok] + expected: FAIL + + [fetch to port 443 should register ok] + expected: FAIL + + [fetch to port 80 should register ok, even over https] + expected: FAIL + + [fetch to non-default non-bad port (8080) should register ok] + expected: FAIL + + [fetch to bad port (SMTP) should reject] + expected: FAIL + diff --git a/testing/web-platform/meta/content-security-policy/blink-contrib/object-src-applet-archive-codebase.sub.html.ini b/testing/web-platform/meta/content-security-policy/blink-contrib/object-src-applet-archive-codebase.sub.html.ini deleted file mode 100644 index 3fd4d6eb23f8..000000000000 --- a/testing/web-platform/meta/content-security-policy/blink-contrib/object-src-applet-archive-codebase.sub.html.ini +++ /dev/null @@ -1,11 +0,0 @@ -[object-src-applet-archive-codebase.sub.html] - type: testharness - expected: - if not debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): TIMEOUT - if debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): TIMEOUT - [Expecting logs: ["PASS"\]] - expected: NOTRUN - - [Violation report status OK.] - expected: FAIL - diff --git a/testing/web-platform/meta/content-security-policy/blink-contrib/object-src-applet-archive.sub.html.ini b/testing/web-platform/meta/content-security-policy/blink-contrib/object-src-applet-archive.sub.html.ini deleted file mode 100644 index bbbfb43a431f..000000000000 --- a/testing/web-platform/meta/content-security-policy/blink-contrib/object-src-applet-archive.sub.html.ini +++ /dev/null @@ -1,11 +0,0 @@ -[object-src-applet-archive.sub.html] - type: testharness - expected: - if not debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): TIMEOUT - if debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): TIMEOUT - [Expecting logs: ["PASS"\]] - expected: NOTRUN - - [Violation report status OK.] - expected: FAIL - diff --git a/testing/web-platform/meta/content-security-policy/blink-contrib/object-src-applet-code-codebase.sub.html.ini b/testing/web-platform/meta/content-security-policy/blink-contrib/object-src-applet-code-codebase.sub.html.ini deleted file mode 100644 index 4c63ee29b96c..000000000000 --- a/testing/web-platform/meta/content-security-policy/blink-contrib/object-src-applet-code-codebase.sub.html.ini +++ /dev/null @@ -1,11 +0,0 @@ -[object-src-applet-code-codebase.sub.html] - type: testharness - expected: - if not debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): TIMEOUT - if debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): TIMEOUT - [Expecting logs: ["PASS"\]] - expected: NOTRUN - - [Violation report status OK.] - expected: FAIL - diff --git a/testing/web-platform/meta/content-security-policy/blink-contrib/object-src-applet-code.sub.html.ini b/testing/web-platform/meta/content-security-policy/blink-contrib/object-src-applet-code.sub.html.ini deleted file mode 100644 index 8ff7fcb453d2..000000000000 --- a/testing/web-platform/meta/content-security-policy/blink-contrib/object-src-applet-code.sub.html.ini +++ /dev/null @@ -1,11 +0,0 @@ -[object-src-applet-code.sub.html] - type: testharness - expected: - if not debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): TIMEOUT - if debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): TIMEOUT - [Expecting logs: ["PASS"\]] - expected: NOTRUN - - [Violation report status OK.] - expected: FAIL - diff --git a/testing/web-platform/meta/css-font-display/font-display.html.ini b/testing/web-platform/meta/css-fonts/font-display/font-display.html.ini similarity index 100% rename from testing/web-platform/meta/css-font-display/font-display.html.ini rename to testing/web-platform/meta/css-fonts/font-display/font-display.html.ini diff --git a/testing/web-platform/meta/css-paint-api/parse-input-arguments-019.html.ini b/testing/web-platform/meta/css-paint-api/parse-input-arguments-019.html.ini new file mode 100644 index 000000000000..a89a7d4d145d --- /dev/null +++ b/testing/web-platform/meta/css-paint-api/parse-input-arguments-019.html.ini @@ -0,0 +1,3 @@ +[parse-input-arguments-019.html] + type: reftest + expected: FAIL diff --git a/testing/web-platform/meta/css-paint-api/parse-input-arguments-020.html.ini b/testing/web-platform/meta/css-paint-api/parse-input-arguments-020.html.ini new file mode 100644 index 000000000000..a73dbbdb17a6 --- /dev/null +++ b/testing/web-platform/meta/css-paint-api/parse-input-arguments-020.html.ini @@ -0,0 +1,3 @@ +[parse-input-arguments-020.html] + type: reftest + expected: FAIL diff --git a/testing/web-platform/meta/css-paint-api/parse-input-arguments-021.html.ini b/testing/web-platform/meta/css-paint-api/parse-input-arguments-021.html.ini new file mode 100644 index 000000000000..2d55e408a992 --- /dev/null +++ b/testing/web-platform/meta/css-paint-api/parse-input-arguments-021.html.ini @@ -0,0 +1,3 @@ +[parse-input-arguments-021.html] + type: reftest + expected: FAIL diff --git a/testing/web-platform/meta/css-paint-api/parse-input-arguments-022.html.ini b/testing/web-platform/meta/css-paint-api/parse-input-arguments-022.html.ini new file mode 100644 index 000000000000..7d27a1d9e45b --- /dev/null +++ b/testing/web-platform/meta/css-paint-api/parse-input-arguments-022.html.ini @@ -0,0 +1,3 @@ +[parse-input-arguments-022.html] + type: reftest + expected: FAIL diff --git a/testing/web-platform/meta/css/CSS2/selectors/attribute-value-selector-002.xht.ini b/testing/web-platform/meta/css/CSS2/selectors/attribute-value-selector-002.xht.ini deleted file mode 100644 index 1f15dbbcb012..000000000000 --- a/testing/web-platform/meta/css/CSS2/selectors/attribute-value-selector-002.xht.ini +++ /dev/null @@ -1,3 +0,0 @@ -[attribute-value-selector-002.xht] - type: reftest - expected: FAIL diff --git a/testing/web-platform/meta/css/css-grid-1/alignment/grid-alignment-implies-size-change-007.html.ini b/testing/web-platform/meta/css/css-grid-1/alignment/grid-alignment-implies-size-change-007.html.ini new file mode 100644 index 000000000000..65ddb11a65b3 --- /dev/null +++ b/testing/web-platform/meta/css/css-grid-1/alignment/grid-alignment-implies-size-change-007.html.ini @@ -0,0 +1,5 @@ +[grid-alignment-implies-size-change-007.html] + type: testharness + [.before 1] + expected: FAIL + diff --git a/testing/web-platform/meta/css/css-grid-1/alignment/grid-alignment-implies-size-change-009.html.ini b/testing/web-platform/meta/css/css-grid-1/alignment/grid-alignment-implies-size-change-009.html.ini new file mode 100644 index 000000000000..0059260bb01b --- /dev/null +++ b/testing/web-platform/meta/css/css-grid-1/alignment/grid-alignment-implies-size-change-009.html.ini @@ -0,0 +1,5 @@ +[grid-alignment-implies-size-change-009.html] + type: testharness + [.before 1] + expected: FAIL + diff --git a/testing/web-platform/meta/css/css-grid-1/alignment/grid-alignment-implies-size-change-017.html.ini b/testing/web-platform/meta/css/css-grid-1/alignment/grid-alignment-implies-size-change-017.html.ini new file mode 100644 index 000000000000..cb63e9d4b196 --- /dev/null +++ b/testing/web-platform/meta/css/css-grid-1/alignment/grid-alignment-implies-size-change-017.html.ini @@ -0,0 +1,5 @@ +[grid-alignment-implies-size-change-017.html] + type: testharness + [.before 1] + expected: FAIL + diff --git a/testing/web-platform/meta/css/css-grid-1/alignment/grid-alignment-implies-size-change-025.html.ini b/testing/web-platform/meta/css/css-grid-1/alignment/grid-alignment-implies-size-change-025.html.ini new file mode 100644 index 000000000000..0bd278738178 --- /dev/null +++ b/testing/web-platform/meta/css/css-grid-1/alignment/grid-alignment-implies-size-change-025.html.ini @@ -0,0 +1,5 @@ +[grid-alignment-implies-size-change-025.html] + type: testharness + [.before 1] + expected: FAIL + diff --git a/testing/web-platform/meta/css/css-grid-1/alignment/grid-alignment-implies-size-change-027.html.ini b/testing/web-platform/meta/css/css-grid-1/alignment/grid-alignment-implies-size-change-027.html.ini new file mode 100644 index 000000000000..c9cb579c2c26 --- /dev/null +++ b/testing/web-platform/meta/css/css-grid-1/alignment/grid-alignment-implies-size-change-027.html.ini @@ -0,0 +1,5 @@ +[grid-alignment-implies-size-change-027.html] + type: testharness + [.before 1] + expected: FAIL + diff --git a/testing/web-platform/meta/css/css-grid-1/alignment/grid-alignment-implies-size-change-035.html.ini b/testing/web-platform/meta/css/css-grid-1/alignment/grid-alignment-implies-size-change-035.html.ini new file mode 100644 index 000000000000..841098197fc8 --- /dev/null +++ b/testing/web-platform/meta/css/css-grid-1/alignment/grid-alignment-implies-size-change-035.html.ini @@ -0,0 +1,5 @@ +[grid-alignment-implies-size-change-035.html] + type: testharness + [.before 1] + expected: FAIL + diff --git a/testing/web-platform/meta/css/css-grid-1/grid-items/grid-minimum-size-grid-items-007.html.ini b/testing/web-platform/meta/css/css-grid-1/grid-items/grid-minimum-size-grid-items-007.html.ini new file mode 100644 index 000000000000..6b6094d787be --- /dev/null +++ b/testing/web-platform/meta/css/css-grid-1/grid-items/grid-minimum-size-grid-items-007.html.ini @@ -0,0 +1,3 @@ +[grid-minimum-size-grid-items-007.html] + type: reftest + expected: FAIL diff --git a/testing/web-platform/meta/css/css-grid-1/grid-items/grid-minimum-size-grid-items-009.html.ini b/testing/web-platform/meta/css/css-grid-1/grid-items/grid-minimum-size-grid-items-009.html.ini new file mode 100644 index 000000000000..af13dc43150e --- /dev/null +++ b/testing/web-platform/meta/css/css-grid-1/grid-items/grid-minimum-size-grid-items-009.html.ini @@ -0,0 +1,3 @@ +[grid-minimum-size-grid-items-009.html] + type: reftest + expected: FAIL diff --git a/testing/web-platform/meta/css/css-grid-1/grid-items/grid-minimum-size-grid-items-021.html.ini b/testing/web-platform/meta/css/css-grid-1/grid-items/grid-minimum-size-grid-items-021.html.ini index c47baf1b0d37..d5951fb400b6 100644 --- a/testing/web-platform/meta/css/css-grid-1/grid-items/grid-minimum-size-grid-items-021.html.ini +++ b/testing/web-platform/meta/css/css-grid-1/grid-items/grid-minimum-size-grid-items-021.html.ini @@ -1,14 +1,17 @@ [grid-minimum-size-grid-items-021.html] type: testharness - [grid-3.height] + [grid-2.gridTemplateRows] expected: FAIL - [grid-3.gridTemplateRows] + [grid-4.gridTemplateRows] expected: FAIL - [grid-9.height] + [grid-8.gridTemplateRows] expected: FAIL - [grid-9.gridTemplateRows] + [grid-10.gridTemplateRows] + expected: FAIL + + [grid-12.gridTemplateRows] expected: FAIL diff --git a/testing/web-platform/meta/css/css-logical-properties-1/logicalprops-quirklength.html.ini b/testing/web-platform/meta/css/css-logical-properties-1/logicalprops-quirklength.html.ini deleted file mode 100644 index 7c5f5dd33206..000000000000 --- a/testing/web-platform/meta/css/css-logical-properties-1/logicalprops-quirklength.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[logicalprops-quirklength.html] - type: testharness - expected: ERROR diff --git a/testing/web-platform/meta/css/css-shapes-1/shape-outside/values/shape-outside-circle-010.html.ini b/testing/web-platform/meta/css/css-shapes-1/shape-outside/values/shape-outside-circle-010.html.ini index 0232f93af7bf..882d5aacad6c 100644 --- a/testing/web-platform/meta/css/css-shapes-1/shape-outside/values/shape-outside-circle-010.html.ini +++ b/testing/web-platform/meta/css/css-shapes-1/shape-outside/values/shape-outside-circle-010.html.ini @@ -31,3 +31,4 @@ [circle(calc(25%*3)) - computed style] expected: FAIL + diff --git a/testing/web-platform/meta/css/css-shapes-1/shape-outside/values/shape-outside-circle-011.html.ini b/testing/web-platform/meta/css/css-shapes-1/shape-outside/values/shape-outside-circle-011.html.ini index 945591d8c720..c5329fb1c634 100644 --- a/testing/web-platform/meta/css/css-shapes-1/shape-outside/values/shape-outside-circle-011.html.ini +++ b/testing/web-platform/meta/css/css-shapes-1/shape-outside/values/shape-outside-circle-011.html.ini @@ -43,3 +43,4 @@ [circle(at calc((12.5%*6 + 10in) / 4)) - computed style] expected: FAIL + diff --git a/testing/web-platform/meta/css/css-shapes-1/shape-outside/values/shape-outside-ellipse-010.html.ini b/testing/web-platform/meta/css/css-shapes-1/shape-outside/values/shape-outside-ellipse-010.html.ini index f232c0c91ebc..df946503398b 100644 --- a/testing/web-platform/meta/css/css-shapes-1/shape-outside/values/shape-outside-ellipse-010.html.ini +++ b/testing/web-platform/meta/css/css-shapes-1/shape-outside/values/shape-outside-ellipse-010.html.ini @@ -105,3 +105,4 @@ [ellipse(calc(25%*3) calc(25%*3)) - computed style] expected: FAIL + diff --git a/testing/web-platform/meta/css/css-shapes-1/shape-outside/values/shape-outside-ellipse-011.html.ini b/testing/web-platform/meta/css/css-shapes-1/shape-outside/values/shape-outside-ellipse-011.html.ini index d2600ab2eeca..231a7a91adde 100644 --- a/testing/web-platform/meta/css/css-shapes-1/shape-outside/values/shape-outside-ellipse-011.html.ini +++ b/testing/web-platform/meta/css/css-shapes-1/shape-outside/values/shape-outside-ellipse-011.html.ini @@ -118,3 +118,4 @@ expected: if stylo: PASS FAIL + diff --git a/testing/web-platform/meta/css/css-shapes-1/shape-outside/values/shape-outside-inset-008.html.ini b/testing/web-platform/meta/css/css-shapes-1/shape-outside/values/shape-outside-inset-008.html.ini index fddbb0175e92..faddd7b6f5b1 100644 --- a/testing/web-platform/meta/css/css-shapes-1/shape-outside/values/shape-outside-inset-008.html.ini +++ b/testing/web-platform/meta/css/css-shapes-1/shape-outside/values/shape-outside-inset-008.html.ini @@ -73,3 +73,4 @@ [inset(calc(25%*3) calc(25%*3)) - computed style] expected: FAIL + diff --git a/testing/web-platform/meta/css/css-shapes-1/shape-outside/values/shape-outside-polygon-006.html.ini b/testing/web-platform/meta/css/css-shapes-1/shape-outside/values/shape-outside-polygon-006.html.ini index e10c95d11936..e6be862e4097 100644 --- a/testing/web-platform/meta/css/css-shapes-1/shape-outside/values/shape-outside-polygon-006.html.ini +++ b/testing/web-platform/meta/css/css-shapes-1/shape-outside/values/shape-outside-polygon-006.html.ini @@ -63,3 +63,4 @@ [polygon(evenodd, calc(25%*3) calc(25%*3), calc(25%*3) calc(25%*3)) - computed style] expected: FAIL + diff --git a/testing/web-platform/meta/css/css-ui-3/text-overflow-006.html.ini b/testing/web-platform/meta/css/css-text-3/white-space/pre-wrap-008.html.ini similarity index 56% rename from testing/web-platform/meta/css/css-ui-3/text-overflow-006.html.ini rename to testing/web-platform/meta/css/css-text-3/white-space/pre-wrap-008.html.ini index dc797ebfc6f4..3bbd8fae1962 100644 --- a/testing/web-platform/meta/css/css-ui-3/text-overflow-006.html.ini +++ b/testing/web-platform/meta/css/css-text-3/white-space/pre-wrap-008.html.ini @@ -1,3 +1,3 @@ -[text-overflow-006.html] +[pre-wrap-008.html] type: reftest expected: FAIL diff --git a/testing/web-platform/meta/css/css-text-3/white-space/pre-wrap-010.html.ini b/testing/web-platform/meta/css/css-text-3/white-space/pre-wrap-010.html.ini new file mode 100644 index 000000000000..eb6b909624af --- /dev/null +++ b/testing/web-platform/meta/css/css-text-3/white-space/pre-wrap-010.html.ini @@ -0,0 +1,3 @@ +[pre-wrap-010.html] + type: reftest + expected: FAIL diff --git a/testing/web-platform/meta/css/css-text-3/white-space/textarea-pre-wrap-008.html.ini b/testing/web-platform/meta/css/css-text-3/white-space/textarea-pre-wrap-008.html.ini new file mode 100644 index 000000000000..efd6e6bb5e14 --- /dev/null +++ b/testing/web-platform/meta/css/css-text-3/white-space/textarea-pre-wrap-008.html.ini @@ -0,0 +1,3 @@ +[textarea-pre-wrap-008.html] + type: reftest + expected: FAIL diff --git a/testing/web-platform/meta/css/css-text-3/white-space/textarea-pre-wrap-010.html.ini b/testing/web-platform/meta/css/css-text-3/white-space/textarea-pre-wrap-010.html.ini new file mode 100644 index 000000000000..c419ea3f576c --- /dev/null +++ b/testing/web-platform/meta/css/css-text-3/white-space/textarea-pre-wrap-010.html.ini @@ -0,0 +1,3 @@ +[textarea-pre-wrap-010.html] + type: reftest + expected: FAIL diff --git a/testing/web-platform/meta/css/css-ui-3/caret-color-020.html.ini b/testing/web-platform/meta/css/css-ui-3/caret-color-020.html.ini deleted file mode 100644 index 216bdca28221..000000000000 --- a/testing/web-platform/meta/css/css-ui-3/caret-color-020.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[caret-color-020.html] - type: testharness - [caret-color: currentcolor is interpolable] - expected: FAIL - diff --git a/testing/web-platform/meta/css/css-values-3/vh_not_refreshing_on_chrome.html.ini b/testing/web-platform/meta/css/css-values-3/vh_not_refreshing_on_chrome.html.ini deleted file mode 100644 index f5ba362c0538..000000000000 --- a/testing/web-platform/meta/css/css-values-3/vh_not_refreshing_on_chrome.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[vh_not_refreshing_on_chrome.html] - type: reftest - expected: FAIL diff --git a/testing/web-platform/meta/css/geometry-1/spec-examples.html.ini b/testing/web-platform/meta/css/geometry-1/spec-examples.html.ini new file mode 100644 index 000000000000..682d571e9190 --- /dev/null +++ b/testing/web-platform/meta/css/geometry-1/spec-examples.html.ini @@ -0,0 +1,14 @@ +[spec-examples.html] + type: testharness + [matrixTransform] + expected: FAIL + + [DOMQuad] + expected: FAIL + + [DOMQuad irregular] + expected: FAIL + + [DOMMatrix NaN] + expected: FAIL + diff --git a/testing/web-platform/meta/cssom-view/interfaces.html.ini b/testing/web-platform/meta/cssom-view/interfaces.html.ini new file mode 100644 index 000000000000..da6509a76092 --- /dev/null +++ b/testing/web-platform/meta/cssom-view/interfaces.html.ini @@ -0,0 +1,8 @@ +[interfaces.html] + type: testharness + [Screen interface: existence and properties of interface object] + expected: FAIL + + [Screen interface: existence and properties of interface prototype object] + expected: FAIL + diff --git a/testing/web-platform/meta/cssom-view/scrollintoview.html.ini b/testing/web-platform/meta/cssom-view/scrollintoview.html.ini new file mode 100644 index 000000000000..a2240f8e6137 --- /dev/null +++ b/testing/web-platform/meta/cssom-view/scrollintoview.html.ini @@ -0,0 +1,38 @@ +[scrollintoview.html] + type: testharness + [scrollIntoView({block: "center", inline: "center"}) starting at left,top] + expected: FAIL + + [scrollIntoView({block: "center", inline: "center"}) starting at left,bottom] + expected: FAIL + + [scrollIntoView({block: "center", inline: "center"}) starting at right,top] + expected: FAIL + + [scrollIntoView({block: "center", inline: "center"}) starting at right,bottom] + expected: FAIL + + [scrollIntoView({block: "start", inline: "start"}) starting at left,top] + expected: FAIL + + [scrollIntoView({block: "start", inline: "start"}) starting at left,bottom] + expected: FAIL + + [scrollIntoView({block: "end", inline: "end"}) starting at right,top] + expected: FAIL + + [scrollIntoView({block: "end", inline: "end"}) starting at right,bottom] + expected: FAIL + + [scrollIntoView({block: "nearest", inline: "nearest"}) starting at left,top] + expected: FAIL + + [scrollIntoView({block: "nearest", inline: "nearest"}) starting at left,bottom] + expected: FAIL + + [scrollIntoView({block: "nearest", inline: "nearest"}) starting at right,top] + expected: FAIL + + [scrollIntoView({block: "nearest", inline: "nearest"}) starting at right,bottom] + expected: FAIL + diff --git a/testing/web-platform/meta/cssom/getComputedStyle-pseudo.html.ini b/testing/web-platform/meta/cssom/getComputedStyle-pseudo.html.ini index 0ff94a4840c0..c5e49d935c62 100644 --- a/testing/web-platform/meta/cssom/getComputedStyle-pseudo.html.ini +++ b/testing/web-platform/meta/cssom/getComputedStyle-pseudo.html.ini @@ -4,3 +4,4 @@ [Item-based blockification of nonexistent pseudo-elements] expected: if stylo: FAIL + diff --git a/testing/web-platform/meta/cssom/interfaces.html.ini b/testing/web-platform/meta/cssom/interfaces.html.ini index 33564bd534da..20674c2ce8e3 100644 --- a/testing/web-platform/meta/cssom/interfaces.html.ini +++ b/testing/web-platform/meta/cssom/interfaces.html.ini @@ -117,3 +117,243 @@ [CSSStyleDeclaration interface: operation setPropertyPriority(DOMString, DOMString)] expected: FAIL + [CSSRule interface: style_element.sheet.cssRules[4\] must inherit property "MARGIN_RULE" with the proper type] + expected: FAIL + + [CSSPageRule interface: style_element.sheet.cssRules[2\] must inherit property "selectorText" with the proper type] + expected: FAIL + + [CSSGroupingRule interface: style_element.sheet.cssRules[2\] must inherit property "cssRules" with the proper type] + expected: FAIL + + [CSSGroupingRule interface: style_element.sheet.cssRules[2\] must inherit property "insertRule(CSSOMString, unsigned long)" with the proper type] + expected: FAIL + + [CSSGroupingRule interface: calling insertRule(CSSOMString, unsigned long) on style_element.sheet.cssRules[2\] with too few arguments must throw TypeError] + expected: FAIL + + [CSSGroupingRule interface: style_element.sheet.cssRules[2\] must inherit property "deleteRule(unsigned long)" with the proper type] + expected: FAIL + + [CSSGroupingRule interface: calling deleteRule(unsigned long) on style_element.sheet.cssRules[2\] with too few arguments must throw TypeError] + expected: FAIL + + [CSSRule interface: style_element.sheet.cssRules[2\] must inherit property "MARGIN_RULE" with the proper type] + expected: FAIL + + [CSSMarginRule must be primary interface of style_element.sheet.cssRules[2\].cssRules[0\]] + expected: FAIL + + [Stringification of style_element.sheet.cssRules[2\].cssRules[0\]] + expected: FAIL + + [CSSMarginRule interface: style_element.sheet.cssRules[2\].cssRules[0\] must inherit property "name" with the proper type] + expected: FAIL + + [CSSMarginRule interface: style_element.sheet.cssRules[2\].cssRules[0\] must inherit property "style" with the proper type] + expected: FAIL + + [CSSRule interface: style_element.sheet.cssRules[2\].cssRules[0\] must inherit property "STYLE_RULE" with the proper type] + expected: FAIL + + [CSSRule interface: style_element.sheet.cssRules[2\].cssRules[0\] must inherit property "CHARSET_RULE" with the proper type] + expected: FAIL + + [CSSRule interface: style_element.sheet.cssRules[2\].cssRules[0\] must inherit property "IMPORT_RULE" with the proper type] + expected: FAIL + + [CSSRule interface: style_element.sheet.cssRules[2\].cssRules[0\] must inherit property "MEDIA_RULE" with the proper type] + expected: FAIL + + [CSSRule interface: style_element.sheet.cssRules[2\].cssRules[0\] must inherit property "FONT_FACE_RULE" with the proper type] + expected: FAIL + + [CSSRule interface: style_element.sheet.cssRules[2\].cssRules[0\] must inherit property "PAGE_RULE" with the proper type] + expected: FAIL + + [CSSRule interface: style_element.sheet.cssRules[2\].cssRules[0\] must inherit property "MARGIN_RULE" with the proper type] + expected: FAIL + + [CSSRule interface: style_element.sheet.cssRules[2\].cssRules[0\] must inherit property "NAMESPACE_RULE" with the proper type] + expected: FAIL + + [CSSRule interface: style_element.sheet.cssRules[2\].cssRules[0\] must inherit property "type" with the proper type] + expected: FAIL + + [CSSRule interface: style_element.sheet.cssRules[2\].cssRules[0\] must inherit property "cssText" with the proper type] + expected: FAIL + + [CSSRule interface: style_element.sheet.cssRules[2\].cssRules[0\] must inherit property "parentRule" with the proper type] + expected: FAIL + + [CSSRule interface: style_element.sheet.cssRules[2\].cssRules[0\] must inherit property "parentStyleSheet" with the proper type] + expected: FAIL + + [CSSNamespaceRule interface: style_element.sheet.cssRules[1\] must inherit property "namespaceURI" with the proper type] + expected: FAIL + + [CSSNamespaceRule interface: style_element.sheet.cssRules[1\] must inherit property "prefix" with the proper type] + expected: FAIL + + [CSSRule interface: style_element.sheet.cssRules[1\] must inherit property "MARGIN_RULE" with the proper type] + expected: FAIL + + [CSSStyleDeclaration interface: operation setPropertyValue(CSSOMString, CSSOMString)] + expected: FAIL + + [CSSStyleDeclaration interface: operation setPropertyPriority(CSSOMString, CSSOMString)] + expected: FAIL + + [CSSStyleDeclaration must be primary interface of style_element.sheet.cssRules[4\].style] + expected: FAIL + + [Stringification of style_element.sheet.cssRules[4\].style] + expected: FAIL + + [CSSStyleDeclaration interface: style_element.sheet.cssRules[4\].style must inherit property "setPropertyValue(CSSOMString, CSSOMString)" with the proper type] + expected: FAIL + + [CSSStyleDeclaration interface: calling setPropertyValue(CSSOMString, CSSOMString) on style_element.sheet.cssRules[4\].style with too few arguments must throw TypeError] + expected: FAIL + + [CSSStyleDeclaration interface: style_element.sheet.cssRules[4\].style must inherit property "setPropertyPriority(CSSOMString, CSSOMString)" with the proper type] + expected: FAIL + + [CSSStyleDeclaration interface: calling setPropertyPriority(CSSOMString, CSSOMString) on style_element.sheet.cssRules[4\].style with too few arguments must throw TypeError] + expected: FAIL + + [CSSStyleDeclaration must be primary interface of style_element.sheet.cssRules[2\].style] + expected: FAIL + + [Stringification of style_element.sheet.cssRules[2\].style] + expected: FAIL + + [CSSStyleDeclaration interface: style_element.sheet.cssRules[2\].style must inherit property "setPropertyValue(CSSOMString, CSSOMString)" with the proper type] + expected: FAIL + + [CSSStyleDeclaration interface: calling setPropertyValue(CSSOMString, CSSOMString) on style_element.sheet.cssRules[2\].style with too few arguments must throw TypeError] + expected: FAIL + + [CSSStyleDeclaration interface: style_element.sheet.cssRules[2\].style must inherit property "setPropertyPriority(CSSOMString, CSSOMString)" with the proper type] + expected: FAIL + + [CSSStyleDeclaration interface: calling setPropertyPriority(CSSOMString, CSSOMString) on style_element.sheet.cssRules[2\].style with too few arguments must throw TypeError] + expected: FAIL + + [CSSStyleDeclaration must be primary interface of style_element.sheet.cssRules[2\].cssRules[0\].style] + expected: FAIL + + [Stringification of style_element.sheet.cssRules[2\].cssRules[0\].style] + expected: FAIL + + [CSSStyleDeclaration interface: style_element.sheet.cssRules[2\].cssRules[0\].style must inherit property "cssText" with the proper type] + expected: FAIL + + [CSSStyleDeclaration interface: style_element.sheet.cssRules[2\].cssRules[0\].style must inherit property "length" with the proper type] + expected: FAIL + + [CSSStyleDeclaration interface: style_element.sheet.cssRules[2\].cssRules[0\].style must inherit property "item(unsigned long)" with the proper type] + expected: FAIL + + [CSSStyleDeclaration interface: calling item(unsigned long) on style_element.sheet.cssRules[2\].cssRules[0\].style with too few arguments must throw TypeError] + expected: FAIL + + [CSSStyleDeclaration interface: style_element.sheet.cssRules[2\].cssRules[0\].style must inherit property "getPropertyValue(CSSOMString)" with the proper type] + expected: FAIL + + [CSSStyleDeclaration interface: calling getPropertyValue(CSSOMString) on style_element.sheet.cssRules[2\].cssRules[0\].style with too few arguments must throw TypeError] + expected: FAIL + + [CSSStyleDeclaration interface: style_element.sheet.cssRules[2\].cssRules[0\].style must inherit property "getPropertyPriority(CSSOMString)" with the proper type] + expected: FAIL + + [CSSStyleDeclaration interface: calling getPropertyPriority(CSSOMString) on style_element.sheet.cssRules[2\].cssRules[0\].style with too few arguments must throw TypeError] + expected: FAIL + + [CSSStyleDeclaration interface: style_element.sheet.cssRules[2\].cssRules[0\].style must inherit property "setProperty(CSSOMString, CSSOMString, CSSOMString)" with the proper type] + expected: FAIL + + [CSSStyleDeclaration interface: calling setProperty(CSSOMString, CSSOMString, CSSOMString) on style_element.sheet.cssRules[2\].cssRules[0\].style with too few arguments must throw TypeError] + expected: FAIL + + [CSSStyleDeclaration interface: style_element.sheet.cssRules[2\].cssRules[0\].style must inherit property "setPropertyValue(CSSOMString, CSSOMString)" with the proper type] + expected: FAIL + + [CSSStyleDeclaration interface: calling setPropertyValue(CSSOMString, CSSOMString) on style_element.sheet.cssRules[2\].cssRules[0\].style with too few arguments must throw TypeError] + expected: FAIL + + [CSSStyleDeclaration interface: style_element.sheet.cssRules[2\].cssRules[0\].style must inherit property "setPropertyPriority(CSSOMString, CSSOMString)" with the proper type] + expected: FAIL + + [CSSStyleDeclaration interface: calling setPropertyPriority(CSSOMString, CSSOMString) on style_element.sheet.cssRules[2\].cssRules[0\].style with too few arguments must throw TypeError] + expected: FAIL + + [CSSStyleDeclaration interface: style_element.sheet.cssRules[2\].cssRules[0\].style must inherit property "removeProperty(CSSOMString)" with the proper type] + expected: FAIL + + [CSSStyleDeclaration interface: calling removeProperty(CSSOMString) on style_element.sheet.cssRules[2\].cssRules[0\].style with too few arguments must throw TypeError] + expected: FAIL + + [CSSStyleDeclaration interface: style_element.sheet.cssRules[2\].cssRules[0\].style must inherit property "parentRule" with the proper type] + expected: FAIL + + [CSSStyleDeclaration interface: style_element.sheet.cssRules[2\].cssRules[0\].style must inherit property "cssFloat" with the proper type] + expected: FAIL + + [CSSStyleDeclaration must be primary interface of style_element.style] + expected: FAIL + + [Stringification of style_element.style] + expected: FAIL + + [CSSStyleDeclaration interface: style_element.style must inherit property "setPropertyValue(CSSOMString, CSSOMString)" with the proper type] + expected: FAIL + + [CSSStyleDeclaration interface: calling setPropertyValue(CSSOMString, CSSOMString) on style_element.style with too few arguments must throw TypeError] + expected: FAIL + + [CSSStyleDeclaration interface: style_element.style must inherit property "setPropertyPriority(CSSOMString, CSSOMString)" with the proper type] + expected: FAIL + + [CSSStyleDeclaration interface: calling setPropertyPriority(CSSOMString, CSSOMString) on style_element.style with too few arguments must throw TypeError] + expected: FAIL + + [CSSStyleDeclaration must be primary interface of svg_element.style] + expected: FAIL + + [Stringification of svg_element.style] + expected: FAIL + + [CSSStyleDeclaration interface: svg_element.style must inherit property "setPropertyValue(CSSOMString, CSSOMString)" with the proper type] + expected: FAIL + + [CSSStyleDeclaration interface: calling setPropertyValue(CSSOMString, CSSOMString) on svg_element.style with too few arguments must throw TypeError] + expected: FAIL + + [CSSStyleDeclaration interface: svg_element.style must inherit property "setPropertyPriority(CSSOMString, CSSOMString)" with the proper type] + expected: FAIL + + [CSSStyleDeclaration interface: calling setPropertyPriority(CSSOMString, CSSOMString) on svg_element.style with too few arguments must throw TypeError] + expected: FAIL + + [CSSStyleDeclaration must be primary interface of getComputedStyle(svg_element)] + expected: FAIL + + [Stringification of getComputedStyle(svg_element)] + expected: FAIL + + [CSSStyleDeclaration interface: getComputedStyle(svg_element) must inherit property "setPropertyValue(CSSOMString, CSSOMString)" with the proper type] + expected: FAIL + + [CSSStyleDeclaration interface: calling setPropertyValue(CSSOMString, CSSOMString) on getComputedStyle(svg_element) with too few arguments must throw TypeError] + expected: FAIL + + [CSSStyleDeclaration interface: getComputedStyle(svg_element) must inherit property "setPropertyPriority(CSSOMString, CSSOMString)" with the proper type] + expected: FAIL + + [CSSStyleDeclaration interface: calling setPropertyPriority(CSSOMString, CSSOMString) on getComputedStyle(svg_element) with too few arguments must throw TypeError] + expected: FAIL + + [CSS interface: operation escape(CSSOMString)] + expected: FAIL + diff --git a/testing/web-platform/meta/encrypted-media/encrypted-media-default-feature-policy.https.sub.html.ini b/testing/web-platform/meta/encrypted-media/encrypted-media-default-feature-policy.https.sub.html.ini new file mode 100644 index 000000000000..d32e2b45b3f4 --- /dev/null +++ b/testing/web-platform/meta/encrypted-media/encrypted-media-default-feature-policy.https.sub.html.ini @@ -0,0 +1,12 @@ +[encrypted-media-default-feature-policy.https.sub.html] + type: testharness + expected: TIMEOUT + [Default "encrypted-media" feature policy ["self"\] allows same-origin iframes.] + expected: TIMEOUT + + [Default "encrypted-media" feature policy ["self"\] disallows cross-origin iframes.] + expected: FAIL + + [Feature policy "encrypted-media" can be enabled in cross-origin iframes using "allow" attribute.] + expected: FAIL + diff --git a/testing/web-platform/meta/payment-request/payment-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html.ini b/testing/web-platform/meta/feature-policy/payment-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html.ini similarity index 100% rename from testing/web-platform/meta/payment-request/payment-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html.ini rename to testing/web-platform/meta/feature-policy/payment-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html.ini diff --git a/testing/web-platform/meta/payment-request/payment-allowed-by-feature-policy-attribute.https.sub.html.ini b/testing/web-platform/meta/feature-policy/payment-allowed-by-feature-policy-attribute.https.sub.html.ini similarity index 100% rename from testing/web-platform/meta/payment-request/payment-allowed-by-feature-policy-attribute.https.sub.html.ini rename to testing/web-platform/meta/feature-policy/payment-allowed-by-feature-policy-attribute.https.sub.html.ini diff --git a/testing/web-platform/meta/payment-request/payment-allowed-by-feature-policy.https.sub.html.ini b/testing/web-platform/meta/feature-policy/payment-allowed-by-feature-policy.https.sub.html.ini similarity index 100% rename from testing/web-platform/meta/payment-request/payment-allowed-by-feature-policy.https.sub.html.ini rename to testing/web-platform/meta/feature-policy/payment-allowed-by-feature-policy.https.sub.html.ini diff --git a/testing/web-platform/meta/payment-request/payment-default-feature-policy.https.sub.html.ini b/testing/web-platform/meta/feature-policy/payment-default-feature-policy.https.sub.html.ini similarity index 100% rename from testing/web-platform/meta/payment-request/payment-default-feature-policy.https.sub.html.ini rename to testing/web-platform/meta/feature-policy/payment-default-feature-policy.https.sub.html.ini diff --git a/testing/web-platform/meta/payment-request/payment-disabled-by-feature-policy.https.sub.html.ini b/testing/web-platform/meta/feature-policy/payment-disabled-by-feature-policy.https.sub.html.ini similarity index 100% rename from testing/web-platform/meta/payment-request/payment-disabled-by-feature-policy.https.sub.html.ini rename to testing/web-platform/meta/feature-policy/payment-disabled-by-feature-policy.https.sub.html.ini diff --git a/testing/web-platform/meta/fetch/api/cors/cors-expose-star-worker.html.ini b/testing/web-platform/meta/fetch/api/cors/cors-expose-star-worker.html.ini index 13682015a61d..41256db968d9 100644 --- a/testing/web-platform/meta/fetch/api/cors/cors-expose-star-worker.html.ini +++ b/testing/web-platform/meta/fetch/api/cors/cors-expose-star-worker.html.ini @@ -3,3 +3,6 @@ [Basic Access-Control-Expose-Headers: * support] expected: FAIL + [* can be one of several values] + expected: FAIL + diff --git a/testing/web-platform/meta/fetch/api/cors/cors-expose-star.html.ini b/testing/web-platform/meta/fetch/api/cors/cors-expose-star.html.ini index ca034df2169a..2dcee9d9ad6a 100644 --- a/testing/web-platform/meta/fetch/api/cors/cors-expose-star.html.ini +++ b/testing/web-platform/meta/fetch/api/cors/cors-expose-star.html.ini @@ -3,3 +3,6 @@ [Basic Access-Control-Expose-Headers: * support] expected: FAIL + [* can be one of several values] + expected: FAIL + diff --git a/testing/web-platform/meta/fetch/api/headers/headers-basic.html.ini b/testing/web-platform/meta/fetch/api/headers/headers-basic.html.ini index 4012104a5d48..0321618e55a0 100644 --- a/testing/web-platform/meta/fetch/api/headers/headers-basic.html.ini +++ b/testing/web-platform/meta/fetch/api/headers/headers-basic.html.ini @@ -1,6 +1,5 @@ [headers-basic.html] type: testharness - [Create headers with existing headers with custom iterator] expected: FAIL diff --git a/testing/web-platform/meta/generic-sensor/idlharness.html.ini b/testing/web-platform/meta/generic-sensor/idlharness.https.html.ini similarity index 62% rename from testing/web-platform/meta/generic-sensor/idlharness.html.ini rename to testing/web-platform/meta/generic-sensor/idlharness.https.html.ini index 48194ab395cf..1556ba8447c0 100644 --- a/testing/web-platform/meta/generic-sensor/idlharness.html.ini +++ b/testing/web-platform/meta/generic-sensor/idlharness.https.html.ini @@ -1,4 +1,4 @@ -[idlharness.html] +[idlharness.https.html] type: testharness [SensorErrorEvent interface: existence and properties of interface object] expected: FAIL @@ -18,24 +18,12 @@ [SensorErrorEvent interface: attribute error] expected: FAIL - [SensorErrorEvent must be primary interface of new SensorErrorEvent({ error: new TypeError("Boom!") });] - expected: FAIL - - [Stringification of new SensorErrorEvent({ error: new TypeError("Boom!") });] - expected: FAIL - - [SensorErrorEvent interface: new SensorErrorEvent({ error: new TypeError("Boom!") }); must inherit property "error" with the proper type (0)] - expected: FAIL - [SensorErrorEvent must be primary interface of new SensorErrorEvent("SECURITY_ERR", { errorCode: 18 });] expected: FAIL [Stringification of new SensorErrorEvent("SECURITY_ERR", { errorCode: 18 });] expected: FAIL - [SensorErrorEvent interface: new SensorErrorEvent("SECURITY_ERR", { errorCode: 18 }); must inherit property "error" with the proper type (0)] - expected: FAIL - [SensorErrorEvent interface: new SensorErrorEvent("SECURITY_ERR", { errorCode: 18 }); must inherit property "error" with the proper type] expected: FAIL diff --git a/testing/web-platform/meta/gyroscope/idlharness.https.html.ini b/testing/web-platform/meta/gyroscope/idlharness.https.html.ini index 7a0e55d640f3..a401a70adaa0 100644 --- a/testing/web-platform/meta/gyroscope/idlharness.https.html.ini +++ b/testing/web-platform/meta/gyroscope/idlharness.https.html.ini @@ -123,3 +123,60 @@ [Gyroscope interface: new Gyroscope(); must inherit property "z" with the proper type] expected: FAIL + [Sensor interface: existence and properties of interface object] + expected: FAIL + + [Sensor interface object length] + expected: FAIL + + [Sensor interface object name] + expected: FAIL + + [Sensor interface: existence and properties of interface prototype object] + expected: FAIL + + [Sensor interface: existence and properties of interface prototype object's "constructor" property] + expected: FAIL + + [Sensor interface: attribute activated] + expected: FAIL + + [Sensor interface: attribute timestamp] + expected: FAIL + + [Sensor interface: operation start()] + expected: FAIL + + [Sensor interface: operation stop()] + expected: FAIL + + [Sensor interface: attribute onreading] + expected: FAIL + + [Sensor interface: attribute onactivate] + expected: FAIL + + [Sensor interface: attribute onerror] + expected: FAIL + + [Sensor interface: new Gyroscope(); must inherit property "activated" with the proper type] + expected: FAIL + + [Sensor interface: new Gyroscope(); must inherit property "timestamp" with the proper type] + expected: FAIL + + [Sensor interface: new Gyroscope(); must inherit property "start()" with the proper type] + expected: FAIL + + [Sensor interface: new Gyroscope(); must inherit property "stop()" with the proper type] + expected: FAIL + + [Sensor interface: new Gyroscope(); must inherit property "onreading" with the proper type] + expected: FAIL + + [Sensor interface: new Gyroscope(); must inherit property "onactivate" with the proper type] + expected: FAIL + + [Sensor interface: new Gyroscope(); must inherit property "onerror" with the proper type] + expected: FAIL + diff --git a/testing/web-platform/meta/html/dom/interfaces.html.ini b/testing/web-platform/meta/html/dom/interfaces.html.ini index 5ecd2015720d..bc1c6c5350b7 100644 --- a/testing/web-platform/meta/html/dom/interfaces.html.ini +++ b/testing/web-platform/meta/html/dom/interfaces.html.ini @@ -4354,3 +4354,6 @@ [HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onunhandledrejection" with the proper type] expected: FAIL + [Test driver] + expected: FAIL + diff --git a/testing/web-platform/meta/html/dom/interfaces.worker.js.ini b/testing/web-platform/meta/html/dom/interfaces.worker.js.ini index 8f19116d7a65..cd3713f992d7 100644 --- a/testing/web-platform/meta/html/dom/interfaces.worker.js.ini +++ b/testing/web-platform/meta/html/dom/interfaces.worker.js.ini @@ -74,6 +74,7 @@ [WorkerGlobalScope interface: self must inherit property "onlanguagechange" with the proper type (5)] expected: FAIL + [CanvasGradient interface: existence and properties of interface object] expected: FAIL @@ -424,3 +425,7 @@ [WorkerGlobalScope interface: self must inherit property "onunhandledrejection" with the proper type] expected: FAIL + + [Test driver] + expected: FAIL + diff --git a/testing/web-platform/meta/html/infrastructure/common-dom-interfaces/collections/htmlallcollection.html.ini b/testing/web-platform/meta/html/infrastructure/common-dom-interfaces/collections/htmlallcollection.html.ini index 60f4f0ecad7c..f1a65cdc0677 100644 --- a/testing/web-platform/meta/html/infrastructure/common-dom-interfaces/collections/htmlallcollection.html.ini +++ b/testing/web-platform/meta/html/infrastructure/common-dom-interfaces/collections/htmlallcollection.html.ini @@ -24,3 +24,9 @@ [collections are new live HTMLCollection instances] expected: FAIL + [legacy caller with undefined] + expected: FAIL + + [item method with undefined] + expected: FAIL + diff --git a/testing/web-platform/meta/html/semantics/document-metadata/the-style-element/style_type.html.ini b/testing/web-platform/meta/html/semantics/document-metadata/the-style-element/style_type.html.ini new file mode 100644 index 000000000000..03cd84bae40a --- /dev/null +++ b/testing/web-platform/meta/html/semantics/document-metadata/the-style-element/style_type.html.ini @@ -0,0 +1,8 @@ +[style_type.html] + type: testharness + [With a whitespace-surrounded type attribute, the style should not apply] + expected: FAIL + + [With a charset parameter in the type attribute, the style should not apply] + expected: FAIL + diff --git a/testing/web-platform/meta/html/semantics/embedded-content/media-elements/track/track-element/track-cue-order.html.ini b/testing/web-platform/meta/html/semantics/embedded-content/media-elements/track/track-element/track-cue-order.html.ini new file mode 100644 index 000000000000..e4cde8471f2d --- /dev/null +++ b/testing/web-platform/meta/html/semantics/embedded-content/media-elements/track/track-element/track-cue-order.html.ini @@ -0,0 +1,5 @@ +[track-cue-order.html] + type: testharness + [Text track cue order, equal start and end times with startTime mutations.] + expected: FAIL + diff --git a/testing/web-platform/meta/html/semantics/interfaces.html.ini b/testing/web-platform/meta/html/semantics/interfaces.html.ini index 8d6b945c39c6..f191cad52f01 100644 --- a/testing/web-platform/meta/html/semantics/interfaces.html.ini +++ b/testing/web-platform/meta/html/semantics/interfaces.html.ini @@ -34,9 +34,3 @@ [Interfaces for Ã¥-bar] expected: FAIL - [Interfaces for applet] - expected: FAIL - - [Interfaces for APPLET] - expected: FAIL - diff --git a/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/script-languages-01.html.ini b/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/script-languages-01.html.ini deleted file mode 100644 index 83477b02edc3..000000000000 --- a/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/script-languages-01.html.ini +++ /dev/null @@ -1,8 +0,0 @@ -[script-languages-01.html] - type: testharness - [Script @type: unknown parameters] - expected: FAIL - - [Script @type: unknown parameters 1] - expected: FAIL - diff --git a/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/script-languages-02.html.ini b/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/script-type-and-language-js.html.ini similarity index 99% rename from testing/web-platform/meta/html/semantics/scripting-1/the-script-element/script-languages-02.html.ini rename to testing/web-platform/meta/html/semantics/scripting-1/the-script-element/script-type-and-language-js.html.ini index 084e23469512..bf1bf09ca5cb 100644 --- a/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/script-languages-02.html.ini +++ b/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/script-type-and-language-js.html.ini @@ -1,4 +1,4 @@ -[script-languages-02.html] +[script-type-and-language-js.html] type: testharness [Script should run with type="application/ecmascript\\f"] expected: FAIL diff --git a/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/script-type-and-language-with-params.html.ini b/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/script-type-and-language-with-params.html.ini new file mode 100644 index 000000000000..546e56275961 --- /dev/null +++ b/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/script-type-and-language-with-params.html.ini @@ -0,0 +1,11 @@ +[script-type-and-language-with-params.html] + type: testharness + [A script with a charset param in its type should not run] + expected: FAIL + + [A script with an x-test param in its type should not run] + expected: FAIL + + [A script with a charset param in its type should not run, even with language=javascript] + expected: FAIL + diff --git a/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content.html.ini b/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content.html.ini deleted file mode 100644 index 2d2b29bf2847..000000000000 --- a/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content.html.ini +++ /dev/null @@ -1,23 +0,0 @@ -[content.html] - type: testharness - [%s instead of domain name should throw SYNTAX_ERR] - expected: FAIL - - [%s instead of subdomain name should throw syntax_err] - expected: FAIL - - [a url argument pointing to a different domain name, without %s should throw SYNTAX_ERR] - expected: FAIL - - [attempting to override the image/jpeg MIME type should throw SECURITY_ERR] - expected: FAIL - - [attempting to override the text/html MIME type should throw SECURITY_ERR] - expected: FAIL - - [attempting to override the text/javascript MIME type should throw SECURITY_ERR] - expected: FAIL - - [attempting to override the text/plain MIME type should throw SECURITY_ERR] - expected: FAIL - diff --git a/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content/001.xhtml.ini b/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content/001.xhtml.ini deleted file mode 100644 index 3e0823f0cbbd..000000000000 --- a/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content/001.xhtml.ini +++ /dev/null @@ -1,5 +0,0 @@ -[001.xhtml] - type: testharness - [isContentHandlerRegistered for new content type] - expected: FAIL - diff --git a/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content/002.xhtml.ini b/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content/002.xhtml.ini deleted file mode 100644 index a84ad5040d9a..000000000000 --- a/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content/002.xhtml.ini +++ /dev/null @@ -1,5 +0,0 @@ -[002.xhtml] - type: testharness - [isContentHandlerRegistered for content type that is not yet accepted] - expected: FAIL - diff --git a/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content/003.xhtml.ini b/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content/003.xhtml.ini deleted file mode 100644 index 723c18f52f58..000000000000 --- a/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content/003.xhtml.ini +++ /dev/null @@ -1,5 +0,0 @@ -[003.xhtml] - type: testharness - [Content type case insensitivity in isContentHandlerRegistered] - expected: FAIL - diff --git a/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content/004.xhtml.ini b/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content/004.xhtml.ini deleted file mode 100644 index 91905d892209..000000000000 --- a/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content/004.xhtml.ini +++ /dev/null @@ -1,5 +0,0 @@ -[004.xhtml] - type: testharness - [Non-matching url in isContentHandlerRegistered] - expected: FAIL - diff --git a/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content/005.xhtml.ini b/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content/005.xhtml.ini deleted file mode 100644 index 99a8c7540f45..000000000000 --- a/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content/005.xhtml.ini +++ /dev/null @@ -1,5 +0,0 @@ -[005.xhtml] - type: testharness - [Invalid characters in content type in isContentHandlerRegistered] - expected: FAIL - diff --git a/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content/006.xhtml.ini b/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content/006.xhtml.ini deleted file mode 100644 index a768ca307883..000000000000 --- a/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content/006.xhtml.ini +++ /dev/null @@ -1,5 +0,0 @@ -[006.xhtml] - type: testharness - [Blacklisted content type and isContentHandlerRegistered] - expected: FAIL - diff --git a/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/historical.window.js.ini b/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/historical.window.js.ini new file mode 100644 index 000000000000..d3605aa9c07d --- /dev/null +++ b/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/historical.window.js.ini @@ -0,0 +1,5 @@ +[historical.window.html] + type: testharness + [registerContentHandler() is removed] + expected: FAIL + diff --git a/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/001.xhtml.ini b/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/001.xhtml.ini deleted file mode 100644 index bc745c6d1ad8..000000000000 --- a/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/001.xhtml.ini +++ /dev/null @@ -1,5 +0,0 @@ -[001.xhtml] - type: testharness - [isProtocolHandlerRegistered for new protocol] - expected: FAIL - diff --git a/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/002.xhtml.ini b/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/002.xhtml.ini deleted file mode 100644 index 1de86a1cb2b0..000000000000 --- a/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/002.xhtml.ini +++ /dev/null @@ -1,5 +0,0 @@ -[002.xhtml] - type: testharness - [isProtocolHandlerRegistered for protocol that is not yet accepted] - expected: FAIL - diff --git a/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/003.xhtml.ini b/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/003.xhtml.ini deleted file mode 100644 index 10d85e689270..000000000000 --- a/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/003.xhtml.ini +++ /dev/null @@ -1,5 +0,0 @@ -[003.xhtml] - type: testharness - [Protocol case insensitivity in isProtocolHandlerRegistered] - expected: FAIL - diff --git a/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/004.xhtml.ini b/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/004.xhtml.ini deleted file mode 100644 index d0bc1c3b1478..000000000000 --- a/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/004.xhtml.ini +++ /dev/null @@ -1,5 +0,0 @@ -[004.xhtml] - type: testharness - [Non-matching url in isProtocolHandlerRegistered] - expected: FAIL - diff --git a/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/005.xhtml.ini b/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/005.xhtml.ini deleted file mode 100644 index da3933852b5b..000000000000 --- a/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/005.xhtml.ini +++ /dev/null @@ -1,5 +0,0 @@ -[005.xhtml] - type: testharness - [Invalid characters in protocol scheme and isProtocolHandlerRegistered] - expected: FAIL - diff --git a/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/006.xhtml.ini b/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/006.xhtml.ini deleted file mode 100644 index 1466324af7de..000000000000 --- a/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/006.xhtml.ini +++ /dev/null @@ -1,5 +0,0 @@ -[006.xhtml] - type: testharness - [Scheme outside white list and isProtocolHandlerRegistered] - expected: FAIL - diff --git a/testing/web-platform/meta/input-events/input-events-exec-command.html.ini b/testing/web-platform/meta/input-events/input-events-exec-command.html.ini new file mode 100644 index 000000000000..1fee14e7b80b --- /dev/null +++ b/testing/web-platform/meta/input-events/input-events-exec-command.html.ini @@ -0,0 +1,5 @@ +[input-events-exec-command.html] + type: testharness + [execCommand() should only trigger 'input'] + expected: FAIL + diff --git a/testing/web-platform/meta/magnetometer/idlharness.https.html.ini b/testing/web-platform/meta/magnetometer/idlharness.https.html.ini index 30f47cddc3c9..f4955d0da51f 100644 --- a/testing/web-platform/meta/magnetometer/idlharness.https.html.ini +++ b/testing/web-platform/meta/magnetometer/idlharness.https.html.ini @@ -198,3 +198,81 @@ [UncalibratedMagnetometer interface: new UncalibratedMagnetometer(); must inherit property "zBias" with the proper type] expected: FAIL + [Sensor interface: existence and properties of interface object] + expected: FAIL + + [Sensor interface object length] + expected: FAIL + + [Sensor interface object name] + expected: FAIL + + [Sensor interface: existence and properties of interface prototype object] + expected: FAIL + + [Sensor interface: existence and properties of interface prototype object's "constructor" property] + expected: FAIL + + [Sensor interface: attribute activated] + expected: FAIL + + [Sensor interface: attribute timestamp] + expected: FAIL + + [Sensor interface: operation start()] + expected: FAIL + + [Sensor interface: operation stop()] + expected: FAIL + + [Sensor interface: attribute onreading] + expected: FAIL + + [Sensor interface: attribute onactivate] + expected: FAIL + + [Sensor interface: attribute onerror] + expected: FAIL + + [Sensor interface: new Magnetometer(); must inherit property "activated" with the proper type] + expected: FAIL + + [Sensor interface: new Magnetometer(); must inherit property "timestamp" with the proper type] + expected: FAIL + + [Sensor interface: new Magnetometer(); must inherit property "start()" with the proper type] + expected: FAIL + + [Sensor interface: new Magnetometer(); must inherit property "stop()" with the proper type] + expected: FAIL + + [Sensor interface: new Magnetometer(); must inherit property "onreading" with the proper type] + expected: FAIL + + [Sensor interface: new Magnetometer(); must inherit property "onactivate" with the proper type] + expected: FAIL + + [Sensor interface: new Magnetometer(); must inherit property "onerror" with the proper type] + expected: FAIL + + [Sensor interface: new UncalibratedMagnetometer(); must inherit property "activated" with the proper type] + expected: FAIL + + [Sensor interface: new UncalibratedMagnetometer(); must inherit property "timestamp" with the proper type] + expected: FAIL + + [Sensor interface: new UncalibratedMagnetometer(); must inherit property "start()" with the proper type] + expected: FAIL + + [Sensor interface: new UncalibratedMagnetometer(); must inherit property "stop()" with the proper type] + expected: FAIL + + [Sensor interface: new UncalibratedMagnetometer(); must inherit property "onreading" with the proper type] + expected: FAIL + + [Sensor interface: new UncalibratedMagnetometer(); must inherit property "onactivate" with the proper type] + expected: FAIL + + [Sensor interface: new UncalibratedMagnetometer(); must inherit property "onerror" with the proper type] + expected: FAIL + diff --git a/testing/web-platform/meta/mediacapture-streams/MediaStream-MediaElement-preload-none.https.html.ini b/testing/web-platform/meta/mediacapture-streams/MediaStream-MediaElement-preload-none.https.html.ini index 63e21b55ddb6..5a1b1670b396 100644 --- a/testing/web-platform/meta/mediacapture-streams/MediaStream-MediaElement-preload-none.https.html.ini +++ b/testing/web-platform/meta/mediacapture-streams/MediaStream-MediaElement-preload-none.https.html.ini @@ -1,7 +1,31 @@ [MediaStream-MediaElement-preload-none.https.html] type: testharness + expected: + if debug and not stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): TIMEOUT + if debug and stylo and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): TIMEOUT + if not debug and stylo and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): TIMEOUT + if not debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): TIMEOUT + if debug and stylo and not e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): TIMEOUT + if not debug and stylo and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): TIMEOUT + if not debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): TIMEOUT + if not debug and not stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): TIMEOUT + if debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): TIMEOUT + if debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): TIMEOUT + if debug and stylo and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): TIMEOUT [Test that preload 'none' is ignored for MediaStream object URL used as src] - expected: FAIL + expected: + if debug and not stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): TIMEOUT + if debug and stylo and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): TIMEOUT + if not debug and stylo and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): TIMEOUT + if not debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): TIMEOUT + if debug and stylo and not e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): TIMEOUT + if not debug and stylo and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): TIMEOUT + if not debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): TIMEOUT + if not debug and not stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): TIMEOUT + if debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): TIMEOUT + if debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): TIMEOUT + if debug and stylo and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): TIMEOUT + FAIL [Test that preload 'none' is ignored for MediaStream used as srcObject] expected: FAIL diff --git a/testing/web-platform/meta/mediacapture-streams/MediaStream-MediaElement-srcObject.https.html.ini b/testing/web-platform/meta/mediacapture-streams/MediaStream-MediaElement-srcObject.https.html.ini index 0c94abd5414e..59f01df9a218 100644 --- a/testing/web-platform/meta/mediacapture-streams/MediaStream-MediaElement-srcObject.https.html.ini +++ b/testing/web-platform/meta/mediacapture-streams/MediaStream-MediaElement-srcObject.https.html.ini @@ -1,5 +1,6 @@ [MediaStream-MediaElement-srcObject.https.html] type: testharness + expected: TIMEOUT [Tests that a MediaStream can be assigned to a video element with srcObject] - expected: FAIL + expected: TIMEOUT diff --git a/testing/web-platform/meta/mediacapture-streams/MediaStream-add-audio-track.https.html.ini b/testing/web-platform/meta/mediacapture-streams/MediaStream-add-audio-track.https.html.ini index 440fd8cfc70a..b27c348a3049 100644 --- a/testing/web-platform/meta/mediacapture-streams/MediaStream-add-audio-track.https.html.ini +++ b/testing/web-platform/meta/mediacapture-streams/MediaStream-add-audio-track.https.html.ini @@ -1,5 +1,6 @@ [MediaStream-add-audio-track.https.html] type: testharness + expected: TIMEOUT [Tests that adding a track to a MediaStream works as expected] - expected: FAIL + expected: TIMEOUT diff --git a/testing/web-platform/meta/mediacapture-streams/MediaStream-audio-only.https.html.ini b/testing/web-platform/meta/mediacapture-streams/MediaStream-audio-only.https.html.ini index 793c4e22e703..1d674dea840c 100644 --- a/testing/web-platform/meta/mediacapture-streams/MediaStream-audio-only.https.html.ini +++ b/testing/web-platform/meta/mediacapture-streams/MediaStream-audio-only.https.html.ini @@ -1,5 +1,6 @@ [MediaStream-audio-only.https.html] type: testharness + expected: TIMEOUT [Tests that a MediaStream with exactly one audio track is returned] - expected: FAIL + expected: TIMEOUT diff --git a/testing/web-platform/meta/mediacapture-streams/MediaStream-default-feature-policy.https.sub.html.ini b/testing/web-platform/meta/mediacapture-streams/MediaStream-default-feature-policy.https.sub.html.ini new file mode 100644 index 000000000000..57c04b771528 --- /dev/null +++ b/testing/web-platform/meta/mediacapture-streams/MediaStream-default-feature-policy.https.sub.html.ini @@ -0,0 +1,39 @@ +[MediaStream-default-feature-policy.https.sub.html] + type: testharness + expected: TIMEOUT + [Default "microphone" feature policy ["self"\] allows the top-level document.] + expected: FAIL + + [Default "microphone" feature policy ["self"\] allows same-origin iframes.] + expected: TIMEOUT + + [Default "microphone" feature policy ["self"\] disallows cross-origin iframes.] + expected: FAIL + + [Feature policy "microphone" can be enabled in cross-origin iframes using "allow" attribute.] + expected: FAIL + + [Default "camera" feature policy ["self"\] allows the top-level document.] + expected: FAIL + + [Default "camera" feature policy ["self"\] allows same-origin iframes.] + expected: TIMEOUT + + [Default "camera" feature policy ["self"\] disallows cross-origin iframes.] + expected: FAIL + + [Feature policy "camera" can be enabled in cross-origin iframes using "allow" attribute.] + expected: FAIL + + [Default "camera; microphone" feature policy ["self"\] allows the top-level document.] + expected: FAIL + + [Default "camera; microphone" feature policy ["self"\] allows same-origin iframes.] + expected: TIMEOUT + + [Default "camera; microphone" feature policy ["self"\] disallows cross-origin iframes.] + expected: FAIL + + [Feature policy "camera; microphone" can be enabled in cross-origin iframes using "allow" attribute.] + expected: FAIL + diff --git a/testing/web-platform/meta/mediacapture-streams/MediaStream-finished-add.https.html.ini b/testing/web-platform/meta/mediacapture-streams/MediaStream-finished-add.https.html.ini index 1a810f4c3d1c..7f31d9788225 100644 --- a/testing/web-platform/meta/mediacapture-streams/MediaStream-finished-add.https.html.ini +++ b/testing/web-platform/meta/mediacapture-streams/MediaStream-finished-add.https.html.ini @@ -1,5 +1,6 @@ [MediaStream-finished-add.https.html] type: testharness + expected: TIMEOUT [Tests that adding a track to an inactive MediaStream is allowed] - expected: FAIL + expected: TIMEOUT diff --git a/testing/web-platform/meta/mediacapture-streams/MediaStream-idl.https.html.ini b/testing/web-platform/meta/mediacapture-streams/MediaStream-idl.https.html.ini index 012da9e8a68c..ad9d8748a083 100644 --- a/testing/web-platform/meta/mediacapture-streams/MediaStream-idl.https.html.ini +++ b/testing/web-platform/meta/mediacapture-streams/MediaStream-idl.https.html.ini @@ -1,5 +1,6 @@ [MediaStream-idl.https.html] type: testharness + expected: TIMEOUT [Tests that a MediaStream constructor follows the algorithm set in the spec] - expected: FAIL + expected: TIMEOUT diff --git a/testing/web-platform/meta/mediacapture-streams/MediaStream-removetrack.https.html.ini b/testing/web-platform/meta/mediacapture-streams/MediaStream-removetrack.https.html.ini index 6f34d4627380..5c38a8612a84 100644 --- a/testing/web-platform/meta/mediacapture-streams/MediaStream-removetrack.https.html.ini +++ b/testing/web-platform/meta/mediacapture-streams/MediaStream-removetrack.https.html.ini @@ -1,5 +1,6 @@ [MediaStream-removetrack.https.html] type: testharness + expected: TIMEOUT [Tests that a removal from a MediaStream works as expected] - expected: FAIL + expected: TIMEOUT diff --git a/testing/web-platform/meta/mediacapture-streams/MediaStream-video-only.https.html.ini b/testing/web-platform/meta/mediacapture-streams/MediaStream-video-only.https.html.ini index 395f300f7c7b..8001395b54c2 100644 --- a/testing/web-platform/meta/mediacapture-streams/MediaStream-video-only.https.html.ini +++ b/testing/web-platform/meta/mediacapture-streams/MediaStream-video-only.https.html.ini @@ -1,5 +1,6 @@ [MediaStream-video-only.https.html] type: testharness + expected: TIMEOUT [Tests that a MediaStream with at least one video track is returned] - expected: FAIL + expected: TIMEOUT diff --git a/testing/web-platform/meta/mediacapture-streams/MediaStreamTrack-MediaElement-disabled-audio-is-silence.https.html.ini b/testing/web-platform/meta/mediacapture-streams/MediaStreamTrack-MediaElement-disabled-audio-is-silence.https.html.ini index bc63660e4064..7589ec15d499 100644 --- a/testing/web-platform/meta/mediacapture-streams/MediaStreamTrack-MediaElement-disabled-audio-is-silence.https.html.ini +++ b/testing/web-platform/meta/mediacapture-streams/MediaStreamTrack-MediaElement-disabled-audio-is-silence.https.html.ini @@ -1,5 +1,6 @@ [MediaStreamTrack-MediaElement-disabled-audio-is-silence.https.html] type: testharness + expected: TIMEOUT [Tests that a disabled audio track in a MediaStream is rendered as silence] - expected: FAIL + expected: TIMEOUT diff --git a/testing/web-platform/meta/mediacapture-streams/MediaStreamTrack-MediaElement-disabled-video-is-black.https.html.ini b/testing/web-platform/meta/mediacapture-streams/MediaStreamTrack-MediaElement-disabled-video-is-black.https.html.ini index 7ac34233bb80..9ff2cc000cfa 100644 --- a/testing/web-platform/meta/mediacapture-streams/MediaStreamTrack-MediaElement-disabled-video-is-black.https.html.ini +++ b/testing/web-platform/meta/mediacapture-streams/MediaStreamTrack-MediaElement-disabled-video-is-black.https.html.ini @@ -3,3 +3,6 @@ [Tests that a disabled video track in a MediaStream is rendered as blackness] expected: FAIL + [A disabled video track is rendered as blackness] + expected: FAIL + diff --git a/testing/web-platform/meta/mediacapture-streams/MediaStreamTrack-init.https.html.ini b/testing/web-platform/meta/mediacapture-streams/MediaStreamTrack-init.https.html.ini index 4e847b3fd3c5..df077f58e73a 100644 --- a/testing/web-platform/meta/mediacapture-streams/MediaStreamTrack-init.https.html.ini +++ b/testing/web-platform/meta/mediacapture-streams/MediaStreamTrack-init.https.html.ini @@ -1,5 +1,6 @@ [MediaStreamTrack-init.https.html] type: testharness + expected: TIMEOUT [Tests that the video MediaStreamTrack objects are properly initialized] - expected: FAIL + expected: TIMEOUT diff --git a/testing/web-platform/meta/orientation-sensor/idlharness.https.html.ini b/testing/web-platform/meta/orientation-sensor/idlharness.https.html.ini index ff9da118017a..10e3d9ca2c74 100644 --- a/testing/web-platform/meta/orientation-sensor/idlharness.https.html.ini +++ b/testing/web-platform/meta/orientation-sensor/idlharness.https.html.ini @@ -114,3 +114,81 @@ [OrientationSensor interface: new RelativeOrientationSensor(); must inherit property "populateMatrix(RotationMatrixType)" with the proper type] expected: FAIL + [Sensor interface: existence and properties of interface object] + expected: FAIL + + [Sensor interface object length] + expected: FAIL + + [Sensor interface object name] + expected: FAIL + + [Sensor interface: existence and properties of interface prototype object] + expected: FAIL + + [Sensor interface: existence and properties of interface prototype object's "constructor" property] + expected: FAIL + + [Sensor interface: attribute activated] + expected: FAIL + + [Sensor interface: attribute timestamp] + expected: FAIL + + [Sensor interface: operation start()] + expected: FAIL + + [Sensor interface: operation stop()] + expected: FAIL + + [Sensor interface: attribute onreading] + expected: FAIL + + [Sensor interface: attribute onactivate] + expected: FAIL + + [Sensor interface: attribute onerror] + expected: FAIL + + [Sensor interface: new AbsoluteOrientationSensor(); must inherit property "activated" with the proper type] + expected: FAIL + + [Sensor interface: new AbsoluteOrientationSensor(); must inherit property "timestamp" with the proper type] + expected: FAIL + + [Sensor interface: new AbsoluteOrientationSensor(); must inherit property "start()" with the proper type] + expected: FAIL + + [Sensor interface: new AbsoluteOrientationSensor(); must inherit property "stop()" with the proper type] + expected: FAIL + + [Sensor interface: new AbsoluteOrientationSensor(); must inherit property "onreading" with the proper type] + expected: FAIL + + [Sensor interface: new AbsoluteOrientationSensor(); must inherit property "onactivate" with the proper type] + expected: FAIL + + [Sensor interface: new AbsoluteOrientationSensor(); must inherit property "onerror" with the proper type] + expected: FAIL + + [Sensor interface: new RelativeOrientationSensor(); must inherit property "activated" with the proper type] + expected: FAIL + + [Sensor interface: new RelativeOrientationSensor(); must inherit property "timestamp" with the proper type] + expected: FAIL + + [Sensor interface: new RelativeOrientationSensor(); must inherit property "start()" with the proper type] + expected: FAIL + + [Sensor interface: new RelativeOrientationSensor(); must inherit property "stop()" with the proper type] + expected: FAIL + + [Sensor interface: new RelativeOrientationSensor(); must inherit property "onreading" with the proper type] + expected: FAIL + + [Sensor interface: new RelativeOrientationSensor(); must inherit property "onactivate" with the proper type] + expected: FAIL + + [Sensor interface: new RelativeOrientationSensor(); must inherit property "onerror" with the proper type] + expected: FAIL + diff --git a/testing/web-platform/meta/paint-timing/basetest.html.ini b/testing/web-platform/meta/paint-timing/basetest.html.ini new file mode 100644 index 000000000000..0c9e12b54c66 --- /dev/null +++ b/testing/web-platform/meta/paint-timing/basetest.html.ini @@ -0,0 +1,6 @@ +[basetest.html] + type: testharness + expected: TIMEOUT + [Basic test to check existence of FP and FCP.] + expected: TIMEOUT + diff --git a/testing/web-platform/meta/paint-timing/first-contentful-bg-image.html.ini b/testing/web-platform/meta/paint-timing/first-contentful-bg-image.html.ini new file mode 100644 index 000000000000..ddc56addc6e3 --- /dev/null +++ b/testing/web-platform/meta/paint-timing/first-contentful-bg-image.html.ini @@ -0,0 +1,6 @@ +[first-contentful-bg-image.html] + type: testharness + expected: TIMEOUT + [First contentful paint fires due to background image render.] + expected: TIMEOUT + diff --git a/testing/web-platform/meta/paint-timing/first-contentful-canvas.html.ini b/testing/web-platform/meta/paint-timing/first-contentful-canvas.html.ini new file mode 100644 index 000000000000..dab7e03bf388 --- /dev/null +++ b/testing/web-platform/meta/paint-timing/first-contentful-canvas.html.ini @@ -0,0 +1,6 @@ +[first-contentful-canvas.html] + type: testharness + expected: TIMEOUT + [First contentful paint fires due to canvas render.] + expected: TIMEOUT + diff --git a/testing/web-platform/meta/paint-timing/first-contentful-image.html.ini b/testing/web-platform/meta/paint-timing/first-contentful-image.html.ini new file mode 100644 index 000000000000..5623234b0ad2 --- /dev/null +++ b/testing/web-platform/meta/paint-timing/first-contentful-image.html.ini @@ -0,0 +1,6 @@ +[first-contentful-image.html] + type: testharness + expected: TIMEOUT + [First contentful paint fires due to image render.] + expected: TIMEOUT + diff --git a/testing/web-platform/meta/paint-timing/first-contentful-paint.html.ini b/testing/web-platform/meta/paint-timing/first-contentful-paint.html.ini new file mode 100644 index 000000000000..d981c61f046f --- /dev/null +++ b/testing/web-platform/meta/paint-timing/first-contentful-paint.html.ini @@ -0,0 +1,6 @@ +[first-contentful-paint.html] + type: testharness + expected: TIMEOUT + [First Paint triggered by non-contentful paint. Image load triggers First Contentful Paint.] + expected: TIMEOUT + diff --git a/testing/web-platform/meta/paint-timing/first-contentful-svg.html.ini b/testing/web-platform/meta/paint-timing/first-contentful-svg.html.ini new file mode 100644 index 000000000000..254e84000378 --- /dev/null +++ b/testing/web-platform/meta/paint-timing/first-contentful-svg.html.ini @@ -0,0 +1,6 @@ +[first-contentful-svg.html] + type: testharness + expected: TIMEOUT + [First contentful paint fires due to svg.] + expected: TIMEOUT + diff --git a/testing/web-platform/meta/paint-timing/first-paint-bg-color.html.ini b/testing/web-platform/meta/paint-timing/first-paint-bg-color.html.ini new file mode 100644 index 000000000000..ba2ffe6f6ad1 --- /dev/null +++ b/testing/web-platform/meta/paint-timing/first-paint-bg-color.html.ini @@ -0,0 +1,6 @@ +[first-paint-bg-color.html] + type: testharness + expected: TIMEOUT + [First paint fires due to background color. No FCP] + expected: TIMEOUT + diff --git a/testing/web-platform/meta/paint-timing/first-paint-only.html.ini b/testing/web-platform/meta/paint-timing/first-paint-only.html.ini new file mode 100644 index 000000000000..6443dc05bd35 --- /dev/null +++ b/testing/web-platform/meta/paint-timing/first-paint-only.html.ini @@ -0,0 +1,6 @@ +[first-paint-only.html] + type: testharness + expected: TIMEOUT + [Performance first paint timing entry exists. No first contentful paint.] + expected: TIMEOUT + diff --git a/testing/web-platform/meta/payment-handler/interfaces.https.any.js.ini b/testing/web-platform/meta/payment-handler/interfaces.https.any.js.ini new file mode 100644 index 000000000000..3576af587650 --- /dev/null +++ b/testing/web-platform/meta/payment-handler/interfaces.https.any.js.ini @@ -0,0 +1,113 @@ +[interfaces.https.any.html] + type: testharness + [PaymentManager interface: existence and properties of interface object] + expected: FAIL + + [PaymentManager interface object length] + expected: FAIL + + [PaymentManager interface object name] + expected: FAIL + + [PaymentManager interface: existence and properties of interface prototype object] + expected: FAIL + + [PaymentManager interface: existence and properties of interface prototype object's "constructor" property] + expected: FAIL + + [PaymentManager interface: attribute instruments] + expected: FAIL + + [PaymentManager interface: operation requestPermission()] + expected: FAIL + + [PaymentInstruments interface: existence and properties of interface object] + expected: FAIL + + [PaymentInstruments interface object length] + expected: FAIL + + [PaymentInstruments interface object name] + expected: FAIL + + [PaymentInstruments interface: existence and properties of interface prototype object] + expected: FAIL + + [PaymentInstruments interface: existence and properties of interface prototype object's "constructor" property] + expected: FAIL + + [PaymentInstruments interface: operation delete(DOMString)] + expected: FAIL + + [PaymentInstruments interface: operation get(DOMString)] + expected: FAIL + + [PaymentInstruments interface: operation keys()] + expected: FAIL + + [PaymentInstruments interface: operation has(DOMString)] + expected: FAIL + + [PaymentInstruments interface: operation set(DOMString, PaymentInstrument)] + expected: FAIL + + [PaymentInstruments interface: operation clear()] + expected: FAIL + + +[interfaces.https.any.worker.html] + type: testharness + [PaymentManager interface: existence and properties of interface object] + expected: FAIL + + [PaymentManager interface object length] + expected: FAIL + + [PaymentManager interface object name] + expected: FAIL + + [PaymentManager interface: existence and properties of interface prototype object] + expected: FAIL + + [PaymentManager interface: existence and properties of interface prototype object's "constructor" property] + expected: FAIL + + [PaymentManager interface: attribute instruments] + expected: FAIL + + [PaymentManager interface: member requestPermission] + expected: FAIL + + [PaymentInstruments interface: existence and properties of interface object] + expected: FAIL + + [PaymentInstruments interface object length] + expected: FAIL + + [PaymentInstruments interface object name] + expected: FAIL + + [PaymentInstruments interface: existence and properties of interface prototype object] + expected: FAIL + + [PaymentInstruments interface: existence and properties of interface prototype object's "constructor" property] + expected: FAIL + + [PaymentInstruments interface: operation delete(DOMString)] + expected: FAIL + + [PaymentInstruments interface: operation get(DOMString)] + expected: FAIL + + [PaymentInstruments interface: operation keys()] + expected: FAIL + + [PaymentInstruments interface: operation has(DOMString)] + expected: FAIL + + [PaymentInstruments interface: operation set(DOMString, PaymentInstrument)] + expected: FAIL + + [PaymentInstruments interface: operation clear()] + expected: FAIL + diff --git a/testing/web-platform/meta/payment-request/payment-request-update-event-constructor.https.html.ini b/testing/web-platform/meta/payment-request/PaymentRequestUpdateEvent/constructor.https.html.ini similarity index 85% rename from testing/web-platform/meta/payment-request/payment-request-update-event-constructor.https.html.ini rename to testing/web-platform/meta/payment-request/PaymentRequestUpdateEvent/constructor.https.html.ini index 51abc94969a9..d86e007a9bac 100644 --- a/testing/web-platform/meta/payment-request/payment-request-update-event-constructor.https.html.ini +++ b/testing/web-platform/meta/payment-request/PaymentRequestUpdateEvent/constructor.https.html.ini @@ -1,4 +1,4 @@ -[payment-request-update-event-constructor.https.html] +[constructor.https.html] type: testharness [PaymentRequestUpdateEvent can be constructed in secure-context] expected: FAIL diff --git a/testing/web-platform/meta/payment-request/payment-request-update-event-updatewith-method.https.html.ini b/testing/web-platform/meta/payment-request/PaymentRequestUpdateEvent/updatewith-method.https.html.ini similarity index 84% rename from testing/web-platform/meta/payment-request/payment-request-update-event-updatewith-method.https.html.ini rename to testing/web-platform/meta/payment-request/PaymentRequestUpdateEvent/updatewith-method.https.html.ini index ac8508f8bf87..f6033de31c3a 100644 --- a/testing/web-platform/meta/payment-request/payment-request-update-event-updatewith-method.https.html.ini +++ b/testing/web-platform/meta/payment-request/PaymentRequestUpdateEvent/updatewith-method.https.html.ini @@ -1,4 +1,4 @@ -[payment-request-update-event-updatewith-method.https.html] +[updatewith-method.https.html] type: testharness [Let target be the request which is dispatching the event.] expected: FAIL diff --git a/testing/web-platform/meta/payment-request/interfaces.https.html.ini b/testing/web-platform/meta/payment-request/interfaces.https.html.ini index 46f5632b0e71..850b3d5d995b 100644 --- a/testing/web-platform/meta/payment-request/interfaces.https.html.ini +++ b/testing/web-platform/meta/payment-request/interfaces.https.html.ini @@ -264,3 +264,170 @@ [PaymentResponse interface: operation toJSON()] expected: FAIL + [Document interface: attribute origin] + expected: FAIL + + [ShadowRoot interface: existence and properties of interface object] + expected: + if not debug and stylo and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if debug and stylo and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if debug and stylo and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and stylo and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): FAIL + if debug and stylo and not e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL + if not debug and stylo and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL + if not debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): FAIL + if debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): FAIL + if debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): FAIL + if debug and stylo and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL + + [ShadowRoot interface object length] + expected: + if not debug and stylo and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if debug and stylo and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if debug and stylo and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and stylo and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): FAIL + if debug and stylo and not e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL + if not debug and stylo and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL + if not debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): FAIL + if debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): FAIL + if debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): FAIL + if debug and stylo and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL + + [ShadowRoot interface object name] + expected: + if not debug and stylo and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if debug and stylo and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if debug and stylo and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and stylo and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): FAIL + if debug and stylo and not e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL + if not debug and stylo and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL + if not debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): FAIL + if debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): FAIL + if debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): FAIL + if debug and stylo and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL + + [ShadowRoot interface: existence and properties of interface prototype object] + expected: + if not debug and stylo and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if debug and stylo and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if debug and stylo and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and stylo and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): FAIL + if debug and stylo and not e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL + if not debug and stylo and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL + if not debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): FAIL + if debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): FAIL + if debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): FAIL + if debug and stylo and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL + + [ShadowRoot interface: existence and properties of interface prototype object's "constructor" property] + expected: + if not debug and stylo and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if debug and stylo and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if debug and stylo and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and stylo and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): FAIL + if debug and stylo and not e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL + if not debug and stylo and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL + if not debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): FAIL + if debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): FAIL + if debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): FAIL + if debug and stylo and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL + + [ShadowRoot interface: attribute mode] + expected: FAIL + + [ShadowRoot interface: attribute host] + expected: + if not debug and stylo and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if debug and stylo and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if debug and stylo and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and stylo and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): FAIL + if debug and stylo and not e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL + if not debug and stylo and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL + if not debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): FAIL + if debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): FAIL + if debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): FAIL + if debug and stylo and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL + + [Element interface: attribute slot] + expected: FAIL + + [Element interface: operation attachShadow(ShadowRootInit)] + expected: FAIL + + [Element interface: attribute shadowRoot] + expected: + if not debug and stylo and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if debug and stylo and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if debug and stylo and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and stylo and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): FAIL + if debug and stylo and not e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL + if not debug and stylo and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL + if not debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): FAIL + if debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): FAIL + if debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): FAIL + if debug and stylo and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL + + [Element interface: attribute assignedSlot] + expected: FAIL + + [Text interface: attribute assignedSlot] + expected: FAIL + + [PaymentRequest must be primary interface of new PaymentRequest([{supportedMethods: 'foo'}\], {total: {label: 'bar', amount: {currency: 'USD', value: '0'}} })] + expected: FAIL + + [Stringification of new PaymentRequest([{supportedMethods: 'foo'}\], {total: {label: 'bar', amount: {currency: 'USD', value: '0'}} })] + expected: FAIL + + [PaymentRequest interface: new PaymentRequest([{supportedMethods: 'foo'}\], {total: {label: 'bar', amount: {currency: 'USD', value: '0'}} }) must inherit property "show()" with the proper type] + expected: FAIL + + [PaymentRequest interface: new PaymentRequest([{supportedMethods: 'foo'}\], {total: {label: 'bar', amount: {currency: 'USD', value: '0'}} }) must inherit property "abort()" with the proper type] + expected: FAIL + + [PaymentRequest interface: new PaymentRequest([{supportedMethods: 'foo'}\], {total: {label: 'bar', amount: {currency: 'USD', value: '0'}} }) must inherit property "canMakePayment()" with the proper type] + expected: FAIL + + [PaymentRequest interface: new PaymentRequest([{supportedMethods: 'foo'}\], {total: {label: 'bar', amount: {currency: 'USD', value: '0'}} }) must inherit property "id" with the proper type] + expected: FAIL + + [PaymentRequest interface: new PaymentRequest([{supportedMethods: 'foo'}\], {total: {label: 'bar', amount: {currency: 'USD', value: '0'}} }) must inherit property "shippingAddress" with the proper type] + expected: FAIL + + [PaymentRequest interface: new PaymentRequest([{supportedMethods: 'foo'}\], {total: {label: 'bar', amount: {currency: 'USD', value: '0'}} }) must inherit property "shippingOption" with the proper type] + expected: FAIL + + [PaymentRequest interface: new PaymentRequest([{supportedMethods: 'foo'}\], {total: {label: 'bar', amount: {currency: 'USD', value: '0'}} }) must inherit property "shippingType" with the proper type] + expected: FAIL + + [PaymentRequest interface: new PaymentRequest([{supportedMethods: 'foo'}\], {total: {label: 'bar', amount: {currency: 'USD', value: '0'}} }) must inherit property "onshippingaddresschange" with the proper type] + expected: FAIL + + [PaymentRequest interface: new PaymentRequest([{supportedMethods: 'foo'}\], {total: {label: 'bar', amount: {currency: 'USD', value: '0'}} }) must inherit property "onshippingoptionchange" with the proper type] + expected: FAIL + + [EventTarget interface: new PaymentRequest([{supportedMethods: 'foo'}\], {total: {label: 'bar', amount: {currency: 'USD', value: '0'}} }) must inherit property "addEventListener(DOMString, EventListener, [object Object\],[object Object\])" with the proper type] + expected: FAIL + + [EventTarget interface: calling addEventListener(DOMString, EventListener, [object Object\],[object Object\]) on new PaymentRequest([{supportedMethods: 'foo'}\], {total: {label: 'bar', amount: {currency: 'USD', value: '0'}} }) with too few arguments must throw TypeError] + expected: FAIL + + [EventTarget interface: new PaymentRequest([{supportedMethods: 'foo'}\], {total: {label: 'bar', amount: {currency: 'USD', value: '0'}} }) must inherit property "removeEventListener(DOMString, EventListener, [object Object\],[object Object\])" with the proper type] + expected: FAIL + + [EventTarget interface: calling removeEventListener(DOMString, EventListener, [object Object\],[object Object\]) on new PaymentRequest([{supportedMethods: 'foo'}\], {total: {label: 'bar', amount: {currency: 'USD', value: '0'}} }) with too few arguments must throw TypeError] + expected: FAIL + + [EventTarget interface: new PaymentRequest([{supportedMethods: 'foo'}\], {total: {label: 'bar', amount: {currency: 'USD', value: '0'}} }) must inherit property "dispatchEvent(Event)" with the proper type] + expected: FAIL + + [EventTarget interface: calling dispatchEvent(Event) on new PaymentRequest([{supportedMethods: 'foo'}\], {total: {label: 'bar', amount: {currency: 'USD', value: '0'}} }) with too few arguments must throw TypeError] + expected: FAIL + diff --git a/testing/web-platform/meta/payment-request/payment-request-constructor.https.html.ini b/testing/web-platform/meta/payment-request/payment-request-constructor.https.html.ini index 68c268a823ec..bc568bfee6ab 100644 --- a/testing/web-platform/meta/payment-request/payment-request-constructor.https.html.ini +++ b/testing/web-platform/meta/payment-request/payment-request-constructor.https.html.ini @@ -447,3 +447,15 @@ [Rethrow any exceptions of JSON-serializing modifier.data] expected: FAIL + [If there is a selected shipping option, and requestShipping is set, then that option becomes synchronously selected] + expected: FAIL + + [If requestShipping is set, and if there is a multiple selected shipping options, only the last is selected.] + expected: FAIL + + [If there are any duplicate shipping option ids, and shipping is requested, then throw a TypeError] + expected: FAIL + + [Throw when there are duplicate shippingOption ids, even if other values are different] + expected: FAIL + diff --git a/testing/web-platform/meta/payment-request/payment-request-onshippingaddresschange-attribute.https.html.ini b/testing/web-platform/meta/payment-request/payment-request-onshippingaddresschange-attribute.https.html.ini index 74a92c4b483d..e4522294d0ee 100644 --- a/testing/web-platform/meta/payment-request/payment-request-onshippingaddresschange-attribute.https.html.ini +++ b/testing/web-platform/meta/payment-request/payment-request-onshippingaddresschange-attribute.https.html.ini @@ -9,3 +9,6 @@ [onshippingaddresschange attribute and listeners both work] expected: FAIL + [Must have a onshippingaddresschange IDL attribute] + expected: FAIL + diff --git a/testing/web-platform/meta/payment-request/payment-request-onshippingoptionchange-attribute.https.html.ini b/testing/web-platform/meta/payment-request/payment-request-onshippingoptionchange-attribute.https.html.ini index 86d3f88ee778..05f7023e3a1c 100644 --- a/testing/web-platform/meta/payment-request/payment-request-onshippingoptionchange-attribute.https.html.ini +++ b/testing/web-platform/meta/payment-request/payment-request-onshippingoptionchange-attribute.https.html.ini @@ -9,3 +9,6 @@ [onshippingoptionchange attribute and listeners both work] expected: FAIL + [Must have a onshippingoptionchange IDL attribute] + expected: FAIL + diff --git a/testing/web-platform/meta/payment-request/payment-request-shippingAddress-attribute.https.html.ini b/testing/web-platform/meta/payment-request/payment-request-shippingAddress-attribute.https.html.ini new file mode 100644 index 000000000000..167f567628e1 --- /dev/null +++ b/testing/web-platform/meta/payment-request/payment-request-shippingAddress-attribute.https.html.ini @@ -0,0 +1,8 @@ +[payment-request-shippingAddress-attribute.https.html] + type: testharness + [Must have a .shippingAddress IDL attribute.] + expected: FAIL + + [.shippingAddress attribute must default to null.] + expected: FAIL + diff --git a/testing/web-platform/meta/payment-request/payment-request-shippingOption-attribute.https.html.ini b/testing/web-platform/meta/payment-request/payment-request-shippingOption-attribute.https.html.ini new file mode 100644 index 000000000000..ba5fe5afb978 --- /dev/null +++ b/testing/web-platform/meta/payment-request/payment-request-shippingOption-attribute.https.html.ini @@ -0,0 +1,20 @@ +[payment-request-shippingOption-attribute.https.html] + type: testharness + [Must have a .shippingOption IDL attribute.] + expected: FAIL + + [.shippingOption attribute must default to null.] + expected: FAIL + + [If there is a single shipping option, but selected is false, then .shippingOption must be null.] + expected: FAIL + + [If there are multiple shipping options all with `selected` set to false, then .shippingOption is null.] + expected: FAIL + + [Given multiple shipping options, it must use the selected shipping option for .shippingOption value.] + expected: FAIL + + [If there are multiple of the shipping options with selected true, then .shippingOption is the last selected shipping option in order.] + expected: FAIL + diff --git a/testing/web-platform/meta/payment-request/payment-request-shippingType-attribute.https.html.ini b/testing/web-platform/meta/payment-request/payment-request-shippingType-attribute.https.html.ini index 832f98035c07..d7ce31d1abe4 100644 --- a/testing/web-platform/meta/payment-request/payment-request-shippingType-attribute.https.html.ini +++ b/testing/web-platform/meta/payment-request/payment-request-shippingType-attribute.https.html.ini @@ -6,3 +6,6 @@ [If options.requestShipping is true, request.shippingType will be options.shippingType.] expected: FAIL + [Must have a shippingType IDL attribute] + expected: FAIL + diff --git a/testing/web-platform/meta/payment-request/payment-request-show-method.https.html.ini b/testing/web-platform/meta/payment-request/payment-request-show-method.https.html.ini index 4522cf2f12e0..5954bee14f0c 100644 --- a/testing/web-platform/meta/payment-request/payment-request-show-method.https.html.ini +++ b/testing/web-platform/meta/payment-request/payment-request-show-method.https.html.ini @@ -9,3 +9,6 @@ [If payment method consultation produces no supported method of payment, then return a promise rejected with a "NotSupportedError" DOMException.] expected: FAIL + [Must be possible to construct a payment request] + expected: FAIL + diff --git a/testing/web-platform/meta/payment-request/payment-request-update-event-constructor.http.html.ini b/testing/web-platform/meta/payment-request/payment-request-update-event-constructor.http.html.ini deleted file mode 100644 index 9225f1cab8ce..000000000000 --- a/testing/web-platform/meta/payment-request/payment-request-update-event-constructor.http.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[payment-request-update-event-constructor.http.html] - type: testharness - [PaymentRequestUpdateEvent constructor throws in a non-secure context] - expected: FAIL - diff --git a/testing/web-platform/meta/payment-request/rejects_if_not_active.https.html.ini b/testing/web-platform/meta/payment-request/rejects_if_not_active.https.html.ini new file mode 100644 index 000000000000..f0abcd178ab2 --- /dev/null +++ b/testing/web-platform/meta/payment-request/rejects_if_not_active.https.html.ini @@ -0,0 +1,11 @@ +[rejects_if_not_active.https.html] + type: testharness + [PaymentRequest.show() aborts if the document is not active] + expected: FAIL + + [PaymentRequest.show() aborts if the document is active, but not fully active] + expected: FAIL + + [If a payment request is showing, but its document is navigated away (so no longer fully active), the payment request aborts.] + expected: FAIL + diff --git a/testing/web-platform/meta/performance-timeline/idlharness.html.ini b/testing/web-platform/meta/performance-timeline/idlharness.html.ini deleted file mode 100644 index 12a1ab4d449c..000000000000 --- a/testing/web-platform/meta/performance-timeline/idlharness.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[idlharness.html] - type: testharness - [PerformanceEntry interface: operation toJSON()] - expected: FAIL - diff --git a/testing/web-platform/meta/resource-timing/idlharness.html.ini b/testing/web-platform/meta/resource-timing/idlharness.html.ini deleted file mode 100644 index b8deff89d7fa..000000000000 --- a/testing/web-platform/meta/resource-timing/idlharness.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[idlharness.html] - type: testharness - [PerformanceResourceTiming interface: operation toJSON()] - expected: FAIL - diff --git a/testing/web-platform/meta/service-workers/service-worker/skip-waiting-installed.https.html.ini b/testing/web-platform/meta/service-workers/service-worker/skip-waiting-installed.https.html.ini new file mode 100644 index 000000000000..a45678dcc31f --- /dev/null +++ b/testing/web-platform/meta/service-workers/service-worker/skip-waiting-installed.https.html.ini @@ -0,0 +1,5 @@ +[skip-waiting-installed.https.html] + type: testharness + [Test skipWaiting when a installed worker is waiting] + expected: FAIL + diff --git a/testing/web-platform/meta/url/interfaces.any.js.ini b/testing/web-platform/meta/url/interfaces.any.js.ini index 7027ea65b5a8..fd6d02f39474 100644 --- a/testing/web-platform/meta/url/interfaces.any.js.ini +++ b/testing/web-platform/meta/url/interfaces.any.js.ini @@ -1,14 +1,8 @@ [interfaces.any.worker.html] type: testharness - [Test toJSON operation of URL] - expected: FAIL - [interfaces.any.html] type: testharness [URL interface: legacy window alias] expected: FAIL - [Test toJSON operation of URL] - expected: FAIL - diff --git a/testing/web-platform/meta/webdriver/tests/contexts/maximize_window.py.ini b/testing/web-platform/meta/webdriver/tests/contexts/maximize_window.py.ini index 403c0d01bee0..451855b78b98 100644 --- a/testing/web-platform/meta/webdriver/tests/contexts/maximize_window.py.ini +++ b/testing/web-platform/meta/webdriver/tests/contexts/maximize_window.py.ini @@ -1,8 +1,8 @@ [maximize_window.py] type: wdspec - [maximize_window.py::test_handle_prompt_accept] expected: FAIL [maximize_window.py::test_handle_prompt_missing_value] expected: FAIL + diff --git a/testing/web-platform/meta/webdriver/tests/element_click/select.py.ini b/testing/web-platform/meta/webdriver/tests/element_click/select.py.ini index 93c586a6f6ce..0ed10974c737 100644 --- a/testing/web-platform/meta/webdriver/tests/element_click/select.py.ini +++ b/testing/web-platform/meta/webdriver/tests/element_click/select.py.ini @@ -1,4 +1,4 @@ [select.py] type: wdspec disabled: - if debug: https://bugzilla.mozilla.org/show_bug.cgi?id=1397219 \ No newline at end of file + if debug: https://bugzilla.mozilla.org/show_bug.cgi?id=1397219 diff --git a/testing/web-platform/meta/webdriver/tests/get_window_rect.py.ini b/testing/web-platform/meta/webdriver/tests/get_window_rect.py.ini index 89458c8af664..e66a5b0f5d4c 100644 --- a/testing/web-platform/meta/webdriver/tests/get_window_rect.py.ini +++ b/testing/web-platform/meta/webdriver/tests/get_window_rect.py.ini @@ -5,3 +5,4 @@ [get_window_rect.py::test_handle_prompt_missing_value] expected: FAIL + diff --git a/testing/web-platform/meta/webdriver/tests/minimize_window.py.ini b/testing/web-platform/meta/webdriver/tests/minimize_window.py.ini index c1fe96e757ab..ca338e2fbcdd 100644 --- a/testing/web-platform/meta/webdriver/tests/minimize_window.py.ini +++ b/testing/web-platform/meta/webdriver/tests/minimize_window.py.ini @@ -1,8 +1,8 @@ [minimize_window.py] type: wdspec - [minimize_window.py::test_handle_prompt_accept] expected: FAIL [minimize_window.py::test_handle_prompt_missing_value] expected: FAIL + diff --git a/testing/web-platform/meta/webdriver/tests/set_window_rect.py.ini b/testing/web-platform/meta/webdriver/tests/set_window_rect.py.ini index 96273bff3fe7..15e8857273b7 100644 --- a/testing/web-platform/meta/webdriver/tests/set_window_rect.py.ini +++ b/testing/web-platform/meta/webdriver/tests/set_window_rect.py.ini @@ -5,3 +5,4 @@ [set_window_rect.py::test_handle_prompt_missing_value] expected: FAIL + diff --git a/testing/web-platform/meta/webrtc/RTCPeerConnection-setRemoteDescription-rollback.html.ini b/testing/web-platform/meta/webrtc/RTCPeerConnection-setRemoteDescription-rollback.html.ini new file mode 100644 index 000000000000..a7d3a7e54aa6 --- /dev/null +++ b/testing/web-platform/meta/webrtc/RTCPeerConnection-setRemoteDescription-rollback.html.ini @@ -0,0 +1,9 @@ +[RTCPeerConnection-setRemoteDescription-rollback.html] + type: testharness + expected: TIMEOUT + [setRemoteDescription(rollback) in have-remote-offer state should revert to stable state] + expected: FAIL + + [Test onsignalingstatechange event for setRemoteDescription(rollback) in have-remote-offer state should revert to stable state] + expected: TIMEOUT + diff --git a/testing/web-platform/meta/webrtc/RTCPeerConnection-setRemoteDescription.html.ini b/testing/web-platform/meta/webrtc/RTCPeerConnection-setRemoteDescription.html.ini index 26b7c3104a8b..aaf355ba4e77 100644 --- a/testing/web-platform/meta/webrtc/RTCPeerConnection-setRemoteDescription.html.ini +++ b/testing/web-platform/meta/webrtc/RTCPeerConnection-setRemoteDescription.html.ini @@ -46,3 +46,6 @@ [Test onsignalingstatechange event for Calling setRemoteDescription() again after one round of remote-offer/local-answer should succeed] expected: TIMEOUT + [Test onsignalingstatechange event for Switching role from offerer to answerer after going back to stable state should succeed] + expected: TIMEOUT + diff --git a/testing/web-platform/meta/websockets/constructor/010.html.ini b/testing/web-platform/meta/websockets/constructor/010.html.ini index f286708818ea..e5b18224c368 100644 --- a/testing/web-platform/meta/websockets/constructor/010.html.ini +++ b/testing/web-platform/meta/websockets/constructor/010.html.ini @@ -6,6 +6,3 @@ [010.html?wss] type: testharness - [WebSockets: protocol in response but no requested protocol] - expected: FAIL - diff --git a/testing/web-platform/meta/websockets/constructor/011.html.ini b/testing/web-platform/meta/websockets/constructor/011.html.ini deleted file mode 100644 index f8593fd519b9..000000000000 --- a/testing/web-platform/meta/websockets/constructor/011.html.ini +++ /dev/null @@ -1,11 +0,0 @@ -[011.html?wss] - type: testharness - [WebSockets: protocol mismatch] - expected: FAIL - - -[011.html] - type: testharness - [WebSockets: protocol mismatch] - expected: FAIL - diff --git a/testing/web-platform/meta/workers/worker-performance.worker.js.ini b/testing/web-platform/meta/workers/worker-performance.worker.js.ini new file mode 100644 index 000000000000..f55d148842c1 --- /dev/null +++ b/testing/web-platform/meta/workers/worker-performance.worker.js.ini @@ -0,0 +1,11 @@ +[worker-performance.worker.html] + type: testharness + [Resource timing seems to work in workers] + expected: FAIL + + [performance.clearResourceTimings in workers] + expected: FAIL + + [performance.setResourceTimingBufferSize in workers] + expected: FAIL + From 91592972838abfb7a05fdac6f1c1377e2d7e9e49 Mon Sep 17 00:00:00 2001 From: James Graham Date: Wed, 20 Sep 2017 15:50:06 +0100 Subject: [PATCH 03/56] Bug 1401613 - Don't require test type in wpt expectation manifest, r=maja_zf The test type is already in the MANIFEST.json file and requiring it in the expectation data doesn't make much sense. It isn't used execpt during updates and so people often forget to add it. Therefore it makes a lot of sense to just use the data from the main manifest. MozReview-Commit-ID: HyOoN6T28qc --- .../tests/tools/wptrunner/README.rst | 6 ----- .../wptrunner/wptrunner/manifestupdate.py | 7 +++-- .../tools/wptrunner/wptrunner/metadata.py | 27 ++++++++++--------- .../wptrunner/wptmanifest/serializer.py | 2 ++ 4 files changed, 19 insertions(+), 23 deletions(-) diff --git a/testing/web-platform/tests/tools/wptrunner/README.rst b/testing/web-platform/tests/tools/wptrunner/README.rst index fc650eec45ac..780518aae114 100644 --- a/testing/web-platform/tests/tools/wptrunner/README.rst +++ b/testing/web-platform/tests/tools/wptrunner/README.rst @@ -146,8 +146,6 @@ An example of an expectation file is:: example_default_key: example_value [filename.html] - type: testharness - [subtest1] expected: FAIL @@ -158,7 +156,6 @@ An example of an expectation file is:: FAIL [filename.html?query=something] - type: testharness disabled: bug12345 The file consists of two elements, key-value pairs and @@ -230,9 +227,6 @@ The web-platform-test harness knows about several keys: `disabled` Any value indicates that the test is disabled. -`type` - The test type e.g. `testharness`, `reftest`, or `wdspec`. - `reftype` The type of comparison for reftests; either `==` or `!=`. diff --git a/testing/web-platform/tests/tools/wptrunner/wptrunner/manifestupdate.py b/testing/web-platform/tests/tools/wptrunner/wptrunner/manifestupdate.py index 07e623c5d1bb..d67cffffd504 100644 --- a/testing/web-platform/tests/tools/wptrunner/wptrunner/manifestupdate.py +++ b/testing/web-platform/tests/tools/wptrunner/wptrunner/manifestupdate.py @@ -116,7 +116,7 @@ class TestNode(ManifestItem): self._from_file = True @classmethod - def create(cls, test_type, test_id): + def create(cls, test_id): """Create a TestNode corresponding to a given test :param test_type: The type of the test @@ -127,14 +127,13 @@ class TestNode(ManifestItem): node = DataNode(name) self = cls(node) - self.set("type", test_type) self._from_file = False return self @property def is_empty(self): - required_keys = set(["type"]) - if set(self._data.keys()) != required_keys: + ignore_keys = set(["type"]) + if set(self._data.keys()) - ignore_keys: return False return all(child.is_empty for child in self.children) diff --git a/testing/web-platform/tests/tools/wptrunner/wptrunner/metadata.py b/testing/web-platform/tests/tools/wptrunner/wptrunner/metadata.py index 73f266fb9282..4414258aa989 100644 --- a/testing/web-platform/tests/tools/wptrunner/wptrunner/metadata.py +++ b/testing/web-platform/tests/tools/wptrunner/wptrunner/metadata.py @@ -231,14 +231,16 @@ class ExpectedUpdater(object): def suite_start(self, data): self.run_info = data["run_info"] - def test_id(self, id): - if type(id) in types.StringTypes: - return id - else: - return tuple(id) + def test_type(self, path): + for manifest in self.test_manifests.iterkeys(): + tests = list(manifest.iterpath(path)) + if len(tests): + assert all(test.item_type == tests[0].item_type for test in tests) + return tests[0].item_type + assert False def test_start(self, data): - test_id = self.test_id(data["test"]) + test_id = data["test"] try: test_manifest, test = self.id_path_map[test_id] expected_node = self.expected_tree[test_manifest][test].get_test(test_id) @@ -253,11 +255,10 @@ class ExpectedUpdater(object): self.tests_visited[test_id] = set() def test_status(self, data): - test_id = self.test_id(data["test"]) - test = self.test_cache.get(test_id) + test = self.test_cache.get(data["test"]) if test is None: return - test_cls = wpttest.manifest_test_cls[test.test_type] + test_cls = wpttest.manifest_test_cls[self.test_type(test.root.test_path)] subtest = test.get_subtest(data["subtest"]) @@ -271,11 +272,11 @@ class ExpectedUpdater(object): subtest.set_result(self.run_info, result) def test_end(self, data): - test_id = self.test_id(data["test"]) + test_id = data["test"] test = self.test_cache.get(test_id) if test is None: return - test_cls = wpttest.manifest_test_cls[test.test_type] + test_cls = wpttest.manifest_test_cls[self.test_type(test.root.test_path)] if data["status"] == "SKIP": return @@ -322,7 +323,7 @@ def create_expected(test_manifest, test_path, tests, property_order=None, property_order=property_order, boolean_properties=boolean_properties) for test in tests: - expected.append(manifestupdate.TestNode.create(test.item_type, test.id)) + expected.append(manifestupdate.TestNode.create(test.id)) return expected @@ -346,6 +347,6 @@ def load_expected(test_manifest, metadata_path, test_path, tests, property_order # Add tests that don't have expected data for test in tests: if not expected_manifest.has_test(test.id): - expected_manifest.append(manifestupdate.TestNode.create(test.item_type, test.id)) + expected_manifest.append(manifestupdate.TestNode.create(test.id)) return expected_manifest diff --git a/testing/web-platform/tests/tools/wptrunner/wptrunner/wptmanifest/serializer.py b/testing/web-platform/tests/tools/wptrunner/wptrunner/wptmanifest/serializer.py index 52203ab240a9..3be2a6d94d62 100644 --- a/testing/web-platform/tests/tools/wptrunner/wptrunner/wptmanifest/serializer.py +++ b/testing/web-platform/tests/tools/wptrunner/wptrunner/wptmanifest/serializer.py @@ -28,6 +28,8 @@ class ManifestSerializer(NodeVisitor): def serialize(self, root): self.indent = 2 rv = "\n".join(self.visit(root)) + if not rv: + return rv if rv[-1] != "\n": rv = rv + "\n" return rv From b00f969bb5c68480758878818e580781f26588c2 Mon Sep 17 00:00:00 2001 From: Mats Palmgren Date: Thu, 21 Sep 2017 18:24:10 +0200 Subject: [PATCH 04/56] Bug 1356936 - Use __builtin_add/sub/mul_overflow() where available to optimize CheckedInt. r=waldo,ehsan MozReview-Commit-ID: ARw6zNelpSk --- mfbt/CheckedInt.h | 52 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 51 insertions(+), 1 deletion(-) diff --git a/mfbt/CheckedInt.h b/mfbt/CheckedInt.h index 3eef24365b11..77fc1bb232cc 100644 --- a/mfbt/CheckedInt.h +++ b/mfbt/CheckedInt.h @@ -14,6 +14,23 @@ #include "mozilla/Attributes.h" #include "mozilla/IntegerTypeTraits.h" +// Probe for builtin math overflow support. Disabled for 32-bit builds for now +// since "gcc -m32" claims to support these but its implementation is buggy. +// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82274 +#if defined(HAVE_64BIT_BUILD) +#if defined(__has_builtin) +#define MOZ_HAS_BUILTIN_OP_OVERFLOW (__has_builtin(__builtin_add_overflow)) +#elif defined(__GNUC__) +// (clang also defines __GNUC__ but it supports __has_builtin since at least +// v3.1 (released in 2012) so it won't get here.) +#define MOZ_HAS_BUILTIN_OP_OVERFLOW (__GNUC__ >= 5) +#else +#define MOZ_HAS_BUILTIN_OP_OVERFLOW (0) +#endif +#else +#define MOZ_HAS_BUILTIN_OP_OVERFLOW (0) +#endif + namespace mozilla { template class CheckedInt; @@ -255,6 +272,10 @@ template inline bool IsAddValid(T aX, T aY) { +#if MOZ_HAS_BUILTIN_OP_OVERFLOW + T dummy; + return !__builtin_add_overflow(aX, aY, &dummy); +#else // Addition is valid if the sign of aX+aY is equal to either that of aX or // that of aY. Since the value of aX+aY is undefined if we have a signed // type, we compute it using the unsigned type of the same size. Beware! @@ -267,12 +288,17 @@ IsAddValid(T aX, T aY) return IsSigned::value ? HasSignBit(BinaryComplement(T((result ^ aX) & (result ^ aY)))) : BinaryComplement(aX) >= aY; +#endif } template inline bool IsSubValid(T aX, T aY) { +#if MOZ_HAS_BUILTIN_OP_OVERFLOW + T dummy; + return !__builtin_sub_overflow(aX, aY, &dummy); +#else // Subtraction is valid if either aX and aY have same sign, or aX-aY and aX // have same sign. Since the value of aX-aY is undefined if we have a signed // type, we compute it using the unsigned type of the same size. @@ -283,6 +309,7 @@ IsSubValid(T aX, T aY) return IsSigned::value ? HasSignBit(BinaryComplement(T((result ^ aX) & (aX ^ aY)))) : aX >= aY; +#endif } template inline bool IsMulValid(T aX, T aY) { +#if MOZ_HAS_BUILTIN_OP_OVERFLOW + T dummy; + return !__builtin_mul_overflow(aX, aY, &dummy); +#else return IsMulValidImpl::run(aX, aY); +#endif } template @@ -687,12 +719,30 @@ private: aLhs.mIsValid && aRhs.mIsValid); \ } +#if MOZ_HAS_BUILTIN_OP_OVERFLOW +#define MOZ_CHECKEDINT_BASIC_BINARY_OPERATOR2(NAME, OP, FUN) \ + template \ + inline CheckedInt \ + operator OP(const CheckedInt& aLhs, const CheckedInt& aRhs) \ + { \ + T result; \ + if (FUN(aLhs.mValue, aRhs.mValue, &result)) { \ + return CheckedInt(0, false); \ + } \ + return CheckedInt(result, aLhs.mIsValid && aRhs.mIsValid); \ + } +MOZ_CHECKEDINT_BASIC_BINARY_OPERATOR2(Add, +, __builtin_add_overflow) +MOZ_CHECKEDINT_BASIC_BINARY_OPERATOR2(Sub, -, __builtin_sub_overflow) +MOZ_CHECKEDINT_BASIC_BINARY_OPERATOR2(Mul, *, __builtin_mul_overflow) +#undef MOZ_CHECKEDINT_BASIC_BINARY_OPERATOR2 +#else MOZ_CHECKEDINT_BASIC_BINARY_OPERATOR(Add, +) MOZ_CHECKEDINT_BASIC_BINARY_OPERATOR(Sub, -) MOZ_CHECKEDINT_BASIC_BINARY_OPERATOR(Mul, *) +#endif + MOZ_CHECKEDINT_BASIC_BINARY_OPERATOR(Div, /) MOZ_CHECKEDINT_BASIC_BINARY_OPERATOR(Mod, %) - #undef MOZ_CHECKEDINT_BASIC_BINARY_OPERATOR // Implement castToCheckedInt(x), making sure that From 0c3a1b9b7ebeab48c7bca9b2e3501a05b55820b6 Mon Sep 17 00:00:00 2001 From: Kris Maglione Date: Wed, 20 Sep 2017 16:12:27 -0700 Subject: [PATCH 05/56] Bug 1379148: Part 1 - Allow blocking only non-script-created parsers. r=hsivonen MozReview-Commit-ID: 8cGxywiUzWj --HG-- extra : rebase_source : b684a4a7d00c141a3def4f1cde9d7463c12baa4b --- dom/base/nsDocument.cpp | 10 ++++++---- dom/base/nsIDocument.h | 1 + dom/webidl/Document.webidl | 11 ++++++++++- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/dom/base/nsDocument.cpp b/dom/base/nsDocument.cpp index 55198595d0ec..fc59e3a2e38e 100644 --- a/dom/base/nsDocument.cpp +++ b/dom/base/nsDocument.cpp @@ -10920,11 +10920,12 @@ public: NS_DECL_CYCLE_COLLECTING_ISUPPORTS NS_DECL_CYCLE_COLLECTION_CLASS(UnblockParsingPromiseHandler) - explicit UnblockParsingPromiseHandler(nsIDocument* aDocument, Promise* aPromise) + explicit UnblockParsingPromiseHandler(nsIDocument* aDocument, Promise* aPromise, + const BlockParsingOptions& aOptions) : mPromise(aPromise) { nsCOMPtr parser = aDocument->CreatorParserOrNull(); - if (parser) { + if (parser && (aOptions.mBlockScriptCreated || !parser->IsScriptCreated())) { parser->BlockParser(); mParser = do_GetWeakReference(parser); mDocument = aDocument; @@ -10987,14 +10988,15 @@ NS_IMPL_CYCLE_COLLECTING_ADDREF(UnblockParsingPromiseHandler) NS_IMPL_CYCLE_COLLECTING_RELEASE(UnblockParsingPromiseHandler) already_AddRefed -nsIDocument::BlockParsing(Promise& aPromise, ErrorResult& aRv) +nsIDocument::BlockParsing(Promise& aPromise, const BlockParsingOptions& aOptions, ErrorResult& aRv) { RefPtr resultPromise = Promise::Create(aPromise.GetParentObject(), aRv); if (aRv.Failed()) { return nullptr; } - RefPtr promiseHandler = new UnblockParsingPromiseHandler(this, resultPromise); + RefPtr promiseHandler = new UnblockParsingPromiseHandler(this, resultPromise, + aOptions); aPromise.AppendNativeHandler(promiseHandler); return resultPromise.forget(); diff --git a/dom/base/nsIDocument.h b/dom/base/nsIDocument.h index 2f287ae2ccb7..512de896fddf 100644 --- a/dom/base/nsIDocument.h +++ b/dom/base/nsIDocument.h @@ -2952,6 +2952,7 @@ public: void ObsoleteSheet(const nsAString& aSheetURI, mozilla::ErrorResult& rv); already_AddRefed BlockParsing(mozilla::dom::Promise& aPromise, + const mozilla::dom::BlockParsingOptions& aOptions, mozilla::ErrorResult& aRv); already_AddRefed GetMozDocumentURIIfNotForErrorPages(); diff --git a/dom/webidl/Document.webidl b/dom/webidl/Document.webidl index 8a629502a6ce..f83874fa7315 100644 --- a/dom/webidl/Document.webidl +++ b/dom/webidl/Document.webidl @@ -385,13 +385,22 @@ partial interface Document { // Blocks the initial document parser until the given promise is settled. [ChromeOnly, Throws] - Promise blockParsing(Promise promise); + Promise blockParsing(Promise promise, + optional BlockParsingOptions options); // like documentURI, except that for error pages, it returns the URI we were // trying to load when we hit an error, rather than the error page's own URI. [ChromeOnly] readonly attribute URI? mozDocumentURIIfNotForErrorPages; }; +dictionary BlockParsingOptions { + /** + * If true, blocks script-created parsers (created via document.open()) in + * addition to network-created parsers. + */ + boolean blockScriptCreated = true; +}; + // Extension to give chrome JS the ability to determine when a document was // created to satisfy an iframe with srcdoc attribute. partial interface Document { From 73b35e74b65e46fcf814544a31fc80a5da05bef1 Mon Sep 17 00:00:00 2001 From: Kris Maglione Date: Wed, 20 Sep 2017 16:13:03 -0700 Subject: [PATCH 06/56] Bug 1379148: Part 2 - Don't block script-created parsers when executing content scripts. r=mixedpuppy MozReview-Commit-ID: GsqsaOVob4B --HG-- extra : rebase_source : f82bcf302a486d2e796cfa895af46c8fb2781dc7 --- toolkit/components/extensions/ExtensionContent.jsm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/toolkit/components/extensions/ExtensionContent.jsm b/toolkit/components/extensions/ExtensionContent.jsm index 3429ae14daff..c05a00e95398 100644 --- a/toolkit/components/extensions/ExtensionContent.jsm +++ b/toolkit/components/extensions/ExtensionContent.jsm @@ -324,7 +324,7 @@ class Script { // until the scripts have been loaded. let {document} = context.contentWindow; if (this.runAt === "document_start" && document.readyState !== "complete") { - document.blockParsing(scriptsPromise); + document.blockParsing(scriptsPromise, {blockScriptCreated: false}); } let scripts = await scriptsPromise; From 152d99b50da2858d48bf8294a863cf72f1b19fe6 Mon Sep 17 00:00:00 2001 From: Kris Maglione Date: Wed, 20 Sep 2017 17:00:44 -0700 Subject: [PATCH 07/56] Bug 1379148: Part 3 - Inject scripts synchronously if they're already available. r=mixedpuppy MozReview-Commit-ID: J6vheuxsqJR --HG-- extra : rebase_source : 94f44806e5eb4e0eebc0dd465ab1c0c4ef2c14e0 --- .../extensions/ExtensionContent.jsm | 36 +++++++++++++------ .../components/extensions/ExtensionUtils.jsm | 12 ++++--- 2 files changed, 34 insertions(+), 14 deletions(-) diff --git a/toolkit/components/extensions/ExtensionContent.jsm b/toolkit/components/extensions/ExtensionContent.jsm index c05a00e95398..9af6870a829b 100644 --- a/toolkit/components/extensions/ExtensionContent.jsm +++ b/toolkit/components/extensions/ExtensionContent.jsm @@ -137,8 +137,16 @@ class CacheMap extends DefaultMap { class ScriptCache extends CacheMap { constructor(options) { - super(SCRIPT_EXPIRY_TIMEOUT_MS, - url => ChromeUtils.compileScript(url, options)); + super(SCRIPT_EXPIRY_TIMEOUT_MS); + this.options = options; + } + + defaultConstructor(url) { + let promise = ChromeUtils.compileScript(url, this.options); + promise.then(script => { + promise.script = script; + }); + return promise; } } @@ -317,17 +325,25 @@ class Script { } } - let scriptsPromise = Promise.all(this.compileScripts()); + let scriptPromises = this.compileScripts(); - // If we're supposed to inject at the start of the document load, - // and we haven't already missed that point, block further parsing - // until the scripts have been loaded. - let {document} = context.contentWindow; - if (this.runAt === "document_start" && document.readyState !== "complete") { - document.blockParsing(scriptsPromise, {blockScriptCreated: false}); + let scripts = scriptPromises.map(promise => promise.script); + // If not all scripts are already available in the cache, block + // parsing and wait all promises to resolve. + if (!scripts.every(script => script)) { + let promise = Promise.all(scriptPromises); + + // If we're supposed to inject at the start of the document load, + // and we haven't already missed that point, block further parsing + // until the scripts have been loaded. + let {document} = context.contentWindow; + if (this.runAt === "document_start" && document.readyState !== "complete") { + document.blockParsing(promise, {blockScriptCreated: false}); + } + + scripts = await promise; } - let scripts = await scriptsPromise; let result; // The evaluations below may throw, in which case the promise will be diff --git a/toolkit/components/extensions/ExtensionUtils.jsm b/toolkit/components/extensions/ExtensionUtils.jsm index a3ed895de6df..4a5fcb19c58d 100644 --- a/toolkit/components/extensions/ExtensionUtils.jsm +++ b/toolkit/components/extensions/ExtensionUtils.jsm @@ -67,9 +67,11 @@ function instanceOf(value, type) { * constructor if one is not present. */ class DefaultWeakMap extends WeakMap { - constructor(defaultConstructor, init) { + constructor(defaultConstructor = undefined, init = undefined) { super(init); - this.defaultConstructor = defaultConstructor; + if (defaultConstructor) { + this.defaultConstructor = defaultConstructor; + } } get(key) { @@ -83,9 +85,11 @@ class DefaultWeakMap extends WeakMap { } class DefaultMap extends Map { - constructor(defaultConstructor, init) { + constructor(defaultConstructor = undefined, init = undefined) { super(init); - this.defaultConstructor = defaultConstructor; + if (defaultConstructor) { + this.defaultConstructor = defaultConstructor; + } } get(key) { From dc5b40508d36bde9b77b90e3e9ccf03adc3f1052 Mon Sep 17 00:00:00 2001 From: Kris Maglione Date: Wed, 20 Sep 2017 17:01:33 -0700 Subject: [PATCH 08/56] Bug 1379148: Part 4 - Add tests for document.write() with document_start content script present. r=mixedpuppy MozReview-Commit-ID: 5yxgpur1tvf --HG-- extra : rebase_source : c85d0d6c0cb71316957621f25cbea303850208a5 --- .../extensions/ExtensionXPCShellUtils.jsm | 5 ++ .../xpcshell/data/file_document_write.html | 35 +++++++++++++ .../test_ext_contentscript_scriptCreated.js | 49 +++++++++++++++++++ .../test/xpcshell/xpcshell-content.ini | 1 + 4 files changed, 90 insertions(+) create mode 100644 toolkit/components/extensions/test/xpcshell/data/file_document_write.html create mode 100644 toolkit/components/extensions/test/xpcshell/test_ext_contentscript_scriptCreated.js diff --git a/toolkit/components/extensions/ExtensionXPCShellUtils.jsm b/toolkit/components/extensions/ExtensionXPCShellUtils.jsm index d16003d79944..3420ce175d8a 100644 --- a/toolkit/components/extensions/ExtensionXPCShellUtils.jsm +++ b/toolkit/components/extensions/ExtensionXPCShellUtils.jsm @@ -59,6 +59,11 @@ function frameScript() { Components.utils.import("resource://gre/modules/Services.jsm"); Services.obs.notifyObservers(this, "tab-content-frameloader-created"); + + // eslint-disable-next-line mozilla/balanced-listeners + addEventListener("MozHeapMinimize", () => { + Services.obs.notifyObservers(null, "memory-pressure", "heap-minimize"); + }, true, true); } const FRAME_SCRIPT = `data:text/javascript,(${encodeURI(frameScript)}).call(this)`; diff --git a/toolkit/components/extensions/test/xpcshell/data/file_document_write.html b/toolkit/components/extensions/test/xpcshell/data/file_document_write.html new file mode 100644 index 000000000000..fbae3d6d763a --- /dev/null +++ b/toolkit/components/extensions/test/xpcshell/data/file_document_write.html @@ -0,0 +1,35 @@ + + + + + + + + + + + diff --git a/toolkit/components/extensions/test/xpcshell/test_ext_contentscript_scriptCreated.js b/toolkit/components/extensions/test/xpcshell/test_ext_contentscript_scriptCreated.js new file mode 100644 index 000000000000..00407b914015 --- /dev/null +++ b/toolkit/components/extensions/test/xpcshell/test_ext_contentscript_scriptCreated.js @@ -0,0 +1,49 @@ +"use strict"; + +const server = createHttpServer(); +server.registerDirectory("/data/", do_get_file("data")); + +const BASE_URL = `http://localhost:${server.identity.primaryPort}/data`; + +// ExtensionContent.jsm needs to know when it's running from xpcshell, +// to use the right timeout for content scripts executed at document_idle. +ExtensionTestUtils.mockAppInfo(); + +// Test that document_start content scripts don't block script-created +// parsers. +add_task(async function test_contentscript_scriptCreated() { + let extensionData = { + manifest: { + content_scripts: [{ + "matches": ["http://*/*/file_document_write.html"], + "js": ["content_script.js"], + "run_at": "document_start", + "match_about_blank": true, + "all_frames": true, + }], + }, + + files: { + "content_script.js": function() { + if (window === top) { + addEventListener("message", msg => { + browser.test.assertEq("ok", msg.data, "document.write() succeeded"); + browser.test.sendMessage("content-script-done"); + }, {once: true}); + } + }, + }, + }; + + let extension = ExtensionTestUtils.loadExtension(extensionData); + + await extension.startup(); + + let contentPage = await ExtensionTestUtils.loadContentPage(`${BASE_URL}/file_document_write.html`); + + await extension.awaitMessage("content-script-done"); + + await contentPage.close(); + + await extension.unload(); +}); diff --git a/toolkit/components/extensions/test/xpcshell/xpcshell-content.ini b/toolkit/components/extensions/test/xpcshell/xpcshell-content.ini index e34ec0717691..65814ff5da97 100644 --- a/toolkit/components/extensions/test/xpcshell/xpcshell-content.ini +++ b/toolkit/components/extensions/test/xpcshell/xpcshell-content.ini @@ -2,4 +2,5 @@ skip-if = os == "android" || (os == "win" && debug) [test_ext_i18n_css.js] [test_ext_contentscript.js] +[test_ext_contentscript_scriptCreated.js] [test_ext_contentscript_xrays.js] From ddf4ceaddb19f364a4515dcde8796207ae86aeaa Mon Sep 17 00:00:00 2001 From: Yura Zenevich Date: Thu, 21 Sep 2017 11:42:27 -0400 Subject: [PATCH 09/56] Bug 1401982 - adding restart confirmation prompt when accessibility.force_disable is toggled. r=jaws MozReview-Commit-ID: 4VIu3Dl7zlr --- browser/components/preferences/in-content/privacy.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/browser/components/preferences/in-content/privacy.js b/browser/components/preferences/in-content/privacy.js index f0edd6df662e..b58389d026c8 100644 --- a/browser/components/preferences/in-content/privacy.js +++ b/browser/components/preferences/in-content/privacy.js @@ -1647,6 +1647,13 @@ var gPrivacyPane = { }, updateA11yPrefs(checked) { - Services.prefs.setIntPref("accessibility.force_disabled", checked ? 1 : 0); + let buttonIndex = confirmRestartPrompt(checked, 0, true, false); + if (buttonIndex == CONFIRM_RESTART_PROMPT_RESTART_NOW) { + Services.prefs.setIntPref("accessibility.force_disabled", checked ? 1 : 0); + Services.startup.quit(Ci.nsIAppStartup.eAttemptQuit | Ci.nsIAppStartup.eRestart); + } + + // Revert the checkbox in case we didn't quit + document.getElementById("a11yPrivacyCheckbox").checked = !checked; } }; From acc7776ea763263af503a75e0612ac6f7bef1139 Mon Sep 17 00:00:00 2001 From: Nathan Froyd Date: Thu, 21 Sep 2017 12:40:02 -0500 Subject: [PATCH 10/56] Bug 1325632 - part 1 - modify re-checking the compiler with flags; r=glandium toolchain.configure checks for information about the compilers we're using and accumulates additional flags that we might need to pass (e.g. switches for C/C++ versions, proper compiler targets, etc.), and then rechecks the compilers with those additional flags to verify that those flags are sufficient to configure the compiler properly. Only after we've checked for the proper flags do we move on to verifying the compiler versions are sufficient. It's possible, however, that the flags we try to add might not be supported by the compiler being tested, in which case we'd get an unfriendly error about an "unknown compiler", rather than something like "version X of Y not supported". In this case, we'd rather use the information we gathered from the first run to provide information messages. So we modify the second check to ignore any thrown exceptions during the check itself. This change results in another problem: the check for whether we had any extraneous flags is done prior to version checks for the compilers we support, which is also unhelpful. We choose to move this check after the version checks themselves. --- build/moz.configure/toolchain.configure | 26 +++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/build/moz.configure/toolchain.configure b/build/moz.configure/toolchain.configure index ae397f77fd12..c336d1abdd7d 100755 --- a/build/moz.configure/toolchain.configure +++ b/build/moz.configure/toolchain.configure @@ -702,11 +702,17 @@ def compiler(language, host_or_target, c_compiler=None, other_compiler=None, host_or_target) # Check that the additional flags we got are enough to not require any - # more flags. - if info.flags: - flags += info.flags - info = check_compiler(wrapper + [compiler] + flags, language, - host_or_target) + # more flags. If we get an exception, just ignore it; it's liable to be + # invalid command-line flags, which means the compiler we're checking + # doesn't support those command-line flags and will fail one or more of + # the checks below. + try: + if info.flags: + flags += info.flags + info = check_compiler(wrapper + [compiler] + flags, language, + host_or_target) + except FatalCheckError: + pass if not info.target_cpu or info.target_cpu != host_or_target.cpu: raise FatalCheckError( @@ -732,10 +738,6 @@ def compiler(language, host_or_target, c_compiler=None, other_compiler=None, info.target_endianness or 'unknown', host_or_target_str, host_or_target.endianness)) - if info.flags: - raise FatalCheckError( - 'Unknown compiler or compiler not supported.') - # Compiler version checks # =================================================== # Check the compiler version here instead of in `compiler_version` so @@ -747,7 +749,7 @@ def compiler(language, host_or_target, c_compiler=None, other_compiler=None, % info.version) # If you want to bump the version check here search for - # __cpp_static_assert above, and see the associated comment. + # cxx_alignof above, and see the associated comment. if info.type == 'clang' and not info.version: raise FatalCheckError( 'Only clang/llvm 3.6 or newer is supported.') @@ -762,6 +764,10 @@ def compiler(language, host_or_target, c_compiler=None, other_compiler=None, 'See https://developer.mozilla.org/en/' 'Windows_Build_Prerequisites' % info.version) + if info.flags: + raise FatalCheckError( + 'Unknown compiler or compiler not supported.') + return namespace( wrapper=wrapper, compiler=compiler, From 81c675f7bc434e8bef7145bc1e999f79f0638a56 Mon Sep 17 00:00:00 2001 From: Geoff Brown Date: Thu, 21 Sep 2017 12:39:35 -0600 Subject: [PATCH 11/56] Bug 1397615 - Skip some long-running mochitests on Android Debug only; r=snorp --- dom/html/test/forms/mochitest.ini | 1 + layout/style/test/mochitest.ini | 1 + .../components/extensions/test/mochitest/mochitest-common.ini | 4 ++++ toolkit/components/passwordmgr/test/mochitest/mochitest.ini | 3 +++ 4 files changed, 9 insertions(+) diff --git a/dom/html/test/forms/mochitest.ini b/dom/html/test/forms/mochitest.ini index 45d775b9263a..e9fe9799f58f 100644 --- a/dom/html/test/forms/mochitest.ini +++ b/dom/html/test/forms/mochitest.ini @@ -78,6 +78,7 @@ skip-if = os == "android" skip-if = os == "android" [test_input_types_pref.html] [test_input_typing_sanitization.html] +skip-if = os == "android" && debug # bug 1397615 [test_input_untrusted_key_events.html] [test_input_url.html] [test_interactive_content_in_label.html] diff --git a/layout/style/test/mochitest.ini b/layout/style/test/mochitest.ini index 3ec1b228c36b..dafe0434981c 100644 --- a/layout/style/test/mochitest.ini +++ b/layout/style/test/mochitest.ini @@ -323,6 +323,7 @@ skip-if = toolkit == 'android' # bug 775227 for android [test_value_computation.html] skip-if = toolkit == 'android' [test_value_storage.html] +skip-if = toolkit == 'android' && debug # bug 1397615 [test_variable_serialization_computed.html] [test_variable_serialization_specified.html] [test_variables.html] diff --git a/toolkit/components/extensions/test/mochitest/mochitest-common.ini b/toolkit/components/extensions/test/mochitest/mochitest-common.ini index 8cca0e639cb1..c1b59d94dc24 100644 --- a/toolkit/components/extensions/test/mochitest/mochitest-common.ini +++ b/toolkit/components/extensions/test/mochitest/mochitest-common.ini @@ -123,11 +123,13 @@ skip-if = os == 'android' [test_ext_unload_frame.html] [test_ext_listener_proxies.html] [test_ext_web_accessible_resources.html] +skip-if = os == 'android' && debug # bug 1397615 [test_ext_webrequest_auth.html] skip-if = os == 'android' [test_ext_webrequest_background_events.html] [test_ext_webrequest_hsts.html] [test_ext_webrequest_basic.html] +skip-if = os == 'android' && debug # bug 1397615 [test_ext_webrequest_filter.html] [test_ext_webrequest_frameId.html] [test_ext_webrequest_responseBody.html] @@ -138,7 +140,9 @@ skip-if = os == 'android' # Currently fails in emulator tests [test_ext_webrequest_permission.html] [test_ext_webrequest_websocket.html] [test_ext_webnavigation.html] +skip-if = os == 'android' && debug # bug 1397615 [test_ext_webnavigation_filters.html] +skip-if = os == 'android' && debug # bug 1397615 [test_ext_window_postMessage.html] [test_ext_subframes_privileges.html] [test_ext_xhr_capabilities.html] diff --git a/toolkit/components/passwordmgr/test/mochitest/mochitest.ini b/toolkit/components/passwordmgr/test/mochitest/mochitest.ini index 18f44b6f5f0f..e22cfd43a1f1 100644 --- a/toolkit/components/passwordmgr/test/mochitest/mochitest.ini +++ b/toolkit/components/passwordmgr/test/mochitest/mochitest.ini @@ -47,8 +47,11 @@ skip-if = toolkit == 'android' # autocomplete [test_form_action_javascript.html] [test_formless_autofill.html] [test_formless_submit.html] +skip-if = toolkit == 'android' && debug # bug 1397615 [test_formless_submit_navigation.html] +skip-if = toolkit == 'android' && debug # bug 1397615 [test_formless_submit_navigation_negative.html] +skip-if = toolkit == 'android' && debug # bug 1397615 [test_input_events.html] [test_input_events_for_identical_values.html] [test_maxlength.html] From 5839c2d53d6fc737a6aadb3a94517435e8dd2803 Mon Sep 17 00:00:00 2001 From: Stephen A Pohl Date: Thu, 21 Sep 2017 15:13:32 -0400 Subject: [PATCH 12/56] Bug 1401641: Avoid invalidations on macOS when setting window titles when titles aren't being displayed. r=mstange --- widget/cocoa/nsCocoaWindow.mm | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/widget/cocoa/nsCocoaWindow.mm b/widget/cocoa/nsCocoaWindow.mm index 14a9d4367aac..446604f201e8 100644 --- a/widget/cocoa/nsCocoaWindow.mm +++ b/widget/cocoa/nsCocoaWindow.mm @@ -1862,7 +1862,14 @@ nsCocoaWindow::SetTitle(const nsAString& aTitle) const unichar* uniTitle = reinterpret_cast(strTitle.get()); NSString* title = [NSString stringWithCharacters:uniTitle length:strTitle.Length()]; - [mWindow setTitle:title]; + if ([mWindow drawsContentsIntoWindowFrame] && ![mWindow wantsTitleDrawn]) { + // Don't cause invalidations when the title isn't displayed. + [mWindow disableSetNeedsDisplay]; + [mWindow setTitle:title]; + [mWindow enableSetNeedsDisplay]; + } else { + [mWindow setTitle:title]; + } return NS_OK; From c4d20beb842926000c46c1dc2be1c48ae93587d7 Mon Sep 17 00:00:00 2001 From: Andrea Marchesini Date: Thu, 21 Sep 2017 21:32:00 +0200 Subject: [PATCH 13/56] Bug 1047098 - "Clear Recent History" must always clean up QuotaManager data, r=janv --- browser/base/content/sanitize.js | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/browser/base/content/sanitize.js b/browser/base/content/sanitize.js index 95a10f831b1c..56779e3429e2 100644 --- a/browser/base/content/sanitize.js +++ b/browser/base/content/sanitize.js @@ -19,6 +19,11 @@ XPCOMUtils.defineLazyModuleGetters(this, { setTimeout: "resource://gre/modules/Timer.jsm", }); + +XPCOMUtils.defineLazyServiceGetter(this, "quotaManagerService", + "@mozilla.org/dom/quota-manager-service;1", + "nsIQuotaManagerService"); + var {classes: Cc, interfaces: Ci} = Components; /** @@ -280,9 +285,33 @@ Sanitizer.prototype = { offlineApps: { async clear(range) { + // AppCache Components.utils.import("resource:///modules/offlineAppCache.jsm"); // This doesn't wait for the cleanup to be complete. OfflineAppCacheHelper.clear(); + + // LocalStorage + Services.obs.notifyObservers(null, "extension:purge-localStorage"); + + // QuotaManager + let promises = []; + await new Promise(resolve => { + quotaManagerService.getUsage(request => { + for (let item of request.result) { + let principal = Services.scriptSecurityManager.createCodebasePrincipalFromOrigin(item.origin); + let uri = principal.URI; + if (uri.scheme == "http" || uri.scheme == "https" || uri.scheme == "file") { + promises.push(new Promise(r => { + let req = quotaManagerService.clearStoragesForPrincipal(principal, null, true); + req.callback = () => { r(); }; + })); + } + } + resolve(); + }); + }); + + return Promise.all(promises); } }, From ebcdb2c6b8e360b6dd473b05f934daf4273dcf4a Mon Sep 17 00:00:00 2001 From: Andrea Marchesini Date: Thu, 21 Sep 2017 21:32:00 +0200 Subject: [PATCH 14/56] Bug 1047098 - "Clear Recent History" must clean up all the ServiceWorkers, r=bkelly --- browser/base/content/sanitize.js | 11 +++++++++++ toolkit/components/places/tests/head_common.js | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/browser/base/content/sanitize.js b/browser/base/content/sanitize.js index 56779e3429e2..faafaa686299 100644 --- a/browser/base/content/sanitize.js +++ b/browser/base/content/sanitize.js @@ -20,6 +20,9 @@ XPCOMUtils.defineLazyModuleGetters(this, { }); +XPCOMUtils.defineLazyServiceGetter(this, "serviceWorkerManager", + "@mozilla.org/serviceworkers/manager;1", + "nsIServiceWorkerManager"); XPCOMUtils.defineLazyServiceGetter(this, "quotaManagerService", "@mozilla.org/dom/quota-manager-service;1", "nsIQuotaManagerService"); @@ -293,6 +296,14 @@ Sanitizer.prototype = { // LocalStorage Services.obs.notifyObservers(null, "extension:purge-localStorage"); + // ServiceWorkers + let serviceWorkers = serviceWorkerManager.getAllRegistrations(); + for (let i = 0; i < serviceWorkers.length; i++) { + let sw = serviceWorkers.queryElementAt(i, Ci.nsIServiceWorkerRegistrationInfo); + let host = sw.principal.URI.host; + serviceWorkerManager.removeAndPropagate(host); + } + // QuotaManager let promises = []; await new Promise(resolve => { diff --git a/toolkit/components/places/tests/head_common.js b/toolkit/components/places/tests/head_common.js index 70288c6514be..610cb597ce52 100644 --- a/toolkit/components/places/tests/head_common.js +++ b/toolkit/components/places/tests/head_common.js @@ -75,7 +75,7 @@ XPCOMUtils.defineLazyGetter(this, "SMALLSVG_DATA_URI", function() { var gTestDir = do_get_cwd(); // Initialize profile. -var gProfD = do_get_profile(); +var gProfD = do_get_profile(true); Services.prefs.setBoolPref("browser.urlbar.usepreloadedtopurls.enabled", false); do_register_cleanup(() => From d4af16e9d3d5f614b5cf45d295baf036fbd4d5ab Mon Sep 17 00:00:00 2001 From: Andrea Marchesini Date: Thu, 21 Sep 2017 21:32:00 +0200 Subject: [PATCH 15/56] Bug 1401878 - Remove ServiceWorkers in SiteDataManager.jsm, r=bkelly --- .../preferences/SiteDataManager.jsm | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/browser/components/preferences/SiteDataManager.jsm b/browser/components/preferences/SiteDataManager.jsm index d6dd5c78656a..8f2ac2a34188 100644 --- a/browser/components/preferences/SiteDataManager.jsm +++ b/browser/components/preferences/SiteDataManager.jsm @@ -9,6 +9,9 @@ XPCOMUtils.defineLazyModuleGetter(this, "OfflineAppCacheHelper", "resource:///modules/offlineAppCache.jsm"); XPCOMUtils.defineLazyModuleGetter(this, "ContextualIdentityService", "resource://gre/modules/ContextualIdentityService.jsm"); +XPCOMUtils.defineLazyServiceGetter(this, "serviceWorkerManager", + "@mozilla.org/serviceworkers/manager;1", + "nsIServiceWorkerManager"); this.EXPORTED_SYMBOLS = [ "SiteDataManager" @@ -217,6 +220,19 @@ this.SiteDataManager = { } }, + _removeServiceWorkers(site) { + let serviceWorkers = serviceWorkerManager.getAllRegistrations(); + for (let i = 0; i < serviceWorkers.length; i++) { + let sw = serviceWorkers.queryElementAt(i, Ci.nsIServiceWorkerRegistrationInfo); + for (let principal of site.principals) { + if (sw.principal.equals(principal)) { + serviceWorkerManager.removeAndPropagate(sw.principal.URI.host); + break; + } + } + } + }, + remove(hosts) { let promises = []; let unknownHost = ""; @@ -226,6 +242,7 @@ this.SiteDataManager = { this._removePermission(site); this._removeAppCache(site); this._removeCookie(site); + this._removeServiceWorkers(site); promises.push(this._removeQuotaUsage(site)); } else { unknownHost = host; @@ -244,6 +261,15 @@ this.SiteDataManager = { Services.cache2.clear(); Services.cookies.removeAll(); OfflineAppCacheHelper.clear(); + + // Iterate through the service workers and remove them. + let serviceWorkers = serviceWorkerManager.getAllRegistrations(); + for (let i = 0; i < serviceWorkers.length; i++) { + let sw = serviceWorkers.queryElementAt(i, Ci.nsIServiceWorkerRegistrationInfo); + let host = sw.principal.URI.host; + serviceWorkerManager.removeAndPropagate(host); + } + // Refresh sites using quota usage again. // This is for the case: // 1. User goes to the about:preferences Site Data section. From 680323e92fc6bfb78d7d04f836ff24c6911265db Mon Sep 17 00:00:00 2001 From: Andrea Marchesini Date: Thu, 21 Sep 2017 21:41:36 +0200 Subject: [PATCH 16/56] Bug 1333050 - Introduce BrowsingData.removeIndexedDB, r=kmag, r=janv --- .../components/extensions/ext-browsingData.js | 32 +++++++++++++++++++ .../test/xpcshell/test_ext_browsingData.js | 23 ------------- 2 files changed, 32 insertions(+), 23 deletions(-) diff --git a/browser/components/extensions/ext-browsingData.js b/browser/components/extensions/ext-browsingData.js index e313319333a0..0424d415d48d 100644 --- a/browser/components/extensions/ext-browsingData.js +++ b/browser/components/extensions/ext-browsingData.js @@ -17,6 +17,9 @@ XPCOMUtils.defineLazyModuleGetter(this, "setTimeout", XPCOMUtils.defineLazyServiceGetter(this, "serviceWorkerManager", "@mozilla.org/serviceworkers/manager;1", "nsIServiceWorkerManager"); +XPCOMUtils.defineLazyServiceGetter(this, "quotaManagerService", + "@mozilla.org/dom/quota-manager-service;1", + "nsIQuotaManagerService"); /** * A number of iterations after which to yield time back @@ -80,6 +83,29 @@ const clearHistory = options => { return sanitizer.items.history.clear(makeRange(options)); }; +const clearIndexedDB = async function(options) { + let promises = []; + + await new Promise(resolve => { + quotaManagerService.getUsage(request => { + for (let item of request.result) { + let principal = Services.scriptSecurityManager.createCodebasePrincipalFromOrigin(item.origin); + let uri = principal.URI; + if (uri.scheme == "http" || uri.scheme == "https" || uri.scheme == "file") { + promises.push(new Promise(r => { + let req = quotaManagerService.clearStoragesForPrincipal(principal, null, true); + req.callback = () => { r(); }; + })); + } + } + + resolve(); + }); + }); + + return Promise.all(promises); +}; + const clearLocalStorage = async function(options) { Services.obs.notifyObservers(null, "extension:purge-localStorage"); }; @@ -153,6 +179,9 @@ const doRemoval = (options, dataToRemove, extension) => { case "history": removalPromises.push(clearHistory(options)); break; + case "indexedDB": + removalPromises.push(clearIndexedDB(options)); + break; case "localStorage": removalPromises.push(clearLocalStorage(options)); break; @@ -229,6 +258,9 @@ this.browsingData = class extends ExtensionAPI { removeHistory(options) { return doRemoval(options, {history: true}); }, + removeIndexedDB(options) { + return doRemoval(options, {indexedDB: true}); + }, removeLocalStorage(options) { return doRemoval(options, {localStorage: true}); }, diff --git a/browser/components/extensions/test/xpcshell/test_ext_browsingData.js b/browser/components/extensions/test/xpcshell/test_ext_browsingData.js index 0b8972058e64..bb5cea4ba703 100644 --- a/browser/components/extensions/test/xpcshell/test_ext_browsingData.js +++ b/browser/components/extensions/test/xpcshell/test_ext_browsingData.js @@ -41,26 +41,3 @@ add_task(async function testInvalidArguments() { await extension.awaitFinish("invalidArguments"); await extension.unload(); }); - -add_task(async function testUnimplementedDataType() { - function background() { - browser.browsingData.remove({}, {indexedDB: true}); - browser.test.sendMessage("finished"); - } - - let {messages} = await promiseConsoleOutput(async function() { - let extension = ExtensionTestUtils.loadExtension({ - background: background, - manifest: { - permissions: ["browsingData"], - }, - }); - - await extension.startup(); - await extension.awaitMessage("finished"); - await extension.unload(); - }); - - let warningObserved = messages.find(line => /Firefox does not support dataTypes: indexedDB/.test(line)); - ok(warningObserved, "Warning issued when calling remove with an unimplemented dataType."); -}); From 1477716537ae50f6c51be5118167aa9665504e75 Mon Sep 17 00:00:00 2001 From: Andrea Marchesini Date: Thu, 21 Sep 2017 21:41:52 +0200 Subject: [PATCH 17/56] Bug 1333050 - Test for BrowsingData.removeIndexedDB, r=kmag --- .../test/browser/browser-common.ini | 2 + .../browser_ext_browsingData_indexedDB.js | 81 +++++++++++++++++++ .../test/browser/file_indexedDB.html | 28 +++++++ 3 files changed, 111 insertions(+) create mode 100644 browser/components/extensions/test/browser/browser_ext_browsingData_indexedDB.js create mode 100644 browser/components/extensions/test/browser/file_indexedDB.html diff --git a/browser/components/extensions/test/browser/browser-common.ini b/browser/components/extensions/test/browser/browser-common.ini index cf372698ae4b..7b623afbaf9a 100644 --- a/browser/components/extensions/test/browser/browser-common.ini +++ b/browser/components/extensions/test/browser/browser-common.ini @@ -22,6 +22,7 @@ support-files = file_dummy.html file_title.html file_inspectedwindow_reload_target.sjs + file_indexedDB.html file_serviceWorker.html locale/chrome.manifest webNav_createdTarget.html @@ -51,6 +52,7 @@ skip-if = os == 'mac' # Bug 1374749 will re-enable this test again. [browser_ext_browserAction_theme_icons.js] [browser_ext_browsingData_formData.js] [browser_ext_browsingData_history.js] +[browser_ext_browsingData_indexedDB.js] [browser_ext_browsingData_localStorage.js] [browser_ext_browsingData_pluginData.js] [browser_ext_browsingData_serviceWorkers.js] diff --git a/browser/components/extensions/test/browser/browser_ext_browsingData_indexedDB.js b/browser/components/extensions/test/browser/browser_ext_browsingData_indexedDB.js new file mode 100644 index 000000000000..c10d1642d6ca --- /dev/null +++ b/browser/components/extensions/test/browser/browser_ext_browsingData_indexedDB.js @@ -0,0 +1,81 @@ +/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */ +/* vim: set sts=2 sw=2 et tw=80: */ +/* eslint-disable mozilla/no-arbitrary-setTimeout */ +"use strict"; + +add_task(async function testIndexedDB() { + function background() { + const PAGE = "/browser/browser/components/extensions/test/browser/file_indexedDB.html"; + + browser.test.onMessage.addListener(async (msg) => { + await browser.browsingData.remove({}, {indexedDB: true}); + browser.test.sendMessage("indexedDBRemoved"); + }); + + // Create two tabs. + browser.tabs.create({url: `http://mochi.test:8888${PAGE}`}); + browser.tabs.create({url: `http://example.com${PAGE}`}); + } + + function contentScript() { + window.addEventListener("message", msg => { // eslint-disable-line mozilla/balanced-listeners + browser.test.sendMessage("indexedDBCreated"); + }, true); + } + + let extension = ExtensionTestUtils.loadExtension({ + background, + manifest: { + permissions: ["browsingData", "tabs"], + "content_scripts": [{ + "matches": [ + "http://mochi.test/*/file_indexedDB.html", + "http://example.com/*/file_indexedDB.html", + ], + "js": ["script.js"], + "run_at": "document_start", + }], + }, + files: { + "script.js": contentScript, + }, + }); + + let win = await BrowserTestUtils.openNewBrowserWindow(); + await focusWindow(win); + + await extension.startup(); + await extension.awaitMessage("indexedDBCreated"); + await extension.awaitMessage("indexedDBCreated"); + + let qms = SpecialPowers.Cc["@mozilla.org/dom/quota-manager-service;1"] + .getService(Ci.nsIQuotaManagerService); + + function getOrigins() { + return new Promise(resolve => { + let origins = []; + qms.getUsage(request => { + for (let i = 0; i < request.result.length; ++i) { + if (request.result[i].origin.startsWith("http://mochi.test") || + request.result[i].origin.startsWith("http://example.com")) { + origins.push(request.result[i].origin); + } + } + resolve(origins); + }); + }); + } + + let origins = await getOrigins(); + is(origins.length, 2, "IndexedDB databases have been populated."); + + extension.sendMessage(); + + await extension.awaitMessage("indexedDBRemoved"); + + origins = await getOrigins(); + is(origins.length, 0, "IndexedDB data has been removed."); + + await extension.unload(); + await BrowserTestUtils.closeWindow(win); +}); diff --git a/browser/components/extensions/test/browser/file_indexedDB.html b/browser/components/extensions/test/browser/file_indexedDB.html new file mode 100644 index 000000000000..65b7e0ad2f4f --- /dev/null +++ b/browser/components/extensions/test/browser/file_indexedDB.html @@ -0,0 +1,28 @@ + + + + + + + + This is a test page. + + From 0a2233f308dec4c057779f187b911e06470376bd Mon Sep 17 00:00:00 2001 From: Tobias Schneider Date: Thu, 21 Sep 2017 12:43:35 -0700 Subject: [PATCH 18/56] Bug 1401416 - [intersection-observer] Let intersection rect be empty if do_QueryFrame(rootFrame) returns null. r=dholbert --HG-- extra : rebase_source : c61df51637850211f0c3cbd74fb1ac6c6831cd7e --- dom/base/DOMIntersectionObserver.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/dom/base/DOMIntersectionObserver.cpp b/dom/base/DOMIntersectionObserver.cpp index 606a1de5ed8c..1ca909e3cfbf 100644 --- a/dom/base/DOMIntersectionObserver.cpp +++ b/dom/base/DOMIntersectionObserver.cpp @@ -308,7 +308,11 @@ DOMIntersectionObserver::Update(nsIDocument* aDocument, DOMHighResTimeStamp time } root = rootFrame->GetContent()->AsElement(); nsIScrollableFrame* scrollFrame = do_QueryFrame(rootFrame); - rootRect = scrollFrame->GetScrollPortRect(); + // If we end up with a null root frame for some reason, we'll proceed + // with an empty root intersection rect. + if (scrollFrame) { + rootRect = scrollFrame->GetScrollPortRect(); + } } } } From 98a84baac912fff62e22b2fd41b5ddf0360b3326 Mon Sep 17 00:00:00 2001 From: Nathan Froyd Date: Thu, 21 Sep 2017 14:52:37 -0500 Subject: [PATCH 19/56] Bug 1328634 - part 1 - use UniquePtr in AutoEnterTransaction; r=billm One less use of nsAutoPtr! --- ipc/glue/MessageChannel.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/ipc/glue/MessageChannel.cpp b/ipc/glue/MessageChannel.cpp index eec71a620cd2..054e02ee6496 100644 --- a/ipc/glue/MessageChannel.cpp +++ b/ipc/glue/MessageChannel.cpp @@ -17,6 +17,7 @@ #include "mozilla/Telemetry.h" #include "mozilla/TimeStamp.h" #include "nsAppRunner.h" +#include "mozilla/UniquePtr.h" #include "nsAutoPtr.h" #include "nsDebug.h" #include "nsISupportsImpl.h" @@ -416,7 +417,7 @@ public: MOZ_RELEASE_ASSERT(aMessage.transaction_id() == mTransaction); MOZ_RELEASE_ASSERT(!mReply); IPC_LOG("Reply received on worker thread: seqno=%d", mSeqno); - mReply = new IPC::Message(Move(aMessage)); + mReply = MakeUnique(Move(aMessage)); MOZ_RELEASE_ASSERT(IsComplete()); } @@ -455,7 +456,7 @@ public: return mReply->is_reply_error(); } - nsAutoPtr GetReply() { + UniquePtr GetReply() { return Move(mReply); } @@ -480,7 +481,7 @@ private: AutoEnterTransaction *mNext; // Pointer the a reply received for this message, if one was received. - nsAutoPtr mReply; + UniquePtr mReply; }; class PromiseReporter final : public nsIMemoryReporter @@ -1534,7 +1535,7 @@ MessageChannel::Send(Message* aMsg, Message* aReply) IPC_LOG("Got reply: seqno=%d, xid=%d, msgName=%s, latency=%ums", seqno, transaction, msgName, latencyMs); - nsAutoPtr reply = transact.GetReply(); + UniquePtr reply = transact.GetReply(); MOZ_RELEASE_ASSERT(reply); MOZ_RELEASE_ASSERT(reply->is_reply(), "expected reply"); From 5e23bf9dc185e8510efa13be384188a9246b2be9 Mon Sep 17 00:00:00 2001 From: Nathan Froyd Date: Thu, 21 Sep 2017 14:52:37 -0500 Subject: [PATCH 20/56] Bug 1328634 - part 2 - use UniquePtr to manage messages inside of MessageChannel; r=billm Using them for replies in various places would be a much larger task. This is nice and simple. --- ipc/glue/MessageChannel.cpp | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/ipc/glue/MessageChannel.cpp b/ipc/glue/MessageChannel.cpp index 054e02ee6496..7443da313089 100644 --- a/ipc/glue/MessageChannel.cpp +++ b/ipc/glue/MessageChannel.cpp @@ -845,7 +845,7 @@ MessageChannel::CommonThreadOpenInit(MessageChannel *aTargetChan, Side aSide) bool MessageChannel::Echo(Message* aMsg) { - nsAutoPtr msg(aMsg); + UniquePtr msg(aMsg); AssertWorkerThread(); mMonitor->AssertNotCurrentThreadOwns(); if (MSG_ROUTING_NONE == msg->routing_id()) { @@ -856,11 +856,11 @@ MessageChannel::Echo(Message* aMsg) MonitorAutoLock lock(*mMonitor); if (!Connected()) { - ReportConnectionError("MessageChannel", msg); + ReportConnectionError("MessageChannel", msg.get()); return false; } - mLink->EchoMessage(msg.forget()); + mLink->EchoMessage(msg.release()); return true; } @@ -888,7 +888,7 @@ MessageChannel::Send(Message* aMsg) CxxStackFrame frame(*this, OUT_MESSAGE, aMsg); - nsAutoPtr msg(aMsg); + UniquePtr msg(aMsg); AssertWorkerThread(); mMonitor->AssertNotCurrentThreadOwns(); if (MSG_ROUTING_NONE == msg->routing_id()) { @@ -898,11 +898,10 @@ MessageChannel::Send(Message* aMsg) MonitorAutoLock lock(*mMonitor); if (!Connected()) { - ReportConnectionError("MessageChannel", msg); + ReportConnectionError("MessageChannel", msg.get()); return false; } - - SendMessageToLink(msg.forget()); + SendMessageToLink(msg.release()); return true; } @@ -1354,7 +1353,7 @@ MessageChannel::Send(Message* aMsg, Message* aReply) Telemetry::Accumulate(Telemetry::IPC_MESSAGE_SIZE2, aMsg->size()); } - nsAutoPtr msg(aMsg); + UniquePtr msg(aMsg); // Sanity checks. AssertWorkerThread(); @@ -1368,7 +1367,7 @@ MessageChannel::Send(Message* aMsg, Message* aReply) AutoScopedLabel autolabel("sync message %s", aMsg->name()); #endif - CxxStackFrame f(*this, OUT_MESSAGE, msg); + CxxStackFrame f(*this, OUT_MESSAGE, msg.get()); MonitorAutoLock lock(*mMonitor); @@ -1428,7 +1427,7 @@ MessageChannel::Send(Message* aMsg, Message* aReply) "not allowed to send messages while dispatching urgent messages"); if (!Connected()) { - ReportConnectionError("MessageChannel::SendAndWait", msg); + ReportConnectionError("MessageChannel::SendAndWait", msg.get()); mLastSendError = SyncSendError::NotConnectedBeforeSend; return false; } @@ -1457,7 +1456,7 @@ MessageChannel::Send(Message* aMsg, Message* aReply) // msg will be destroyed soon, but name() is not owned by msg. const char* msgName = msg->name(); - SendMessageToLink(msg.forget()); + SendMessageToLink(msg.release()); while (true) { MOZ_RELEASE_ASSERT(!transact.IsCanceled()); @@ -1561,7 +1560,7 @@ MessageChannel::Send(Message* aMsg, Message* aReply) bool MessageChannel::Call(Message* aMsg, Message* aReply) { - nsAutoPtr msg(aMsg); + UniquePtr msg(aMsg); AssertWorkerThread(); mMonitor->AssertNotCurrentThreadOwns(); @@ -1574,11 +1573,11 @@ MessageChannel::Call(Message* aMsg, Message* aReply) // This must come before MonitorAutoLock, as its destructor acquires the // monitor lock. - CxxStackFrame cxxframe(*this, OUT_MESSAGE, msg); + CxxStackFrame cxxframe(*this, OUT_MESSAGE, msg.get()); MonitorAutoLock lock(*mMonitor); if (!Connected()) { - ReportConnectionError("MessageChannel::Call", msg); + ReportConnectionError("MessageChannel::Call", msg.get()); return false; } @@ -1594,7 +1593,7 @@ MessageChannel::Call(Message* aMsg, Message* aReply) msg->set_interrupt_remote_stack_depth_guess(mRemoteStackDepthGuess); msg->set_interrupt_local_stack_depth(1 + InterruptStackDepth()); mInterruptStack.push(MessageInfo(*msg)); - mLink->SendMessage(msg.forget()); + mLink->SendMessage(msg.release()); while (true) { // if a handler invoked by *Dispatch*() spun a nested event From f37317cad067b78bb7263e4c1e125bfa53c0db1f Mon Sep 17 00:00:00 2001 From: Kris Maglione Date: Mon, 4 Sep 2017 17:21:06 -0700 Subject: [PATCH 21/56] Bug 1369533: Return dead wrappers rather than null for dead CallbackObject values. r=bz We don't have access to an appropriate context to create the dead wrapper in when the callback is nuked, so instead, this patch creates a new dead wrapper in the caller compartment each time the property is accessed. This is the same behavior we'd get when trying to re-wrap a cross-compartment dead wrapper, so it's consistent with the way we handle these situations elsewhere. MozReview-Commit-ID: 3cMeR4z8EOe --HG-- extra : rebase_source : 7e8cf4a195ef64deb7677ce4ac9818d342815667 --- dom/base/CustomElementRegistry.cpp | 5 ++++- dom/base/nsDocument.cpp | 3 +++ dom/bindings/BindingUtils.h | 16 ++++++++-------- dom/bindings/CallbackObject.cpp | 12 ++++++++++++ dom/bindings/CallbackObject.h | 11 ++++++++++- dom/bindings/Codegen.py | 2 +- dom/bindings/ToJSValue.h | 2 +- dom/events/DOMEventTargetHelper.cpp | 2 +- .../unit/test_nuke_sandbox_event_listeners.js | 9 +++++++++ 9 files changed, 49 insertions(+), 13 deletions(-) diff --git a/dom/base/CustomElementRegistry.cpp b/dom/base/CustomElementRegistry.cpp index e5b8520fff16..1d9385988b88 100644 --- a/dom/base/CustomElementRegistry.cpp +++ b/dom/base/CustomElementRegistry.cpp @@ -593,6 +593,9 @@ CustomElementRegistry::Define(const nsAString& aName, } JSContext *cx = jsapi.cx(); + // Note: No calls that might run JS or trigger CC before this point, or + // there's a (vanishingly small) chance of our constructor being nulled + // before we access it. JS::Rooted constructor(cx, aFunctionConstructor.CallableOrNull()); /** @@ -878,7 +881,7 @@ CustomElementRegistry::Get(JSContext* aCx, const nsAString& aName, return; } - aRetVal.setObjectOrNull(data->mConstructor->CallableOrNull()); + aRetVal.setObject(*data->mConstructor->Callback(aCx)); } already_AddRefed diff --git a/dom/base/nsDocument.cpp b/dom/base/nsDocument.cpp index fc59e3a2e38e..06ba095ad11a 100644 --- a/dom/base/nsDocument.cpp +++ b/dom/base/nsDocument.cpp @@ -6549,6 +6549,9 @@ nsDocument::RegisterElement(JSContext* aCx, const nsAString& aType, options.mExtends.Construct(lcName); } + // Note: No calls that might run JS or trigger CC after this, or there's a + // (vanishingly small) risk of our constructor being nulled before Define() + // can access it. RefPtr functionConstructor = new Function(aCx, wrappedConstructor, sgo); diff --git a/dom/bindings/BindingUtils.h b/dom/bindings/BindingUtils.h index 059e4f19882c..b62d2b7aa6ce 100644 --- a/dom/bindings/BindingUtils.h +++ b/dom/bindings/BindingUtils.h @@ -1918,9 +1918,9 @@ GetOrCreateDOMReflectorNoWrap(JSContext* cx, T& value, template inline JSObject* -GetCallbackFromCallbackObject(T* aObj) +GetCallbackFromCallbackObject(JSContext* aCx, T* aObj) { - return aObj->CallbackOrNull(); + return aObj->Callback(aCx); } // Helper for getting the callback JSObject* of a smart ptr around a @@ -1929,26 +1929,26 @@ GetCallbackFromCallbackObject(T* aObj) template ::value> struct GetCallbackFromCallbackObjectHelper { - static inline JSObject* Get(const T& aObj) + static inline JSObject* Get(JSContext* aCx, const T& aObj) { - return GetCallbackFromCallbackObject(aObj.get()); + return GetCallbackFromCallbackObject(aCx, aObj.get()); } }; template struct GetCallbackFromCallbackObjectHelper { - static inline JSObject* Get(T& aObj) + static inline JSObject* Get(JSContext* aCx, T& aObj) { - return GetCallbackFromCallbackObject(&aObj); + return GetCallbackFromCallbackObject(aCx, &aObj); } }; template inline JSObject* -GetCallbackFromCallbackObject(T& aObj) +GetCallbackFromCallbackObject(JSContext* aCx, T& aObj) { - return GetCallbackFromCallbackObjectHelper::Get(aObj); + return GetCallbackFromCallbackObjectHelper::Get(aCx, aObj); } static inline bool diff --git a/dom/bindings/CallbackObject.cpp b/dom/bindings/CallbackObject.cpp index 44898cc61733..f8ddc8e005ac 100644 --- a/dom/bindings/CallbackObject.cpp +++ b/dom/bindings/CallbackObject.cpp @@ -115,6 +115,18 @@ CallbackObject::FinishSlowJSInitIfMoreThanOneOwner(JSContext* aCx) } } +JSObject* +CallbackObject::Callback(JSContext* aCx) +{ + JSObject* callback = CallbackOrNull(); + if (!callback) { + callback = JS_NewDeadWrapper(aCx); + } + + MOZ_DIAGNOSTIC_ASSERT(callback); + return callback; +} + CallbackObject::CallSetup::CallSetup(CallbackObject* aCallback, ErrorResult& aRv, const char* aExecutionReason, diff --git a/dom/bindings/CallbackObject.h b/dom/bindings/CallbackObject.h index 843611dea8df..94605cd37758 100644 --- a/dom/bindings/CallbackObject.h +++ b/dom/bindings/CallbackObject.h @@ -93,6 +93,10 @@ public: return CallbackPreserveColor(); } + // Like CallbackOrNull(), but will return a new dead proxy object in the + // caller's compartment if the callback is null. + JSObject* Callback(JSContext* aCx); + JSObject* GetCreationStack() const { return mCreationStack; @@ -594,12 +598,17 @@ public: this->get().operator=(arg); } - // Codegen relies on being able to do CallbackOrNull() on us. + // Codegen relies on being able to do CallbackOrNull() and Callback() on us. JS::Handle CallbackOrNull() const { return this->get()->CallbackOrNull(); } + JSObject* Callback(JSContext* aCx) const + { + return this->get()->Callback(aCx); + } + ~RootedCallback() { // Ensure that our callback starts holding on to its own JS objects as diff --git a/dom/bindings/Codegen.py b/dom/bindings/Codegen.py index 616f3f4c41b1..9e3ea13f68ab 100644 --- a/dom/bindings/Codegen.py +++ b/dom/bindings/Codegen.py @@ -6912,7 +6912,7 @@ def getWrapTemplateForType(type, descriptorProvider, result, successCode, # Callbacks can store null if we nuked the compartments their # objects lived in. wrapCode = setObjectOrNull( - "GetCallbackFromCallbackObject(%(result)s)", + "GetCallbackFromCallbackObject(cx, %(result)s)", wrapAsType=type) if type.nullable(): wrapCode = ( diff --git a/dom/bindings/ToJSValue.h b/dom/bindings/ToJSValue.h index e1cb287be787..797870e8af65 100644 --- a/dom/bindings/ToJSValue.h +++ b/dom/bindings/ToJSValue.h @@ -132,7 +132,7 @@ ToJSValue(JSContext* aCx, // Make sure we're called in a compartment MOZ_ASSERT(JS::CurrentGlobalOrNull(aCx)); - aValue.setObjectOrNull(aArgument.CallbackOrNull()); + aValue.setObjectOrNull(aArgument.Callback(aCx)); return MaybeWrapValue(aCx, aValue); } diff --git a/dom/events/DOMEventTargetHelper.cpp b/dom/events/DOMEventTargetHelper.cpp index 35c106a478b6..f04585cd3e57 100644 --- a/dom/events/DOMEventTargetHelper.cpp +++ b/dom/events/DOMEventTargetHelper.cpp @@ -324,7 +324,7 @@ DOMEventTargetHelper::GetEventHandler(nsIAtom* aType, { EventHandlerNonNull* handler = GetEventHandler(aType, EmptyString()); if (handler) { - *aValue = JS::ObjectOrNullValue(handler->CallableOrNull()); + *aValue = JS::ObjectValue(*handler->Callback(aCx)); } else { *aValue = JS::NullValue(); } diff --git a/js/xpconnect/tests/unit/test_nuke_sandbox_event_listeners.js b/js/xpconnect/tests/unit/test_nuke_sandbox_event_listeners.js index ba055c3b3360..dfd837210a5b 100644 --- a/js/xpconnect/tests/unit/test_nuke_sandbox_event_listeners.js +++ b/js/xpconnect/tests/unit/test_nuke_sandbox_event_listeners.js @@ -29,6 +29,8 @@ add_task(async function() { let sandbox = Cu.Sandbox(window, {sandboxPrototype: window}); function sandboxContent() { + window.onload = function SandboxOnLoad() {}; + window.addEventListener("FromTest", () => { window.dispatchEvent(new CustomEvent("FromSandbox")); }, true); @@ -40,6 +42,11 @@ add_task(async function() { let fromTestPromise = promiseEvent(window, "FromTest"); let fromSandboxPromise = promiseEvent(window, "FromSandbox"); + equal(typeof window.onload, "function", + "window.onload should contain sandbox event listener"); + equal(window.onload.name, "SandboxOnLoad", + "window.onload have the correct function name"); + do_print("Dispatch FromTest event"); window.dispatchEvent(new window.CustomEvent("FromTest")); @@ -70,6 +77,8 @@ add_task(async function() { Cu.forceGC(); Cu.forceCC(); + ok(Cu.isDeadWrapper(window.onload), + "window.onload should contain a dead wrapper after sandbox is nuked"); do_print("Dispatch FromTest event"); fromTestPromise = promiseEvent(window, "FromTest"); From da8dc618c4de967c29de79e5fef70007b5b8920b Mon Sep 17 00:00:00 2001 From: Aaron Klotz Date: Tue, 19 Sep 2017 14:35:27 -0600 Subject: [PATCH 22/56] Bug 1383501: Obtain and report the current activation context's manifest path; r=jimm MozReview-Commit-ID: HJ1zNoEMzvS --- ipc/mscom/ActivationContext.cpp | 64 +++++++++++++++++++++++++++++++++ ipc/mscom/ActivationContext.h | 7 ++++ ipc/mscom/ProxyStream.cpp | 28 +++++++++++++-- 3 files changed, 96 insertions(+), 3 deletions(-) diff --git a/ipc/mscom/ActivationContext.cpp b/ipc/mscom/ActivationContext.cpp index 188ddd1137cb..a87ce0985b2f 100644 --- a/ipc/mscom/ActivationContext.cpp +++ b/ipc/mscom/ActivationContext.cpp @@ -93,6 +93,8 @@ ActivationContext::~ActivationContext() Release(); } +#if defined(MOZILLA_INTERNAL_API) + /* static */ Result ActivationContext::GetCurrent() { @@ -104,6 +106,68 @@ ActivationContext::GetCurrent() return reinterpret_cast(actCtx); } +/* static */ HRESULT +ActivationContext::GetCurrentManifestPath(nsAString& aOutManifestPath) +{ + aOutManifestPath.Truncate(); + + SIZE_T bytesNeeded; + BOOL ok = ::QueryActCtxW(QUERY_ACTCTX_FLAG_USE_ACTIVE_ACTCTX, nullptr, + nullptr, ActivationContextDetailedInformation, + nullptr, 0, &bytesNeeded); + if (!ok) { + DWORD err = ::GetLastError(); + if (err != ERROR_INSUFFICIENT_BUFFER) { + return HRESULT_FROM_WIN32(err); + } + } + + auto ctxBuf = MakeUnique(bytesNeeded); + + ok = ::QueryActCtxW(QUERY_ACTCTX_FLAG_USE_ACTIVE_ACTCTX, nullptr, nullptr, + ActivationContextDetailedInformation, ctxBuf.get(), + bytesNeeded, nullptr); + if (!ok) { + return HRESULT_FROM_WIN32(::GetLastError()); + } + + auto ctxInfo = + reinterpret_cast(ctxBuf.get()); + + // assemblyIndex is 1-based, and we want the last index, so we can just copy + // ctxInfo->ulAssemblyCount directly. + DWORD assemblyIndex = ctxInfo->ulAssemblyCount; + ok = ::QueryActCtxW(QUERY_ACTCTX_FLAG_USE_ACTIVE_ACTCTX, nullptr, + &assemblyIndex, + AssemblyDetailedInformationInActivationContext, nullptr, + 0, &bytesNeeded); + if (!ok) { + DWORD err = ::GetLastError(); + if (err != ERROR_INSUFFICIENT_BUFFER) { + return HRESULT_FROM_WIN32(err); + } + } + + auto assemblyBuf = MakeUnique(bytesNeeded); + + ok = ::QueryActCtxW(QUERY_ACTCTX_FLAG_USE_ACTIVE_ACTCTX, nullptr, + &assemblyIndex, + AssemblyDetailedInformationInActivationContext, + assemblyBuf.get(), bytesNeeded, &bytesNeeded); + if (!ok) { + return HRESULT_FROM_WIN32(::GetLastError()); + } + + auto assemblyInfo = + reinterpret_cast(assemblyBuf.get()); + aOutManifestPath = nsDependentString(assemblyInfo->lpAssemblyManifestPath, + (assemblyInfo->ulManifestPathLength + 1) / sizeof(wchar_t)); + + return S_OK; +} + +#endif // defined(MOZILLA_INTERNAL_API) + ActivationContextRegion::ActivationContextRegion(const ActivationContext& aActCtx) : mActCtx(aActCtx) , mActCookie(0) diff --git a/ipc/mscom/ActivationContext.h b/ipc/mscom/ActivationContext.h index 00c0f3bd354f..e214f8dfb73e 100644 --- a/ipc/mscom/ActivationContext.h +++ b/ipc/mscom/ActivationContext.h @@ -11,6 +11,10 @@ #include "mozilla/Move.h" #include "mozilla/Result.h" +#if defined(MOZILLA_INTERNAL_API) +#include "nsString.h" +#endif // defined(MOZILLA_INTERNAL_API) + #include namespace mozilla { @@ -35,7 +39,10 @@ public: return mActCtx != INVALID_HANDLE_VALUE; } +#if defined(MOZILLA_INTERNAL_API) static Result GetCurrent(); + static HRESULT GetCurrentManifestPath(nsAString& aOutManifestPath); +#endif // defined(MOZILLA_INTERNAL_API) private: void Init(ACTCTX& aActCtx); diff --git a/ipc/mscom/ProxyStream.cpp b/ipc/mscom/ProxyStream.cpp index 9dabd54d2e2e..11360294a747 100644 --- a/ipc/mscom/ProxyStream.cpp +++ b/ipc/mscom/ProxyStream.cpp @@ -83,6 +83,7 @@ ProxyStream::ProxyStream(REFIID aIID, const BYTE* aInitBuf, #if defined(ACCESSIBILITY) && defined(MOZ_CRASHREPORTER) const uint32_t expectedStreamLen = GetOBJREFSize(WrapNotNull(mStream)); nsAutoCString strActCtx; + nsAutoString manifestPath; #endif // defined(ACCESSIBILITY) && defined(MOZ_CRASHREPORTER) HRESULT unmarshalResult = S_OK; @@ -92,7 +93,7 @@ ProxyStream::ProxyStream(REFIID aIID, const BYTE* aInitBuf, // actual interface later. #if defined(ACCESSIBILITY) && defined(MOZ_CRASHREPORTER) - auto marshalFn = [this, &strActCtx, &unmarshalResult, &aIID]() -> void + auto marshalFn = [this, &strActCtx, &manifestPath, &unmarshalResult, &aIID]() -> void #else auto marshalFn = [this, &unmarshalResult, &aIID]() -> void #endif // defined(ACCESSIBILITY) && defined(MOZ_CRASHREPORTER) @@ -104,6 +105,8 @@ ProxyStream::ProxyStream(REFIID aIID, const BYTE* aInitBuf, } else { strActCtx.AppendPrintf("HRESULT 0x%08X", curActCtx.unwrapErr()); } + + ActivationContext::GetCurrentManifestPath(manifestPath); #endif // defined(ACCESSIBILITY) && defined(MOZ_CRASHREPORTER) unmarshalResult = @@ -137,6 +140,8 @@ ProxyStream::ProxyStream(REFIID aIID, const BYTE* aInitBuf, AnnotateClassRegistration(CLSID_AccessibleHandler); CrashReporter::AnnotateCrashReport(NS_LITERAL_CSTRING("UnmarshalActCtx"), strActCtx); + CrashReporter::AnnotateCrashReport(NS_LITERAL_CSTRING("UnmarshalActCtxManifestPath"), + NS_ConvertUTF16toUTF8(manifestPath)); CrashReporter::AnnotateCrashReport(NS_LITERAL_CSTRING("A11yHandlerRegistered"), a11y::IsHandlerRegistered() ? NS_LITERAL_CSTRING("true") : @@ -285,13 +290,28 @@ ProxyStream::ProxyStream(REFIID aIID, IUnknown* aObject, HRESULT statResult = S_OK; HRESULT getHGlobalResult = S_OK; - auto marshalFn = [&]() -> void +#if defined(MOZ_CRASHREPORTER) + nsAutoString manifestPath; + + auto marshalFn = [this, &aIID, aObject, mshlFlags, &stream, &streamSize, + &hglobal, &createStreamResult, &marshalResult, &statResult, + &getHGlobalResult, &manifestPath]() -> void +#else + auto marshalFn = [this, &aIID, aObject, mshlFlags, &stream, &streamSize, + &hglobal, &createStreamResult, &marshalResult, &statResult, + &getHGlobalResult]() -> void +#endif // defined(MOZ_CRASHREPORTER) { - createStreamResult = ::CreateStreamOnHGlobal(nullptr, TRUE, getter_AddRefs(stream)); + createStreamResult = ::CreateStreamOnHGlobal(nullptr, TRUE, + getter_AddRefs(stream)); if (FAILED(createStreamResult)) { return; } +#if defined(MOZ_CRASHREPORTER) + ActivationContext::GetCurrentManifestPath(manifestPath); +#endif // defined(MOZ_CRASHREPORTER) + marshalResult = ::CoMarshalInterface(stream, aIID, aObject, MSHCTX_LOCAL, nullptr, mshlFlags); MOZ_DIAGNOSTIC_ASSERT(marshalResult != E_INVALIDARG); @@ -333,6 +353,8 @@ ProxyStream::ProxyStream(REFIID aIID, IUnknown* aObject, nsPrintfCString hrAsStr("0x%08X", marshalResult); CrashReporter::AnnotateCrashReport( NS_LITERAL_CSTRING("CoMarshalInterfaceFailure"), hrAsStr); + CrashReporter::AnnotateCrashReport(NS_LITERAL_CSTRING("MarshalActCtxManifestPath"), + NS_ConvertUTF16toUTF8(manifestPath)); } if (FAILED(statResult)) { From fc7719c06884fac08ac469e66bb1ff59a2004764 Mon Sep 17 00:00:00 2001 From: Wes Kocher Date: Thu, 21 Sep 2017 13:48:04 -0700 Subject: [PATCH 23/56] Backed out changeset 04888373f12b (bug 1401878) for xpcshell bustage a=backout MozReview-Commit-ID: AYiI2MJbBbC --- .../preferences/SiteDataManager.jsm | 26 ------------------- 1 file changed, 26 deletions(-) diff --git a/browser/components/preferences/SiteDataManager.jsm b/browser/components/preferences/SiteDataManager.jsm index 8f2ac2a34188..d6dd5c78656a 100644 --- a/browser/components/preferences/SiteDataManager.jsm +++ b/browser/components/preferences/SiteDataManager.jsm @@ -9,9 +9,6 @@ XPCOMUtils.defineLazyModuleGetter(this, "OfflineAppCacheHelper", "resource:///modules/offlineAppCache.jsm"); XPCOMUtils.defineLazyModuleGetter(this, "ContextualIdentityService", "resource://gre/modules/ContextualIdentityService.jsm"); -XPCOMUtils.defineLazyServiceGetter(this, "serviceWorkerManager", - "@mozilla.org/serviceworkers/manager;1", - "nsIServiceWorkerManager"); this.EXPORTED_SYMBOLS = [ "SiteDataManager" @@ -220,19 +217,6 @@ this.SiteDataManager = { } }, - _removeServiceWorkers(site) { - let serviceWorkers = serviceWorkerManager.getAllRegistrations(); - for (let i = 0; i < serviceWorkers.length; i++) { - let sw = serviceWorkers.queryElementAt(i, Ci.nsIServiceWorkerRegistrationInfo); - for (let principal of site.principals) { - if (sw.principal.equals(principal)) { - serviceWorkerManager.removeAndPropagate(sw.principal.URI.host); - break; - } - } - } - }, - remove(hosts) { let promises = []; let unknownHost = ""; @@ -242,7 +226,6 @@ this.SiteDataManager = { this._removePermission(site); this._removeAppCache(site); this._removeCookie(site); - this._removeServiceWorkers(site); promises.push(this._removeQuotaUsage(site)); } else { unknownHost = host; @@ -261,15 +244,6 @@ this.SiteDataManager = { Services.cache2.clear(); Services.cookies.removeAll(); OfflineAppCacheHelper.clear(); - - // Iterate through the service workers and remove them. - let serviceWorkers = serviceWorkerManager.getAllRegistrations(); - for (let i = 0; i < serviceWorkers.length; i++) { - let sw = serviceWorkers.queryElementAt(i, Ci.nsIServiceWorkerRegistrationInfo); - let host = sw.principal.URI.host; - serviceWorkerManager.removeAndPropagate(host); - } - // Refresh sites using quota usage again. // This is for the case: // 1. User goes to the about:preferences Site Data section. From 6bc8986bc160971f2c0b42442e3e12c83de6b177 Mon Sep 17 00:00:00 2001 From: Wes Kocher Date: Thu, 21 Sep 2017 13:48:10 -0700 Subject: [PATCH 24/56] Backed out changeset e89d2565799b (bug 1047098) for xpcshell bustage a=backout MozReview-Commit-ID: FRFALkRxDxl --- browser/base/content/sanitize.js | 11 ----------- toolkit/components/places/tests/head_common.js | 2 +- 2 files changed, 1 insertion(+), 12 deletions(-) diff --git a/browser/base/content/sanitize.js b/browser/base/content/sanitize.js index faafaa686299..56779e3429e2 100644 --- a/browser/base/content/sanitize.js +++ b/browser/base/content/sanitize.js @@ -20,9 +20,6 @@ XPCOMUtils.defineLazyModuleGetters(this, { }); -XPCOMUtils.defineLazyServiceGetter(this, "serviceWorkerManager", - "@mozilla.org/serviceworkers/manager;1", - "nsIServiceWorkerManager"); XPCOMUtils.defineLazyServiceGetter(this, "quotaManagerService", "@mozilla.org/dom/quota-manager-service;1", "nsIQuotaManagerService"); @@ -296,14 +293,6 @@ Sanitizer.prototype = { // LocalStorage Services.obs.notifyObservers(null, "extension:purge-localStorage"); - // ServiceWorkers - let serviceWorkers = serviceWorkerManager.getAllRegistrations(); - for (let i = 0; i < serviceWorkers.length; i++) { - let sw = serviceWorkers.queryElementAt(i, Ci.nsIServiceWorkerRegistrationInfo); - let host = sw.principal.URI.host; - serviceWorkerManager.removeAndPropagate(host); - } - // QuotaManager let promises = []; await new Promise(resolve => { diff --git a/toolkit/components/places/tests/head_common.js b/toolkit/components/places/tests/head_common.js index 610cb597ce52..70288c6514be 100644 --- a/toolkit/components/places/tests/head_common.js +++ b/toolkit/components/places/tests/head_common.js @@ -75,7 +75,7 @@ XPCOMUtils.defineLazyGetter(this, "SMALLSVG_DATA_URI", function() { var gTestDir = do_get_cwd(); // Initialize profile. -var gProfD = do_get_profile(true); +var gProfD = do_get_profile(); Services.prefs.setBoolPref("browser.urlbar.usepreloadedtopurls.enabled", false); do_register_cleanup(() => From e467aa133ad1f8be91975c091bcaca47368e7987 Mon Sep 17 00:00:00 2001 From: Andrew Osmond Date: Thu, 21 Sep 2017 16:56:38 -0400 Subject: [PATCH 25/56] Bug 1401524 - Ensure SurfaceCache state coherency whenever we perform an operation that may discard surfaces. r=tnikkel There are a number of operations with the surface cache which may result in individual surfaces for a particular image cache to be removed. If an image cache is emptied, and we are in factor of 2 mode, we should reset it to the default mode, because we require at least one surface to be available to determine the native/ideal size. Additionally, if the cache is not locked, it should be removed entirely from the surface cache. We handle this correctly in methods such as Lookup and LookupBestMatch, but Prune and CollectSizeOfSurfaces can also cause this to happen, as recently done in bug 1370412 and bug 1380649. --- image/SurfaceCache.cpp | 63 ++++++++++++++++++++++++++++-------------- 1 file changed, 43 insertions(+), 20 deletions(-) diff --git a/image/SurfaceCache.cpp b/image/SurfaceCache.cpp index 543dd3a4142c..bdb3f5a8da3d 100644 --- a/image/SurfaceCache.cpp +++ b/image/SurfaceCache.cpp @@ -279,18 +279,7 @@ public: RefPtr surface; mSurfaces.Remove(aSurface->GetSurfaceKey(), getter_AddRefs(surface)); - - if (IsEmpty() && mFactor2Mode) { - // The last surface for this cache was removed. This can happen if the - // surface was stored in a volatile buffer and got purged, or the surface - // expired from the cache. If the cache itself lingers for some reason - // (e.g. in the process of performing a lookup, the cache itself is - // locked), then we need to reset the factor of 2 state because it - // requires at least one surface present to get the native size - // information from the image. - mFactor2Mode = mFactor2Pruned = false; - } - + AfterMaybeRemove(); return surface.forget(); } @@ -537,6 +526,11 @@ public: if (!hasNotFactorSize) { mFactor2Pruned = true; } + + // We should never leave factor of 2 mode due to pruning in of itself, but + // if we discarded surfaces due to the volatile buffers getting released, + // it is possible. + AfterMaybeRemove(); } IntSize SuggestedSize(const IntSize& aSize) const @@ -548,7 +542,10 @@ public: // We cannot enter factor of 2 mode unless we have a minimum number of // surfaces, and we should have left it if the cache was emptied. - MOZ_ASSERT(!IsEmpty()); + if (MOZ_UNLIKELY(IsEmpty())) { + MOZ_ASSERT_UNREACHABLE("Should not be empty and in factor of 2 mode!"); + return aSize; + } // This bit of awkwardness gets the largest native size of the image. auto iter = ConstIter(); @@ -644,6 +641,8 @@ public: } report.Add(surface, factor2Size); } + + AfterMaybeRemove(); } SurfaceTable::Iterator ConstIter() const @@ -655,6 +654,20 @@ public: bool IsLocked() const { return mLocked; } private: + void AfterMaybeRemove() + { + if (IsEmpty() && mFactor2Mode) { + // The last surface for this cache was removed. This can happen if the + // surface was stored in a volatile buffer and got purged, or the surface + // expired from the cache. If the cache itself lingers for some reason + // (e.g. in the process of performing a lookup, the cache itself is + // locked), then we need to reset the factor of 2 state because it + // requires at least one surface present to get the native size + // information from the image. + mFactor2Mode = mFactor2Pruned = false; + } + } + SurfaceTable mSurfaces; bool mLocked; @@ -816,13 +829,7 @@ public: // Individual surfaces must be freed outside the lock. mCachedSurfacesDiscard.AppendElement(cache->Remove(aSurface)); - // Remove the per-image cache if it's unneeded now. Keep it if the image is - // locked, since the per-image cache is where we store that state. Note that - // we don't push it into mImageCachesDiscard because all of its surfaces - // have been removed, so it is safe to free while holding the lock. - if (cache->IsEmpty() && !cache->IsLocked()) { - mImageCaches.Remove(imageKey); - } + MaybeRemoveEmptyCache(imageKey, cache); } bool StartTracking(NotNull aSurface, @@ -1093,6 +1100,8 @@ public: // Individual surfaces must be freed outside the lock. mCachedSurfacesDiscard.AppendElement(aSurface); }); + + MaybeRemoveEmptyCache(aImageKey, cache); } void DiscardAll(const StaticMutexAutoLock& aAutoLock) @@ -1199,6 +1208,8 @@ public: // Individual surfaces must be freed outside the lock. mCachedSurfacesDiscard.AppendElement(aSurface); }); + + MaybeRemoveEmptyCache(aImageKey, cache); } private: @@ -1209,6 +1220,18 @@ private: return imageCache.forget(); } + void MaybeRemoveEmptyCache(const ImageKey aImageKey, + ImageSurfaceCache* aCache) + { + // Remove the per-image cache if it's unneeded now. Keep it if the image is + // locked, since the per-image cache is where we store that state. Note that + // we don't push it into mImageCachesDiscard because all of its surfaces + // have been removed, so it is safe to free while holding the lock. + if (aCache->IsEmpty() && !aCache->IsLocked()) { + mImageCaches.Remove(aImageKey); + } + } + // This is similar to CanHold() except that it takes into account the costs of // locked surfaces. It's used internally in Insert(), but it's not exposed // publicly because we permit multithreaded access to the surface cache, which From 37586fa5f50fe127b7a7aefa30f57f0b573b5c79 Mon Sep 17 00:00:00 2001 From: Wes Kocher Date: Thu, 21 Sep 2017 14:10:30 -0700 Subject: [PATCH 26/56] Bug 1402123 - Disable MediaStream-MediaElement-preload-none.https.html on non-stylo builds a=bustage MozReview-Commit-ID: 6LRGcW4ukVB --HG-- extra : rebase_source : a044237f6f637e62d41a76426b05606aef48ad00 --- .../MediaStream-MediaElement-preload-none.https.html.ini | 2 ++ 1 file changed, 2 insertions(+) diff --git a/testing/web-platform/meta/mediacapture-streams/MediaStream-MediaElement-preload-none.https.html.ini b/testing/web-platform/meta/mediacapture-streams/MediaStream-MediaElement-preload-none.https.html.ini index 5a1b1670b396..cbdfe32cd3c7 100644 --- a/testing/web-platform/meta/mediacapture-streams/MediaStream-MediaElement-preload-none.https.html.ini +++ b/testing/web-platform/meta/mediacapture-streams/MediaStream-MediaElement-preload-none.https.html.ini @@ -13,6 +13,8 @@ if debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): TIMEOUT if debug and stylo and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): TIMEOUT [Test that preload 'none' is ignored for MediaStream object URL used as src] + disabled: + if not stylo: https://bugzilla.mozilla.org/show_bug.cgi?id=1402123 expected: if debug and not stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): TIMEOUT if debug and stylo and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): TIMEOUT From c1b8117cfde378cd4637c38f017d663c8bcff2ba Mon Sep 17 00:00:00 2001 From: Nicholas Nethercote Date: Wed, 20 Sep 2017 11:46:26 +1000 Subject: [PATCH 27/56] Bug 1401421 - Remove profiler_get_backtrace_noalloc. r=mstange. Bug 1385953 removed MemProfiler, which was its only user. --HG-- extra : rebase_source : 87ecf6aec67f4bf073e08ea5f2b2fa9734451e8c --- tools/profiler/core/platform.cpp | 60 --------------------------- tools/profiler/public/GeckoProfiler.h | 3 -- 2 files changed, 63 deletions(-) diff --git a/tools/profiler/core/platform.cpp b/tools/profiler/core/platform.cpp index b3f8a2aa3d61..2ff23bf2e721 100644 --- a/tools/profiler/core/platform.cpp +++ b/tools/profiler/core/platform.cpp @@ -3189,66 +3189,6 @@ ProfilerBacktraceDestructor::operator()(ProfilerBacktrace* aBacktrace) delete aBacktrace; } -// Fill the output buffer with the following pattern: -// "Label 1" "\0" "Label 2" "\0" ... "Label N" "\0" "\0" -// TODO: use the unwinder instead of pseudo stack. -void -profiler_get_backtrace_noalloc(char *output, size_t outputSize) -{ - MOZ_RELEASE_ASSERT(CorePS::Exists()); - - MOZ_ASSERT(outputSize >= 2); - char *bound = output + outputSize - 2; - output[0] = output[1] = '\0'; - - PSAutoLock lock(gPSMutex); - - if (!ActivePS::Exists(lock)) { - return; - } - - PseudoStack* pseudoStack = TLSInfo::Stack(); - if (!pseudoStack) { - return; - } - - bool includeDynamicString = !ActivePS::FeaturePrivacy(lock); - - js::ProfileEntry* pseudoEntries = pseudoStack->entries; - uint32_t pseudoCount = pseudoStack->stackSize(); - - for (uint32_t i = 0; i < pseudoCount; i++) { - const char* label = pseudoEntries[i].label(); - const char* dynamicString = - includeDynamicString ? pseudoEntries[i].dynamicString() : nullptr; - size_t labelLength = strlen(label); - if (dynamicString) { - // Put the label, maybe a space, and the dynamic string into output. - size_t spaceLength = label[0] == '\0' ? 0 : 1; - size_t dynamicStringLength = strlen(dynamicString); - if (output + labelLength + spaceLength + dynamicStringLength >= bound) { - break; - } - strcpy(output, label); - output += labelLength; - if (spaceLength != 0) { - *output++ = ' '; - } - strcpy(output, dynamicString); - output += dynamicStringLength; - } else { - // Only put the label into output. - if (output + labelLength >= bound) { - break; - } - strcpy(output, label); - output += labelLength; - } - *output++ = '\0'; - *output = '\0'; - } -} - static void racy_profiler_add_marker(const char* aMarkerName, UniquePtr aPayload) diff --git a/tools/profiler/public/GeckoProfiler.h b/tools/profiler/public/GeckoProfiler.h index c343ca450367..df6a9050641b 100644 --- a/tools/profiler/public/GeckoProfiler.h +++ b/tools/profiler/public/GeckoProfiler.h @@ -319,9 +319,6 @@ using UniqueProfilerBacktrace = // if the profiler is inactive or in privacy mode. PROFILER_FUNC(UniqueProfilerBacktrace profiler_get_backtrace(), nullptr) -PROFILER_FUNC_VOID(profiler_get_backtrace_noalloc(char* aOutput, - size_t aOutputSize)) - // Get information about the current buffer status. A no-op when the profiler // is inactive. Do not call this function; call profiler_get_buffer_info() // instead. From 936191dd530d0706b3b2a1b7ac5753eb5eb1da35 Mon Sep 17 00:00:00 2001 From: Dylan Roeh Date: Tue, 19 Sep 2017 15:09:16 -0500 Subject: [PATCH 28/56] Bug 1386712 - Load about:blank in CustomTabsActivity.finish() to immediately stop media playback. r=snorp --- .../java/org/mozilla/gecko/customtabs/CustomTabsActivity.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mobile/android/base/java/org/mozilla/gecko/customtabs/CustomTabsActivity.java b/mobile/android/base/java/org/mozilla/gecko/customtabs/CustomTabsActivity.java index 02ce0bdf3e62..41c9c1f45aa1 100644 --- a/mobile/android/base/java/org/mozilla/gecko/customtabs/CustomTabsActivity.java +++ b/mobile/android/base/java/org/mozilla/gecko/customtabs/CustomTabsActivity.java @@ -218,6 +218,8 @@ public class CustomTabsActivity extends AppCompatActivity @Override public void finish() { + mGeckoView.loadUri("about:blank"); + super.finish(); final SafeIntent intent = new SafeIntent(getIntent()); From 1aef1162683b2a98e782123aa2544f2bc8a09ce6 Mon Sep 17 00:00:00 2001 From: Nicholas Nethercote Date: Fri, 22 Sep 2017 08:09:29 +1000 Subject: [PATCH 29/56] Bug 1401100 - Remove nsIMemoryReporterCallback. r=erahm. nsIHandleReportCallback, typedef of nsIMemoryReporterCallback, has been the preferred name for a long time and is used in most places. This patch removes nsIMemoryReporterCallback. --HG-- extra : rebase_source : c675076b4f98d93d96235dad890e31e0b0e6c277 --- js/xpconnect/src/XPCJSMemoryReporter.h | 4 ++-- js/xpconnect/src/xpcpublic.h | 4 ++-- .../aboutmemory/tests/test_memoryReporters.xul | 2 +- xpcom/base/nsIMemoryReporter.idl | 18 +++++++----------- 4 files changed, 12 insertions(+), 16 deletions(-) diff --git a/js/xpconnect/src/XPCJSMemoryReporter.h b/js/xpconnect/src/XPCJSMemoryReporter.h index 7881ac0f587b..28a66f4fd590 100644 --- a/js/xpconnect/src/XPCJSMemoryReporter.h +++ b/js/xpconnect/src/XPCJSMemoryReporter.h @@ -8,7 +8,7 @@ #define XPCJSMemoryReporter_h class nsISupports; -class nsIMemoryReporterCallback; +class nsIHandleReportCallback; namespace xpc { @@ -23,7 +23,7 @@ class JSReporter public: static void CollectReports(WindowPaths* windowPaths, WindowPaths* topWindowPaths, - nsIMemoryReporterCallback* handleReport, + nsIHandleReportCallback* handleReport, nsISupports* data, bool anonymize); }; diff --git a/js/xpconnect/src/xpcpublic.h b/js/xpconnect/src/xpcpublic.h index cf8c03fb015e..05ce7d870f1a 100644 --- a/js/xpconnect/src/xpcpublic.h +++ b/js/xpconnect/src/xpcpublic.h @@ -30,7 +30,7 @@ class nsGlobalWindow; class nsIPrincipal; class nsScriptNameSpaceManager; -class nsIMemoryReporterCallback; +class nsIHandleReportCallback; namespace mozilla { namespace dom { @@ -431,7 +431,7 @@ private: void ReportJSRuntimeExplicitTreeStats(const JS::RuntimeStats& rtStats, const nsACString& rtPath, - nsIMemoryReporterCallback* handleReport, + nsIHandleReportCallback* handleReport, nsISupports* data, bool anonymize, size_t* rtTotal = nullptr); diff --git a/toolkit/components/aboutmemory/tests/test_memoryReporters.xul b/toolkit/components/aboutmemory/tests/test_memoryReporters.xul index 9d56890b3965..e9401bd118af 100644 --- a/toolkit/components/aboutmemory/tests/test_memoryReporters.xul +++ b/toolkit/components/aboutmemory/tests/test_memoryReporters.xul @@ -340,7 +340,7 @@ } } }, - // nsIMemoryReporterCallback + // nsIHandleReportCallback callback: function(process, path, kind, units, amount, data) { if (path in this.tests) { this.seen++; diff --git a/xpcom/base/nsIMemoryReporter.idl b/xpcom/base/nsIMemoryReporter.idl index 30db029520b7..306504a897db 100644 --- a/xpcom/base/nsIMemoryReporter.idl +++ b/xpcom/base/nsIMemoryReporter.idl @@ -22,7 +22,7 @@ interface nsISimpleEnumerator; */ [scriptable, function, uuid(62ef0e1c-dbd6-11e3-aa75-3c970e9f4238)] -interface nsIMemoryReporterCallback : nsISupports +interface nsIHandleReportCallback : nsISupports { /* * The arguments to the callback are as follows. @@ -179,19 +179,19 @@ interface nsIMemoryReporter : nsISupports * - Chrome domains and URLs. * - Information about installed extensions. */ - void collectReports(in nsIMemoryReporterCallback callback, + void collectReports(in nsIHandleReportCallback callback, in nsISupports data, in boolean anonymize); /* - * Kinds. See the |kind| comment in nsIMemoryReporterCallback. + * Kinds. See the |kind| comment in nsIHandleReportCallback. */ const int32_t KIND_NONHEAP = 0; const int32_t KIND_HEAP = 1; const int32_t KIND_OTHER = 2; /* - * Units. See the |units| comment in nsIMemoryReporterCallback. + * Units. See the |units| comment in nsIHandleReportCallback. */ const int32_t UNITS_BYTES = 0; const int32_t UNITS_COUNT = 1; @@ -275,7 +275,7 @@ interface nsIMemoryReporterManager : nsISupports * If |anonymize| is true, it indicates that the memory reporters should * anonymize any privacy-sensitive data (see above). */ - void getReports(in nsIMemoryReporterCallback handleReport, + void getReports(in nsIHandleReportCallback handleReport, in nsISupports handleReportData, in nsIFinishReportingCallback finishReporting, in nsISupports finishReportingData, @@ -289,7 +289,7 @@ interface nsIMemoryReporterManager : nsISupports * |dumpMemoryInfoToTempDir| in |nsIMemoryInfoDumper|.) */ [noscript] void - getReportsExtended(in nsIMemoryReporterCallback handleReport, + getReportsExtended(in nsIHandleReportCallback handleReport, in nsISupports handleReportData, in nsIFinishReportingCallback finishReporting, in nsISupports finishReportingData, @@ -302,7 +302,7 @@ interface nsIMemoryReporterManager : nsISupports * write a DMD report to that file and close it. */ [noscript] void - getReportsForThisProcessExtended(in nsIMemoryReporterCallback handleReport, + getReportsForThisProcessExtended(in nsIHandleReportCallback handleReport, in nsISupports handleReportData, in boolean anonymize, in FILE DMDFile, @@ -458,10 +458,6 @@ interface nsIMemoryReporterManager : nsISupports class nsPIDOMWindowOuter; -// nsIHandleReportCallback is a better name, but keep nsIMemoryReporterCallback -// around for backwards compatibility. -typedef nsIMemoryReporterCallback nsIHandleReportCallback; - namespace mozilla { // All the following registration/unregistration functions don't use From bcf7d1dd2756fe99def6abccd77e31531aca3c56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20Qu=C3=A8ze?= Date: Fri, 22 Sep 2017 00:50:54 +0200 Subject: [PATCH 30/56] Bug 1400528 - make test_bug574663.html wait until the 'blank' attribute has actually been removed, r=mconley. --- dom/events/test/test_bug574663.html | 16 ++++++++++++---- dom/events/test/window_wheel_default_action.html | 16 ++++++++++++---- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/dom/events/test/test_bug574663.html b/dom/events/test/test_bug574663.html index b3351288cb37..2b1b01eabf6f 100644 --- a/dom/events/test/test_bug574663.html +++ b/dom/events/test/test_bug574663.html @@ -105,12 +105,20 @@ function runTest() { // browser to 0 using the 'blank' attribute. // Until the blank attribute is removed, we can't send scroll events. SimpleTest.waitForFocus(function() { - SpecialPowers.loadChromeScript(_ => { + let chromeScript = SpecialPowers.loadChromeScript(_ => { Components.utils.import("resource://gre/modules/Services.jsm"); - Services.wm.getMostRecentWindow("navigator:browser") - .gBrowser.selectedBrowser.removeAttribute("blank"); + let win = Services.wm.getMostRecentWindow("navigator:browser"); + win.requestAnimationFrame(() => { + win.gBrowser.selectedBrowser.removeAttribute("blank"); + win.requestAnimationFrame(() => { + sendAsyncMessage("blank-attribute-removed"); + }); + }); + }); + chromeScript.promiseOneMessage("blank-attribute-removed").then(() => { + chromeScript.destroy(); + waitForPaint(win, winUtils, callback); }); - waitForPaint(win, winUtils, callback); }, win); }; diff --git a/dom/events/test/window_wheel_default_action.html b/dom/events/test/window_wheel_default_action.html index 53f3ddb27a10..84ad330ad9b9 100644 --- a/dom/events/test/window_wheel_default_action.html +++ b/dom/events/test/window_wheel_default_action.html @@ -52,12 +52,20 @@ // browser to 0 using the 'blank' attribute. // Until the blank attribute is removed, we can't send scroll events. SimpleTest.waitForFocus(function() { - SpecialPowers.loadChromeScript(_ => { + let chromeScript = SpecialPowers.loadChromeScript(_ => { Components.utils.import("resource://gre/modules/Services.jsm"); - Services.wm.getMostRecentWindow("navigator:browser") - .gBrowser.selectedBrowser.removeAttribute("blank"); + let win = Services.wm.getMostRecentWindow("navigator:browser"); + win.requestAnimationFrame(() => { + win.gBrowser.selectedBrowser.removeAttribute("blank"); + win.requestAnimationFrame(() => { + sendAsyncMessage("blank-attribute-removed"); + }); + }); + }); + chromeScript.promiseOneMessage("blank-attribute-removed").then(() => { + chromeScript.destroy(); + runTests(); }); - runTests(); }, window); SimpleTest.requestFlakyTimeout("untriaged"); From 5378a4e1958f14e8072b23b93c8db5b9b3eae436 Mon Sep 17 00:00:00 2001 From: Dylan Roeh Date: Thu, 21 Sep 2017 17:55:36 -0500 Subject: [PATCH 31/56] Bug 1386712 - Add null-checking to fix test bustage. r=me --- .../java/org/mozilla/gecko/customtabs/CustomTabsActivity.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mobile/android/base/java/org/mozilla/gecko/customtabs/CustomTabsActivity.java b/mobile/android/base/java/org/mozilla/gecko/customtabs/CustomTabsActivity.java index 41c9c1f45aa1..5335cfc28987 100644 --- a/mobile/android/base/java/org/mozilla/gecko/customtabs/CustomTabsActivity.java +++ b/mobile/android/base/java/org/mozilla/gecko/customtabs/CustomTabsActivity.java @@ -218,7 +218,9 @@ public class CustomTabsActivity extends AppCompatActivity @Override public void finish() { - mGeckoView.loadUri("about:blank"); + if (mGeckoView != null) { + mGeckoView.loadUri("about:blank"); + } super.finish(); From 99c13fbf3d061dd1484b7286ca4d73d7cbf250d7 Mon Sep 17 00:00:00 2001 From: sotaro Date: Fri, 22 Sep 2017 08:21:09 +0900 Subject: [PATCH 32/56] Bug 1387920 - Drop all ImageContainers' ImageClients during disabling WebRender r=nical --- gfx/layers/ImageContainer.cpp | 10 ++++++++++ gfx/layers/ImageContainer.h | 2 ++ gfx/layers/ipc/ImageBridgeChild.cpp | 19 ++++++++++++++++++- gfx/layers/ipc/ImageBridgeChild.h | 2 ++ 4 files changed, 32 insertions(+), 1 deletion(-) diff --git a/gfx/layers/ImageContainer.cpp b/gfx/layers/ImageContainer.cpp index f033b2ae7161..95a6d09597f0 100644 --- a/gfx/layers/ImageContainer.cpp +++ b/gfx/layers/ImageContainer.cpp @@ -135,6 +135,16 @@ ImageContainer::GetImageClient() return imageClient.forget(); } +void +ImageContainer::DropImageClient() +{ + RecursiveMutexAutoLock mon(mRecursiveMutex); + if (mImageClient) { + mImageClient->ClearCachedResources(); + mImageClient = nullptr; + } +} + void ImageContainer::EnsureImageClient() { diff --git a/gfx/layers/ImageContainer.h b/gfx/layers/ImageContainer.h index 3b5c91d128f0..b95229ec116b 100644 --- a/gfx/layers/ImageContainer.h +++ b/gfx/layers/ImageContainer.h @@ -618,6 +618,8 @@ public: */ static ProducerID AllocateProducerID(); + void DropImageClient(); + private: typedef mozilla::RecursiveMutex RecursiveMutex; diff --git a/gfx/layers/ipc/ImageBridgeChild.cpp b/gfx/layers/ipc/ImageBridgeChild.cpp index 00d238bd4e41..b92ab75b0066 100644 --- a/gfx/layers/ipc/ImageBridgeChild.cpp +++ b/gfx/layers/ipc/ImageBridgeChild.cpp @@ -726,7 +726,24 @@ MessageLoop * ImageBridgeChild::GetMessageLoop() const ImageBridgeChild::IdentifyCompositorTextureHost(const TextureFactoryIdentifier& aIdentifier) { if (RefPtr child = GetSingleton()) { - child->IdentifyTextureHost(aIdentifier); + child->UpdateTextureFactoryIdentifier(aIdentifier); + } +} + +void +ImageBridgeChild::UpdateTextureFactoryIdentifier(const TextureFactoryIdentifier& aIdentifier) +{ + bool disablingWebRender = GetCompositorBackendType() == LayersBackend::LAYERS_WR && + aIdentifier.mParentBackend != LayersBackend::LAYERS_WR; + IdentifyTextureHost(aIdentifier); + if (disablingWebRender) { + // ImageHost is incompatible between WebRender enabled and WebRender disabled. + // Then drop all ImageContainers' ImageClients during disabling WebRender. + MutexAutoLock lock(mContainerMapLock); + for (auto iter = mImageContainers.Iter(); !iter.Done(); iter.Next()) { + ImageContainer* container = iter.Data(); + container->DropImageClient(); + } } } diff --git a/gfx/layers/ipc/ImageBridgeChild.h b/gfx/layers/ipc/ImageBridgeChild.h index a81605df5fad..5b99769d99d0 100644 --- a/gfx/layers/ipc/ImageBridgeChild.h +++ b/gfx/layers/ipc/ImageBridgeChild.h @@ -250,6 +250,8 @@ private: void ProxyAllocShmemNow(SynchronousTask* aTask, AllocShmemParams* aParams); void ProxyDeallocShmemNow(SynchronousTask* aTask, Shmem* aShmem, bool* aResult); + void UpdateTextureFactoryIdentifier(const TextureFactoryIdentifier& aIdentifier); + public: // CompositableForwarder From cea0a3af5d484313c3bd14fe2dbe93128901f79b Mon Sep 17 00:00:00 2001 From: Nicholas Nethercote Date: Tue, 19 Sep 2017 11:07:49 +1000 Subject: [PATCH 33/56] Bug 1400777 (part 1) - Remove eHTMLTags. r=mrbkap. It's just a too-cute-by-half typedef for nsHTMLTag. --HG-- extra : rebase_source : 142128de90c3bed06648db445ca0159c23ea6ff3 --- editor/libeditor/HTMLEditUtils.cpp | 4 ++-- parser/htmlparser/nsElementTable.cpp | 8 +++++--- parser/htmlparser/nsElementTable.h | 6 +++--- parser/htmlparser/nsHTMLTags.h | 2 -- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/editor/libeditor/HTMLEditUtils.cpp b/editor/libeditor/HTMLEditUtils.cpp index 16e750d089e7..d45cadfe06ea 100644 --- a/editor/libeditor/HTMLEditUtils.cpp +++ b/editor/libeditor/HTMLEditUtils.cpp @@ -572,7 +572,7 @@ HTMLEditUtils::SupportsAlignAttr(nsINode& aNode) struct ElementInfo final { #ifdef DEBUG - eHTMLTags mTag; + nsHTMLTag mTag; #endif uint32_t mGroup; uint32_t mCanContainGroups; @@ -787,7 +787,7 @@ HTMLEditUtils::CanContain(int32_t aParent, int32_t aChild) // Special-case button. if (aParent == eHTMLTag_button) { - static const eHTMLTags kButtonExcludeKids[] = { + static const nsHTMLTag kButtonExcludeKids[] = { eHTMLTag_a, eHTMLTag_fieldset, eHTMLTag_form, diff --git a/parser/htmlparser/nsElementTable.cpp b/parser/htmlparser/nsElementTable.cpp index 52507a9765ba..b4d4171a0691 100644 --- a/parser/htmlparser/nsElementTable.cpp +++ b/parser/htmlparser/nsElementTable.cpp @@ -179,12 +179,12 @@ bool nsHTMLElement::IsMemberOf(int32_t aSet) const return TestBits(aSet, mParentBits); } -bool nsHTMLElement::IsContainer(eHTMLTags aId) +bool nsHTMLElement::IsContainer(nsHTMLTag aId) { return !gHTMLElements[aId].mLeaf; } -bool nsHTMLElement::IsBlock(eHTMLTags aId) +bool nsHTMLElement::IsBlock(nsHTMLTag aId) { return gHTMLElements[aId].IsMemberOf(kBlock) || gHTMLElements[aId].IsMemberOf(kBlockEntity) || @@ -196,7 +196,9 @@ bool nsHTMLElement::IsBlock(eHTMLTags aId) #ifdef DEBUG void CheckElementTable() { - for (eHTMLTags t = eHTMLTag_unknown; t <= eHTMLTag_userdefined; t = eHTMLTags(t + 1)) { + for (nsHTMLTag t = eHTMLTag_unknown; + t <= eHTMLTag_userdefined; + t = nsHTMLTag(t + 1)) { NS_ASSERTION(gHTMLElements[t].mTagID == t, "gHTMLElements entries does match tag list."); } } diff --git a/parser/htmlparser/nsElementTable.h b/parser/htmlparser/nsElementTable.h index e3479db8d192..aefbee3298bb 100644 --- a/parser/htmlparser/nsElementTable.h +++ b/parser/htmlparser/nsElementTable.h @@ -81,13 +81,13 @@ struct nsHTMLElement { bool IsMemberOf(int32_t aType) const; #ifdef DEBUG - eHTMLTags mTagID; + nsHTMLTag mTagID; #endif int mParentBits; //defines groups that can contain this element bool mLeaf; - static bool IsContainer(eHTMLTags aTag); - static bool IsBlock(eHTMLTags aTag); + static bool IsContainer(nsHTMLTag aTag); + static bool IsBlock(nsHTMLTag aTag); }; extern const nsHTMLElement gHTMLElements[]; diff --git a/parser/htmlparser/nsHTMLTags.h b/parser/htmlparser/nsHTMLTags.h index 67375df9de48..5838e244d1f0 100644 --- a/parser/htmlparser/nsHTMLTags.h +++ b/parser/htmlparser/nsHTMLTags.h @@ -84,6 +84,4 @@ private: static PLHashTable* gTagAtomTable; }; -#define eHTMLTags nsHTMLTag - #endif /* nsHTMLTags_h___ */ From dfca4325ac48720d3a087de4795aa3a43d30b452 Mon Sep 17 00:00:00 2001 From: Nicholas Nethercote Date: Tue, 19 Sep 2017 11:08:39 +1000 Subject: [PATCH 34/56] Bug 1400777 (part 2) - De-expose HTML group constants[]. r=mrbkap. The patch also removes some low-value comments. --HG-- extra : rebase_source : 7331510a00e5a1d0ca33b1be3b61e6b59b58062f --- parser/htmlparser/nsElementTable.cpp | 35 +++++++++++++++++++++--- parser/htmlparser/nsElementTable.h | 40 ---------------------------- 2 files changed, 31 insertions(+), 44 deletions(-) diff --git a/parser/htmlparser/nsElementTable.cpp b/parser/htmlparser/nsElementTable.cpp index b4d4171a0691..6aa11ced2a4f 100644 --- a/parser/htmlparser/nsElementTable.cpp +++ b/parser/htmlparser/nsElementTable.cpp @@ -8,11 +8,38 @@ #include "nsIAtom.h" #include "nsElementTable.h" -/***************************************************************************** - Now it's time to list all the html elements all with their capabilities... -******************************************************************************/ +static const int kNone= 0x0; + +static const int kHTMLContent = 0x0001; // HEAD, (FRAMESET | BODY) +static const int kHeadContent = 0x0002; // Elements that *must* be in the head. +static const int kHeadMisc = 0x0004; // Elements that *can* be in the head. + +static const int kSpecial = 0x0008; // A, IMG, APPLET, OBJECT, FONT, BASEFONT, BR, SCRIPT, + // MAP, Q, SUB, SUP, SPAN, BDO, IFRAME + +static const int kFormControl = 0x0010; // INPUT SELECT TEXTAREA LABEL BUTTON +static const int kPreformatted = 0x0020; // PRE +static const int kPreExclusion = 0x0040; // IMG, OBJECT, APPLET, BIG, SMALL, SUB, SUP, FONT, BASEFONT +static const int kFontStyle = 0x0080; // TT, I, B, U, S, STRIKE, BIG, SMALL +static const int kPhrase = 0x0100; // EM, STRONG, DFN, CODE, SAMP, KBD, VAR, CITE, ABBR, ACRONYM +static const int kHeading = 0x0200; // H1..H6 +static const int kBlockMisc = 0x0400; // OBJECT, SCRIPT +static const int kBlock = 0x0800; // ADDRESS, BLOCKQUOTE, CENTER, DIV, DL, FIELDSET, FORM, + // ISINDEX, HR, NOSCRIPT, NOFRAMES, P, TABLE +static const int kList = 0x1000; // UL, OL, DIR, MENU +static const int kPCDATA = 0x2000; // plain text and entities... +static const int kSelf = 0x4000; // whatever THIS tag is... +static const int kExtensions = 0x8000; // BGSOUND, WBR, NOBR +static const int kTable = 0x10000;// TR,TD,THEAD,TBODY,TFOOT,CAPTION,TH +static const int kDLChild = 0x20000;// DL, DT +static const int kCDATA = 0x40000;// just plain text... + +static const int kInlineEntity = (kPCDATA|kFontStyle|kPhrase|kSpecial|kFormControl|kExtensions); // #PCDATA, %fontstyle, %phrase, %special, %formctrl +static const int kBlockEntity = (kHeading|kList|kPreformatted|kBlock); // %heading, %list, %preformatted, %block +static const int kFlowEntity = (kBlockEntity|kInlineEntity); // %blockentity, %inlineentity +static const int kAllTags = 0xffffff; + -// The Element Table (sung to the tune of Modern Major General) #ifdef DEBUG #define ELEM(tag, parent, leaf) { eHTMLTag_##tag, parent, leaf }, diff --git a/parser/htmlparser/nsElementTable.h b/parser/htmlparser/nsElementTable.h index aefbee3298bb..296454d042d8 100644 --- a/parser/htmlparser/nsElementTable.h +++ b/parser/htmlparser/nsElementTable.h @@ -18,46 +18,6 @@ #include "nsHTMLTags.h" #include "nsIDTD.h" -//********************************************************************************************* -// The following ints define the standard groups of HTML elements... -//********************************************************************************************* - -static const int kNone= 0x0; - -static const int kHTMLContent = 0x0001; // HEAD, (FRAMESET | BODY) -static const int kHeadContent = 0x0002; // Elements that *must* be in the head. -static const int kHeadMisc = 0x0004; // Elements that *can* be in the head. - -static const int kSpecial = 0x0008; // A, IMG, APPLET, OBJECT, FONT, BASEFONT, BR, SCRIPT, - // MAP, Q, SUB, SUP, SPAN, BDO, IFRAME - -static const int kFormControl = 0x0010; // INPUT SELECT TEXTAREA LABEL BUTTON -static const int kPreformatted = 0x0020; // PRE -static const int kPreExclusion = 0x0040; // IMG, OBJECT, APPLET, BIG, SMALL, SUB, SUP, FONT, BASEFONT -static const int kFontStyle = 0x0080; // TT, I, B, U, S, STRIKE, BIG, SMALL -static const int kPhrase = 0x0100; // EM, STRONG, DFN, CODE, SAMP, KBD, VAR, CITE, ABBR, ACRONYM -static const int kHeading = 0x0200; // H1..H6 -static const int kBlockMisc = 0x0400; // OBJECT, SCRIPT -static const int kBlock = 0x0800; // ADDRESS, BLOCKQUOTE, CENTER, DIV, DL, FIELDSET, FORM, - // ISINDEX, HR, NOSCRIPT, NOFRAMES, P, TABLE -static const int kList = 0x1000; // UL, OL, DIR, MENU -static const int kPCDATA = 0x2000; // plain text and entities... -static const int kSelf = 0x4000; // whatever THIS tag is... -static const int kExtensions = 0x8000; // BGSOUND, WBR, NOBR -static const int kTable = 0x10000;// TR,TD,THEAD,TBODY,TFOOT,CAPTION,TH -static const int kDLChild = 0x20000;// DL, DT -static const int kCDATA = 0x40000;// just plain text... - -static const int kInlineEntity = (kPCDATA|kFontStyle|kPhrase|kSpecial|kFormControl|kExtensions); // #PCDATA, %fontstyle, %phrase, %special, %formctrl -static const int kBlockEntity = (kHeading|kList|kPreformatted|kBlock); // %heading, %list, %preformatted, %block -static const int kFlowEntity = (kBlockEntity|kInlineEntity); // %blockentity, %inlineentity -static const int kAllTags = 0xffffff; - - -//********************************************************************************************* -// The following ints define the standard groups of HTML elements... -//********************************************************************************************* - #ifdef DEBUG extern void CheckElementTable(); #endif From be426ece442cb4d223b77c0553f74c58bccb72b0 Mon Sep 17 00:00:00 2001 From: Nicholas Nethercote Date: Tue, 19 Sep 2017 11:09:30 +1000 Subject: [PATCH 35/56] Bug 1400777 (part 3) - De-expose gHTMLElements[]. r=mrbkap. --HG-- extra : rebase_source : 93925428f74e6178efb9635f256b0e28e18cb09e --- parser/htmlparser/nsElementTable.cpp | 2 +- parser/htmlparser/nsElementTable.h | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/parser/htmlparser/nsElementTable.cpp b/parser/htmlparser/nsElementTable.cpp index 6aa11ced2a4f..927599221e65 100644 --- a/parser/htmlparser/nsElementTable.cpp +++ b/parser/htmlparser/nsElementTable.cpp @@ -47,7 +47,7 @@ static const int kAllTags = 0xffffff; #define ELEM(tag, parent, leaf) { parent, leaf }, #endif -const nsHTMLElement gHTMLElements[] = { +static const nsHTMLElement gHTMLElements[] = { ELEM(unknown, kNone, true) ELEM(a, kSpecial, false) ELEM(abbr, kPhrase, false) diff --git a/parser/htmlparser/nsElementTable.h b/parser/htmlparser/nsElementTable.h index 296454d042d8..4d810f7b26c1 100644 --- a/parser/htmlparser/nsElementTable.h +++ b/parser/htmlparser/nsElementTable.h @@ -50,6 +50,4 @@ struct nsHTMLElement { static bool IsBlock(nsHTMLTag aTag); }; -extern const nsHTMLElement gHTMLElements[]; - #endif From e177354f97abb8db7b513bc3018f54744c98ee01 Mon Sep 17 00:00:00 2001 From: Nicholas Nethercote Date: Tue, 19 Sep 2017 11:11:24 +1000 Subject: [PATCH 36/56] Bug 1400777 (part 4) - Split nsHTMLElement. r=mrbkap. This patch splits out most of nsHTMLElement into a new type HTMLElement within nsElementTable.cpp. Only the static methods IsContainer() and IsBlock() need to remain exposed via nsHTMLElement. The patch moves TestBits() into nsElementTable.cpp as well. --HG-- extra : rebase_source : ca19d9e3af1f4b1f352af82f985190744c4b715b --- parser/htmlparser/nsElementTable.cpp | 30 ++++++++++++++++++++++------ parser/htmlparser/nsElementTable.h | 26 ++---------------------- 2 files changed, 26 insertions(+), 30 deletions(-) diff --git a/parser/htmlparser/nsElementTable.cpp b/parser/htmlparser/nsElementTable.cpp index 927599221e65..c94dbab927dd 100644 --- a/parser/htmlparser/nsElementTable.cpp +++ b/parser/htmlparser/nsElementTable.cpp @@ -39,7 +39,30 @@ static const int kBlockEntity = (kHeading|kList|kPreformatted|kBlock); // %he static const int kFlowEntity = (kBlockEntity|kInlineEntity); // %blockentity, %inlineentity static const int kAllTags = 0xffffff; +// Is aTest a member of aBitset? +static bool +TestBits(int32_t aBitset, int32_t aTest) +{ + if (aTest) { + int32_t result = aBitset & aTest; + return result == aTest; + } + return false; +} +struct HTMLElement +{ + bool IsMemberOf(int32_t aBitset) const + { + return TestBits(aBitset, mParentBits); + } + +#ifdef DEBUG + nsHTMLTag mTagID; +#endif + int mParentBits; // defines groups that can contain this element + bool mLeaf; +}; #ifdef DEBUG #define ELEM(tag, parent, leaf) { eHTMLTag_##tag, parent, leaf }, @@ -47,7 +70,7 @@ static const int kAllTags = 0xffffff; #define ELEM(tag, parent, leaf) { parent, leaf }, #endif -static const nsHTMLElement gHTMLElements[] = { +static const HTMLElement gHTMLElements[] = { ELEM(unknown, kNone, true) ELEM(a, kSpecial, false) ELEM(abbr, kPhrase, false) @@ -201,11 +224,6 @@ static const nsHTMLElement gHTMLElements[] = { /*********************************************************************************************/ -bool nsHTMLElement::IsMemberOf(int32_t aSet) const -{ - return TestBits(aSet, mParentBits); -} - bool nsHTMLElement::IsContainer(nsHTMLTag aId) { return !gHTMLElements[aId].mLeaf; diff --git a/parser/htmlparser/nsElementTable.h b/parser/htmlparser/nsElementTable.h index 4d810f7b26c1..3e33a3443191 100644 --- a/parser/htmlparser/nsElementTable.h +++ b/parser/htmlparser/nsElementTable.h @@ -22,30 +22,8 @@ extern void CheckElementTable(); #endif - -/** - * We're asking the question: is aTest a member of bitset. - * - * @param - * @return TRUE or FALSE - */ -inline bool TestBits(int aBitset,int aTest) { - if(aTest) { - int32_t result=(aBitset & aTest); - return bool(result==aTest); - } - return false; -} - -struct nsHTMLElement { - bool IsMemberOf(int32_t aType) const; - -#ifdef DEBUG - nsHTMLTag mTagID; -#endif - int mParentBits; //defines groups that can contain this element - bool mLeaf; - +struct nsHTMLElement +{ static bool IsContainer(nsHTMLTag aTag); static bool IsBlock(nsHTMLTag aTag); }; From b1f7b4c0f3db48c4ea1b7a72f4ab6f973c00a525 Mon Sep 17 00:00:00 2001 From: Nicholas Nethercote Date: Wed, 20 Sep 2017 08:32:51 +1000 Subject: [PATCH 37/56] Bug 1400777 (part 5) - Clean up nsElementTable.{cpp,h}. r=mrbkap. This patch makes some style fixes and other minor improvements. --HG-- extra : rebase_source : 72f7e07d8b661050cd90b4ef6758a95f7a1e60c3 --- parser/htmlparser/nsElementTable.cpp | 20 ++++++++++---------- parser/htmlparser/nsElementTable.h | 25 ++++++++----------------- 2 files changed, 18 insertions(+), 27 deletions(-) diff --git a/parser/htmlparser/nsElementTable.cpp b/parser/htmlparser/nsElementTable.cpp index c94dbab927dd..84e3af6ba72b 100644 --- a/parser/htmlparser/nsElementTable.cpp +++ b/parser/htmlparser/nsElementTable.cpp @@ -1,11 +1,9 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim: set ts=2 sw=2 et tw=78: */ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=8 sts=2 et sw=2 tw=80: */ /* 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/. */ - -#include "nsIAtom.h" #include "nsElementTable.h" static const int kNone= 0x0; @@ -222,14 +220,14 @@ static const HTMLElement gHTMLElements[] = { #undef ELEM -/*********************************************************************************************/ - -bool nsHTMLElement::IsContainer(nsHTMLTag aId) +bool +nsHTMLElement::IsContainer(nsHTMLTag aId) { return !gHTMLElements[aId].mLeaf; } -bool nsHTMLElement::IsBlock(nsHTMLTag aId) +bool +nsHTMLElement::IsBlock(nsHTMLTag aId) { return gHTMLElements[aId].IsMemberOf(kBlock) || gHTMLElements[aId].IsMemberOf(kBlockEntity) || @@ -239,12 +237,14 @@ bool nsHTMLElement::IsBlock(nsHTMLTag aId) } #ifdef DEBUG -void CheckElementTable() +void +CheckElementTable() { for (nsHTMLTag t = eHTMLTag_unknown; t <= eHTMLTag_userdefined; t = nsHTMLTag(t + 1)) { - NS_ASSERTION(gHTMLElements[t].mTagID == t, "gHTMLElements entries does match tag list."); + MOZ_ASSERT(gHTMLElements[t].mTagID == t, + "gHTMLElements entries does match tag list."); } } #endif diff --git a/parser/htmlparser/nsElementTable.h b/parser/htmlparser/nsElementTable.h index 3e33a3443191..f9f63e3db46d 100644 --- a/parser/htmlparser/nsElementTable.h +++ b/parser/htmlparser/nsElementTable.h @@ -1,31 +1,22 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=8 sts=2 et sw=2 tw=80: */ /* 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/. */ - -/** - * MODULE NOTES: - * @update gess 4/1/98 - * - */ - - - -#ifndef _NSELEMENTABLE -#define _NSELEMENTABLE +#ifndef nsElementTable_h +#define nsElementTable_h #include "nsHTMLTags.h" -#include "nsIDTD.h" #ifdef DEBUG -extern void CheckElementTable(); +void CheckElementTable(); #endif struct nsHTMLElement { - static bool IsContainer(nsHTMLTag aTag); - static bool IsBlock(nsHTMLTag aTag); + static bool IsContainer(nsHTMLTag aTag); + static bool IsBlock(nsHTMLTag aTag); }; -#endif +#endif // nsElementTable_h From 6061f358d7f1dbdc5b196aeaa93456a6f2f08518 Mon Sep 17 00:00:00 2001 From: Nicholas Nethercote Date: Fri, 15 Sep 2017 20:02:33 +1000 Subject: [PATCH 38/56] Bug 1400193 (part 1) - Fix subtle bug in PLDHashTable's move constructor. r=froydnj. The current code replaces one PLDHashTable's mGeneration with another. If the two generation values happen to be equal, it will look as though the storage hasn't changed when really it has. The fix is to use EntryStore::Set() to update mEntryStore, which increments mGeneration appropriately. --HG-- extra : rebase_source : d1779a143746c8d1a3e67bc3685e703496206b0f --- xpcom/ds/PLDHashTable.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xpcom/ds/PLDHashTable.cpp b/xpcom/ds/PLDHashTable.cpp index ee8f65ba5641..460923aae467 100644 --- a/xpcom/ds/PLDHashTable.cpp +++ b/xpcom/ds/PLDHashTable.cpp @@ -232,7 +232,7 @@ PLDHashTable::operator=(PLDHashTable&& aOther) mHashShift = Move(aOther.mHashShift); mEntryCount = Move(aOther.mEntryCount); mRemovedCount = Move(aOther.mRemovedCount); - mEntryStore = Move(aOther.mEntryStore); + mEntryStore.Set(aOther.mEntryStore); #ifdef DEBUG mChecker = Move(aOther.mChecker); #endif From 225f3a87e401ee98bb0edbf16981f7e0d0189f90 Mon Sep 17 00:00:00 2001 From: Nicholas Nethercote Date: Fri, 15 Sep 2017 20:04:29 +1000 Subject: [PATCH 39/56] Bug 1400193 (part 2) - Shrink PLDHashTable. r=froydnj. This patch reduces sizeof(PLDHashTable) as follows. - 64-bit: from 40 bytes to 32 - 32-bit: from 28 bytes to 20 It does this by doing the following. - It moves mGeneration from EntryStore to PLDHashTable, to avoid unnecessary padding on 64-bit. This requires tweaking EntryStore::Set() as explained in a comment. - It also shrinks mGeneration from uint32_t to uint16_t, saving 2 bytes of data. - It shrinks mEntrySize from uint32_t to uint8_t, to cut 3 bytes of data. - It shrinks mHashShift from int16_t to uint8_t, trimming another byte of data, and moves it, saving another 2 bytes of padding. And it reorders the fields so the word-sized ones are at the start, which makes it easier to imagine the memory layout. The patch also adds a test, and fixes some misordered function arguments in existing tests. --HG-- extra : rebase_source : 6ed6f7be68477fd4a82f07dd2f51c1f1d9b92dcc --- xpcom/ds/PLDHashTable.cpp | 17 +++++++++---- xpcom/ds/PLDHashTable.h | 40 ++++++++++++++++++------------- xpcom/tests/gtest/TestPLDHash.cpp | 17 +++++++++++-- 3 files changed, 51 insertions(+), 23 deletions(-) diff --git a/xpcom/ds/PLDHashTable.cpp b/xpcom/ds/PLDHashTable.cpp index 460923aae467..9f4954c158f7 100644 --- a/xpcom/ds/PLDHashTable.cpp +++ b/xpcom/ds/PLDHashTable.cpp @@ -199,15 +199,22 @@ PLDHashTable::HashShift(uint32_t aEntrySize, uint32_t aLength) PLDHashTable::PLDHashTable(const PLDHashTableOps* aOps, uint32_t aEntrySize, uint32_t aLength) : mOps(aOps) + , mEntryStore() + , mGeneration(0) , mHashShift(HashShift(aEntrySize, aLength)) , mEntrySize(aEntrySize) , mEntryCount(0) , mRemovedCount(0) - , mEntryStore() #ifdef DEBUG , mChecker() #endif { + // An entry size greater than 0xff is unlikely, but let's check anyway. If + // you hit this, your hashtable would waste lots of space for unused entries + // and you should change your hash table's entries to pointers. + if (aEntrySize != uint32_t(mEntrySize)) { + MOZ_CRASH("Entry size is too large"); + } } PLDHashTable& @@ -232,7 +239,7 @@ PLDHashTable::operator=(PLDHashTable&& aOther) mHashShift = Move(aOther.mHashShift); mEntryCount = Move(aOther.mEntryCount); mRemovedCount = Move(aOther.mRemovedCount); - mEntryStore.Set(aOther.mEntryStore); + mEntryStore.Set(aOther.mEntryStore.Get(), &mGeneration); #ifdef DEBUG mChecker = Move(aOther.mChecker); #endif @@ -242,7 +249,7 @@ PLDHashTable::operator=(PLDHashTable&& aOther) #ifdef DEBUG AutoDestructorOp op(mChecker); #endif - aOther.mEntryStore.Set(nullptr); + aOther.mEntryStore.Set(nullptr, &aOther.mGeneration); } return *this; @@ -483,7 +490,7 @@ PLDHashTable::ChangeTable(int32_t aDeltaLog2) char* oldEntryStore; char* oldEntryAddr; oldEntryAddr = oldEntryStore = mEntryStore.Get(); - mEntryStore.Set(newEntryStore); + mEntryStore.Set(newEntryStore, &mGeneration); PLDHashMoveEntry moveEntry = mOps->moveEntry; // Copy only live entries, leaving removed ones behind. @@ -548,7 +555,7 @@ PLDHashTable::Add(const void* aKey, const mozilla::fallible_t&) // We already checked this in the constructor, so it must still be true. MOZ_RELEASE_ASSERT(SizeOfEntryStore(CapacityFromHashShift(), mEntrySize, &nbytes)); - mEntryStore.Set((char*)malloc(nbytes)); + mEntryStore.Set((char*)malloc(nbytes), &mGeneration); if (!mEntryStore.Get()) { return nullptr; } diff --git a/xpcom/ds/PLDHashTable.h b/xpcom/ds/PLDHashTable.h index cd1323dbe7b5..6f533a2fba02 100644 --- a/xpcom/ds/PLDHashTable.h +++ b/xpcom/ds/PLDHashTable.h @@ -209,40 +209,45 @@ class PLDHashTable private: // This class maintains the invariant that every time the entry store is // changed, the generation is updated. + // + // Note: It would be natural to store the generation within this class, but + // we can't do that without bloating sizeof(PLDHashTable) on 64-bit machines. + // So instead we store it outside this class, and Set() takes a pointer to it + // and ensures it is updated as necessary. class EntryStore { private: char* mEntryStore; - uint32_t mGeneration; public: - EntryStore() : mEntryStore(nullptr), mGeneration(0) {} + EntryStore() : mEntryStore(nullptr) {} ~EntryStore() { free(mEntryStore); mEntryStore = nullptr; - mGeneration++; // a little paranoid, but why not be extra safe? } char* Get() { return mEntryStore; } const char* Get() const { return mEntryStore; } - void Set(char* aEntryStore) + void Set(char* aEntryStore, uint16_t* aGeneration) { mEntryStore = aEntryStore; - mGeneration++; + *aGeneration += 1; } - - uint32_t Generation() const { return mGeneration; } }; + // These fields are packed carefully. On 32-bit platforms, + // sizeof(PLDHashTable) is 20. On 64-bit platforms, sizeof(PLDHashTable) is + // 32; 28 bytes of data followed by 4 bytes of padding for alignment. const PLDHashTableOps* const mOps; // Virtual operations; see below. - int16_t mHashShift; // Multiplicative hash shift. - const uint32_t mEntrySize; // Number of bytes in an entry. + EntryStore mEntryStore; // (Lazy) entry storage and generation. + uint16_t mGeneration; // The storage generation. + uint8_t mHashShift; // Multiplicative hash shift. + const uint8_t mEntrySize; // Number of bytes in an entry. uint32_t mEntryCount; // Number of entries in table. uint32_t mRemovedCount; // Removed entry sentinels in table. - EntryStore mEntryStore; // (Lazy) entry storage and generation. #ifdef DEBUG mutable Checker mChecker; @@ -278,13 +283,16 @@ public: uint32_t aLength = kDefaultInitialLength); PLDHashTable(PLDHashTable&& aOther) - // These two fields are |const|. Initialize them here because the - // move assignment operator cannot modify them. + // We initialize mOps and mEntrySize here because they are |const|, and + // the move assignment operator cannot modify them. + // We initialize mEntryStore because it is required for a safe call to + // the destructor, which the move assignment operator does. + // We initialize mGeneration because it is modified by the move + // assignment operator. : mOps(aOther.mOps) - , mEntrySize(aOther.mEntrySize) - // Initialize this field because it is required for a safe call to the - // destructor, which the move assignment operator does. , mEntryStore() + , mGeneration(0) + , mEntrySize(aOther.mEntrySize) #ifdef DEBUG , mChecker() #endif @@ -309,7 +317,7 @@ public: uint32_t EntrySize() const { return mEntrySize; } uint32_t EntryCount() const { return mEntryCount; } - uint32_t Generation() const { return mEntryStore.Generation(); } + uint32_t Generation() const { return mGeneration; } // To search for a |key| in |table|, call: // diff --git a/xpcom/tests/gtest/TestPLDHash.cpp b/xpcom/tests/gtest/TestPLDHash.cpp index e7a73ae1bb97..7291732faa5d 100644 --- a/xpcom/tests/gtest/TestPLDHash.cpp +++ b/xpcom/tests/gtest/TestPLDHash.cpp @@ -105,7 +105,14 @@ InitCapacityOk_InitialEntryStoreTooBig() // Try the smallest disallowed power-of-two entry store size, which is 2^32 // bytes (which overflows to 0). (Note that the 2^23 *length* gets converted // to a 2^24 *capacity*.) - PLDHashTable t(PLDHashTable::StubOps(), (uint32_t)1 << 23, (uint32_t)1 << 8); + PLDHashTable t(PLDHashTable::StubOps(), (uint32_t)1 << 8, (uint32_t)1 << 23); +} + +void +InitCapacityOk_EntrySizeTooBig() +{ + // Try the smallest disallowed entry size, which is 256 bytes. + PLDHashTable t(PLDHashTable::StubOps(), 256); } TEST(PLDHashTableTest, InitCapacityOk) @@ -118,7 +125,7 @@ TEST(PLDHashTableTest, InitCapacityOk) // Try the largest allowed power-of-two entry store size, which is 2^31 bytes // (Note that the 2^23 *length* gets converted to a 2^24 *capacity*.) - PLDHashTable t2(PLDHashTable::StubOps(), (uint32_t)1 << 23, (uint32_t)1 << 7); + PLDHashTable t2(PLDHashTable::StubOps(), (uint32_t)1 << 7, (uint32_t)1 << 23); // Try a too-large capacity (which aborts). TestCrashyOperation(InitCapacityOk_InitialLengthTooBig); @@ -127,6 +134,12 @@ TEST(PLDHashTableTest, InitCapacityOk) // overflow (causing abort). TestCrashyOperation(InitCapacityOk_InitialEntryStoreTooBig); + // Try the largest allowed entry size. + PLDHashTable t3(PLDHashTable::StubOps(), 255); + + // Try an overly large entry size. + TestCrashyOperation(InitCapacityOk_EntrySizeTooBig); + // Ideally we'd also try a large-but-ok capacity that almost but doesn't // quite overflow, but that would result in allocating slightly less than 4 // GiB of entry storage. That would be very likely to fail on 32-bit From 7c72086a7bdfd4ddc8e641de5dce6111f15de7ba Mon Sep 17 00:00:00 2001 From: Stone Shih Date: Wed, 20 Sep 2017 12:59:08 +0800 Subject: [PATCH 40/56] Bug 1401450 - Fix incorrect guid and input block id when sending coalesced mouse move event. r=smaug. --- dom/ipc/TabChild.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dom/ipc/TabChild.cpp b/dom/ipc/TabChild.cpp index be387905ef8c..e14e646f0519 100644 --- a/dom/ipc/TabChild.cpp +++ b/dom/ipc/TabChild.cpp @@ -1599,8 +1599,8 @@ TabChild::MaybeDispatchCoalescedMouseMoveEvents() // Dispatch the coalesced mousemove event. Using RecvRealMouseButtonEvent to // bypass the coalesce handling in RecvRealMouseMoveEvent. RecvRealMouseButtonEvent(*event, - mCoalescedWheelData.GetScrollableLayerGuid(), - mCoalescedWheelData.GetInputBlockId()); + mCoalescedMouseData.GetScrollableLayerGuid(), + mCoalescedMouseData.GetInputBlockId()); if (mCoalescedMouseEventFlusher) { mCoalescedMouseData.Reset(); mCoalescedMouseEventFlusher->RemoveObserver(); From e12cd767a3fefff88a6fe8c71d8f40ba132be45a Mon Sep 17 00:00:00 2001 From: Sean Stangl Date: Thu, 21 Sep 2017 15:37:00 -0400 Subject: [PATCH 41/56] Bug 1394146 - Avoid overflow on backwards iteration of IC entries. r=jandem --- js/src/jit/BaselineJIT.cpp | 11 +++++++++-- js/src/jit/IonControlFlow.cpp | 16 ++++++++++++---- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/js/src/jit/BaselineJIT.cpp b/js/src/jit/BaselineJIT.cpp index 3e25fd7b7120..baec7b63b8f0 100644 --- a/js/src/jit/BaselineJIT.cpp +++ b/js/src/jit/BaselineJIT.cpp @@ -669,12 +669,16 @@ BaselineScript::maybeICEntryFromPCOffset(uint32_t pcOffset) if (!ComputeBinarySearchMid(this, pcOffset, &mid)) return nullptr; + MOZ_ASSERT(mid < numICEntries()); + // Found an IC entry with a matching PC offset. Search backward, and then // forward from this IC entry, looking for one with the same PC offset which // has isForOp() set. - for (size_t i = mid; i < numICEntries() && icEntry(i).pcOffset() == pcOffset; i--) { + for (size_t i = mid; icEntry(i).pcOffset() == pcOffset; i--) { if (icEntry(i).isForOp()) return &icEntry(i); + if (i == 0) + break; } for (size_t i = mid+1; i < numICEntries() && icEntry(i).pcOffset() == pcOffset; i++) { if (icEntry(i).isForOp()) @@ -728,10 +732,13 @@ BaselineScript::callVMEntryFromPCOffset(uint32_t pcOffset) // inserted by VM calls. size_t mid; MOZ_ALWAYS_TRUE(ComputeBinarySearchMid(this, pcOffset, &mid)); + MOZ_ASSERT(mid < numICEntries()); - for (size_t i = mid; i < numICEntries() && icEntry(i).pcOffset() == pcOffset; i--) { + for (size_t i = mid; icEntry(i).pcOffset() == pcOffset; i--) { if (icEntry(i).kind() == ICEntry::Kind_CallVM) return icEntry(i); + if (i == 0) + break; } for (size_t i = mid+1; i < numICEntries() && icEntry(i).pcOffset() == pcOffset; i++) { if (icEntry(i).kind() == ICEntry::Kind_CallVM) diff --git a/js/src/jit/IonControlFlow.cpp b/js/src/jit/IonControlFlow.cpp index 4f27cd53dcaa..8d8a796d3f3b 100644 --- a/js/src/jit/IonControlFlow.cpp +++ b/js/src/jit/IonControlFlow.cpp @@ -1619,7 +1619,7 @@ ControlFlowGenerator::processBreak(JSOp op, jssrcnote* sn) DebugOnly found = false; if (SN_TYPE(sn) == SRC_BREAK2LABEL) { - for (size_t i = labels_.length() - 1; i < labels_.length(); i--) { + for (size_t i = labels_.length() - 1; ; i--) { CFGState& cfg = cfgStack_[labels_[i].cfgEntry]; MOZ_ASSERT(cfg.state == CFGState::LABEL); if (cfg.stopAt == target) { @@ -1627,9 +1627,11 @@ ControlFlowGenerator::processBreak(JSOp op, jssrcnote* sn) found = true; break; } + if (i == 0) + break; } } else { - for (size_t i = loops_.length() - 1; i < loops_.length(); i--) { + for (size_t i = loops_.length() - 1; ; i--) { CFGState& cfg = cfgStack_[loops_[i].cfgEntry]; MOZ_ASSERT(cfg.isLoop()); if (cfg.loop.exitpc == target) { @@ -1637,6 +1639,8 @@ ControlFlowGenerator::processBreak(JSOp op, jssrcnote* sn) found = true; break; } + if (i == 0) + break; } } @@ -1665,7 +1669,7 @@ ControlFlowGenerator::processContinue(JSOp op) // Find the target loop. CFGState* found = nullptr; jsbytecode* target = pc + GetJumpOffset(pc); - for (size_t i = loops_.length() - 1; i < loops_.length(); i--) { + for (size_t i = loops_.length() - 1; ; i--) { // +1 to skip JSOP_JUMPTARGET. if (loops_[i].continuepc == target + 1 || EffectiveContinue(loops_[i].continuepc) == target) @@ -1673,6 +1677,8 @@ ControlFlowGenerator::processContinue(JSOp op) found = &cfgStack_[loops_[i].cfgEntry]; break; } + if (i == 0) + break; } // There must always be a valid target loop structure. If not, there's @@ -1698,11 +1704,13 @@ ControlFlowGenerator::processSwitchBreak(JSOp op) // Find the target switch. CFGState* found = nullptr; jsbytecode* target = pc + GetJumpOffset(pc); - for (size_t i = switches_.length() - 1; i < switches_.length(); i--) { + for (size_t i = switches_.length() - 1; ; i--) { if (switches_[i].continuepc == target) { found = &cfgStack_[switches_[i].cfgEntry]; break; } + if (i == 0) + break; } // There must always be a valid target loop structure. If not, there's From b7cd7c515dc2933decc98a18e2a85ecdbb21d28c Mon Sep 17 00:00:00 2001 From: Andrea Marchesini Date: Thu, 21 Sep 2017 21:32:00 +0200 Subject: [PATCH 42/56] Bug 1047098 - "Clear Recent History" must clean up all the ServiceWorkers, r=bkelly This includes minor shutdown fixes by :asuth as discussed on https://bugzilla.mozilla.org/show_bug.cgi?id=1047098#c56 and c57. --HG-- extra : rebase_source : d1a230cc005b2a6a71f16ef84a55851ee2f4f66e extra : source : e89d2565799b4b02d5ee2c56da8d44dc0067f26a --- browser/base/content/sanitize.js | 11 ++++++++ dom/workers/ServiceWorkerRegistrar.cpp | 28 +++++++++++++++++++ .../components/places/tests/head_common.js | 2 +- 3 files changed, 40 insertions(+), 1 deletion(-) diff --git a/browser/base/content/sanitize.js b/browser/base/content/sanitize.js index 56779e3429e2..faafaa686299 100644 --- a/browser/base/content/sanitize.js +++ b/browser/base/content/sanitize.js @@ -20,6 +20,9 @@ XPCOMUtils.defineLazyModuleGetters(this, { }); +XPCOMUtils.defineLazyServiceGetter(this, "serviceWorkerManager", + "@mozilla.org/serviceworkers/manager;1", + "nsIServiceWorkerManager"); XPCOMUtils.defineLazyServiceGetter(this, "quotaManagerService", "@mozilla.org/dom/quota-manager-service;1", "nsIQuotaManagerService"); @@ -293,6 +296,14 @@ Sanitizer.prototype = { // LocalStorage Services.obs.notifyObservers(null, "extension:purge-localStorage"); + // ServiceWorkers + let serviceWorkers = serviceWorkerManager.getAllRegistrations(); + for (let i = 0; i < serviceWorkers.length; i++) { + let sw = serviceWorkers.queryElementAt(i, Ci.nsIServiceWorkerRegistrationInfo); + let host = sw.principal.URI.host; + serviceWorkerManager.removeAndPropagate(host); + } + // QuotaManager let promises = []; await new Promise(resolve => { diff --git a/dom/workers/ServiceWorkerRegistrar.cpp b/dom/workers/ServiceWorkerRegistrar.cpp index f90bb735e064..0e3a570ef6c6 100644 --- a/dom/workers/ServiceWorkerRegistrar.cpp +++ b/dom/workers/ServiceWorkerRegistrar.cpp @@ -1061,6 +1061,34 @@ ServiceWorkerRegistrar::ProfileStopped() PBackgroundChild* child = BackgroundChild::GetForCurrentThread(); if (!child) { + // Mutations to the ServiceWorkerRegistrar happen on the PBackground thread, + // issued by the ServiceWorkerManagerService, so the appropriate place to + // trigger shutdown is on that thread. + // + // However, it's quite possible that the PBackground thread was not brought + // into existence for xpcshell tests. We don't cause it to be created + // ourselves for any reason, for example. + // + // In this scenario, we know that: + // - We will receive exactly one call to ourself from BlockShutdown() and + // BlockShutdown() will be called (at most) once. + // - The only way our Shutdown() method gets called is via + // BackgroundParentImpl::RecvShutdownServiceWorkerRegistrar() being + // invoked, which only happens if we get to that send below here that we + // can't get to. + // - All Shutdown() does is set mShuttingDown=true (essential for + // invariants) and invoke MaybeScheduleShutdownCompleted(). + // - Since there is no PBackground thread, mRunnableCounter must be 0 + // because only ScheduleSaveData() increments it and it only runs on the + // background thread, so it cannot have run. And so we would expect + // MaybeScheduleShutdownCompleted() to schedule an invocation of + // ShutdownCompleted on the main thread. + // + // So it's appropriate for us to set mShuttingDown=true (as Shutdown would + // do) and directly invoke ShutdownCompleted() (as Shutdown would indirectly + // do via MaybeScheduleShutdownCompleted). + mShuttingDown = true; + ShutdownCompleted(); return; } diff --git a/toolkit/components/places/tests/head_common.js b/toolkit/components/places/tests/head_common.js index 70288c6514be..610cb597ce52 100644 --- a/toolkit/components/places/tests/head_common.js +++ b/toolkit/components/places/tests/head_common.js @@ -75,7 +75,7 @@ XPCOMUtils.defineLazyGetter(this, "SMALLSVG_DATA_URI", function() { var gTestDir = do_get_cwd(); // Initialize profile. -var gProfD = do_get_profile(); +var gProfD = do_get_profile(true); Services.prefs.setBoolPref("browser.urlbar.usepreloadedtopurls.enabled", false); do_register_cleanup(() => From fc16f11c89669c5b140a7e4200f66cb344073a12 Mon Sep 17 00:00:00 2001 From: Jim Chen Date: Thu, 21 Sep 2017 23:41:22 -0400 Subject: [PATCH 43/56] Bug 1401737 - 1. Add a diagnostic crash; r=me Add a diagnostic crash for the unexpected case where GeckoService.register() is called a second time. We know the stack for the second call, but we want to know the stack for the first call, so we introduce this intentional crash. r=me for trivial diagnostic patch which will be backed out ASAP. MozReview-Commit-ID: HobtPiVSSTR --- .../base/java/org/mozilla/gecko/GeckoService.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/mobile/android/base/java/org/mozilla/gecko/GeckoService.java b/mobile/android/base/java/org/mozilla/gecko/GeckoService.java index 27084dc2f343..b467d240748d 100644 --- a/mobile/android/base/java/org/mozilla/gecko/GeckoService.java +++ b/mobile/android/base/java/org/mozilla/gecko/GeckoService.java @@ -71,10 +71,22 @@ public class GeckoService extends Service { private static final EventListener EVENT_LISTENER = new EventListener(); + private static RuntimeException bug1401737Diag; + public static void register() { if (DEBUG) { Log.d(LOGTAG, "Registered listener"); } + + // Diagnose bug 1401737. register() is unexpectedly getting called a second time. + // We know the stack for the second call, but we want to collect stack for the first call. + if (bug1401737Diag == null) { + bug1401737Diag = new IllegalStateException("Bug 1401737 diagnostic crash"); + } else { + Log.e(LOGTAG, "register() is called a second time", new Exception()); + throw bug1401737Diag; + } + EventDispatcher.getInstance().registerGeckoThreadListener(EVENT_LISTENER, "Gecko:ScheduleRun"); } From bff46d728bc77b7e46bb5c033242bc09f7f48335 Mon Sep 17 00:00:00 2001 From: Lee Salzman Date: Fri, 22 Sep 2017 00:10:35 -0400 Subject: [PATCH 44/56] Bug 1397918 - don't use versions of libxcb before 1.11.1. r=karlt MozReview-Commit-ID: Ec8ZhCBlPj2 --- widget/nsShmImage.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/widget/nsShmImage.cpp b/widget/nsShmImage.cpp index 25d0a8c4b5eb..906409f1b387 100644 --- a/widget/nsShmImage.cpp +++ b/widget/nsShmImage.cpp @@ -14,6 +14,7 @@ #include "nsPrintfCString.h" #include "nsTArray.h" +#include #include #include #include @@ -119,6 +120,17 @@ nsShmImage::InitExtension() gShmInitialized = true; + // Bugs 1397918, 1293474 - race condition in libxcb fixed upstream as of + // version 1.11. Since we can't query libxcb's version directly, the only + // other option is to check for symbols that were added after 1.11. + // xcb_discard_reply64 was added in 1.11.1, so check for existence of + // that to verify we are using a version of libxcb with the bug fixed. + // Otherwise, we can't risk using libxcb due to aforementioned crashes. + if (!dlsym(RTLD_DEFAULT, "xcb_discard_reply64")) { + gShmAvailable = false; + return false; + } + const xcb_query_extension_reply_t* extReply; extReply = xcb_get_extension_data(mConnection, &xcb_shm_id); if (!extReply || !extReply->present) { From be6c7b50a7b5a0d275526fa7834e87e44f0a15d7 Mon Sep 17 00:00:00 2001 From: Andrea Marchesini Date: Thu, 21 Sep 2017 21:32:00 +0200 Subject: [PATCH 45/56] Bug 1401878 - Remove ServiceWorkers in SiteDataManager.jsm, r=bkelly --HG-- extra : rebase_source : 4989e5f5da242fd0c732d519a911339d8f61c307 extra : source : 04888373f12bd5d86ec3f4057c3a2f0b2240c963 --- .../preferences/SiteDataManager.jsm | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/browser/components/preferences/SiteDataManager.jsm b/browser/components/preferences/SiteDataManager.jsm index d6dd5c78656a..8f2ac2a34188 100644 --- a/browser/components/preferences/SiteDataManager.jsm +++ b/browser/components/preferences/SiteDataManager.jsm @@ -9,6 +9,9 @@ XPCOMUtils.defineLazyModuleGetter(this, "OfflineAppCacheHelper", "resource:///modules/offlineAppCache.jsm"); XPCOMUtils.defineLazyModuleGetter(this, "ContextualIdentityService", "resource://gre/modules/ContextualIdentityService.jsm"); +XPCOMUtils.defineLazyServiceGetter(this, "serviceWorkerManager", + "@mozilla.org/serviceworkers/manager;1", + "nsIServiceWorkerManager"); this.EXPORTED_SYMBOLS = [ "SiteDataManager" @@ -217,6 +220,19 @@ this.SiteDataManager = { } }, + _removeServiceWorkers(site) { + let serviceWorkers = serviceWorkerManager.getAllRegistrations(); + for (let i = 0; i < serviceWorkers.length; i++) { + let sw = serviceWorkers.queryElementAt(i, Ci.nsIServiceWorkerRegistrationInfo); + for (let principal of site.principals) { + if (sw.principal.equals(principal)) { + serviceWorkerManager.removeAndPropagate(sw.principal.URI.host); + break; + } + } + } + }, + remove(hosts) { let promises = []; let unknownHost = ""; @@ -226,6 +242,7 @@ this.SiteDataManager = { this._removePermission(site); this._removeAppCache(site); this._removeCookie(site); + this._removeServiceWorkers(site); promises.push(this._removeQuotaUsage(site)); } else { unknownHost = host; @@ -244,6 +261,15 @@ this.SiteDataManager = { Services.cache2.clear(); Services.cookies.removeAll(); OfflineAppCacheHelper.clear(); + + // Iterate through the service workers and remove them. + let serviceWorkers = serviceWorkerManager.getAllRegistrations(); + for (let i = 0; i < serviceWorkers.length; i++) { + let sw = serviceWorkers.queryElementAt(i, Ci.nsIServiceWorkerRegistrationInfo); + let host = sw.principal.URI.host; + serviceWorkerManager.removeAndPropagate(host); + } + // Refresh sites using quota usage again. // This is for the case: // 1. User goes to the about:preferences Site Data section. From e3c9cbb969ab6071b414aa18e683ddd65973bf0a Mon Sep 17 00:00:00 2001 From: Nicholas Nethercote Date: Fri, 22 Sep 2017 14:35:46 +1000 Subject: [PATCH 46/56] Bug 1401813 - Rename Null[C]String() as Void[C]String(). r=erahm. XPCOM's string API doesn't have the notion of a "null string". But it does have the notion of a "void string" (or "voided string"), and that's what these functions are returning. So the names should reflect that. --HG-- extra : rebase_source : 4e3f982e0873877174a08a25413595ff66f7d20e --- docshell/base/nsDocShell.cpp | 20 +++++++++---------- docshell/shistory/nsSHEntry.cpp | 2 +- dom/base/CustomElementRegistry.cpp | 6 +++--- dom/base/DOMImplementation.cpp | 7 +++---- dom/base/Element.cpp | 8 ++++---- dom/base/nsDOMMutationObserver.h | 2 +- dom/base/nsDocument.cpp | 8 ++++---- dom/console/Console.cpp | 2 +- dom/file/ipc/PendingIPCBlobChild.cpp | 2 +- dom/file/ipc/PendingIPCBlobParent.cpp | 2 +- dom/html/HTMLFormElement.cpp | 2 +- dom/html/HTMLImageElement.cpp | 2 +- dom/indexedDB/ActorsParent.cpp | 2 +- dom/indexedDB/IDBFileHandle.h | 2 +- dom/indexedDB/IDBObjectStore.cpp | 2 +- dom/ipc/ContentChild.h | 2 +- dom/ipc/ContentParent.cpp | 2 +- dom/media/MediaManager.cpp | 2 +- dom/plugins/base/nsPluginInstanceOwner.cpp | 2 +- dom/plugins/ipc/PluginMessageUtils.h | 2 +- dom/presentation/PresentationRequest.cpp | 2 +- dom/quota/ActorsParent.cpp | 2 +- dom/storage/LocalStorage.cpp | 4 ++-- dom/storage/SessionStorage.cpp | 4 ++-- dom/workers/RuntimeService.cpp | 2 +- dom/workers/ServiceWorkerPrivate.cpp | 2 +- dom/workers/WorkerPrivate.cpp | 2 +- dom/xhr/XMLHttpRequestMainThread.cpp | 2 +- dom/xhr/XMLHttpRequestWorker.cpp | 6 +++--- dom/xslt/xslt/txMozillaXMLOutput.cpp | 2 +- dom/xul/templates/nsXULTemplateBuilder.cpp | 2 +- .../tests/preprocessor_tests/input_test.cpp | 2 +- js/xpconnect/loader/URLPreloader.h | 2 +- js/xpconnect/loader/mozJSSubScriptLoader.cpp | 2 +- parser/html/nsHtml5TreeOperation.cpp | 2 +- .../backgroundhangmonitor/HangDetails.h | 4 ++-- xpcom/string/nsReadableUtils.cpp | 4 ++-- xpcom/string/nsReadableUtils.h | 4 ++-- xpcom/string/nsTString.h | 4 ++-- .../directory/nsDirectoryViewer.cpp | 2 +- 40 files changed, 67 insertions(+), 68 deletions(-) diff --git a/docshell/base/nsDocShell.cpp b/docshell/base/nsDocShell.cpp index 6748a2722e5a..d566bdde944d 100644 --- a/docshell/base/nsDocShell.cpp +++ b/docshell/base/nsDocShell.cpp @@ -1609,7 +1609,7 @@ nsDocShell::LoadURI(nsIURI* aURI, flags, target, nullptr, // No type hint - NullString(), // No forced download + VoidString(), // No forced download postStream, headersStream, loadType, @@ -5488,8 +5488,8 @@ nsDocShell::LoadErrorPage(nsIURI* aURI, const char16_t* aURL, mozilla::net::RP_Unset, nsContentUtils::GetSystemPrincipal(), nullptr, INTERNAL_LOAD_FLAGS_NONE, EmptyString(), - nullptr, NullString(), nullptr, nullptr, LOAD_ERROR_PAGE, - nullptr, true, NullString(), this, nullptr, false, + nullptr, VoidString(), nullptr, nullptr, LOAD_ERROR_PAGE, + nullptr, true, VoidString(), this, nullptr, false, nullptr, nullptr); } @@ -5589,7 +5589,7 @@ nsDocShell::Reload(uint32_t aReloadFlags) flags, EmptyString(), // No window target NS_LossyConvertUTF16toASCII(contentTypeHint).get(), - NullString(), // No forced download + VoidString(), // No forced download nullptr, // No post data nullptr, // No headers data loadType, // Load type @@ -9757,7 +9757,7 @@ public: mFlags, EmptyString(), mTypeHint.IsVoid() ? nullptr : mTypeHint.get(), - NullString(), mPostData, mHeadersData, + VoidString(), mPostData, mHeadersData, mLoadType, mSHEntry, mFirstParty, mSrcdoc, mSourceDocShell, mBaseURI, mCheckForPrerender, nullptr, nullptr); @@ -10226,7 +10226,7 @@ nsDocShell::InternalLoad(nsIURI* aURI, aFlags, EmptyString(), // No window target aTypeHint, - NullString(), // No forced download + VoidString(), // No forced download aPostData, aHeadersData, aLoadType, @@ -10837,7 +10837,7 @@ nsDocShell::InternalLoad(nsIURI* aURI, if (aFlags & INTERNAL_LOAD_FLAGS_IS_SRCDOC) { srcdoc = aSrcdoc; } else { - srcdoc = NullString(); + srcdoc = VoidString(); } bool isTopLevelDoc = mItemType == typeContent && @@ -12860,7 +12860,7 @@ nsDocShell::LoadHistoryEntry(nsISHEntry* aEntry, uint32_t aLoadType) aEntry->GetBaseURI(getter_AddRefs(baseURI)); flags |= INTERNAL_LOAD_FLAGS_IS_SRCDOC; } else { - srcdoc = NullString(); + srcdoc = VoidString(); } if (!triggeringPrincipal) { @@ -12884,7 +12884,7 @@ nsDocShell::LoadHistoryEntry(nsISHEntry* aEntry, uint32_t aLoadType) flags, EmptyString(), // No window target contentType.get(), // Type hint - NullString(), // No forced file download + VoidString(), // No forced file download postData, // Post data stream nullptr, // No headers stream aLoadType, // Load type @@ -14454,7 +14454,7 @@ nsDocShell::OnLinkClickSync(nsIContent* aContent, LOAD_LINK, // Load type nullptr, // No SHEntry true, // first party site - NullString(), // No srcdoc + VoidString(), // No srcdoc this, // We are the source nullptr, // baseURI not needed true, // Check for prerendered doc diff --git a/docshell/shistory/nsSHEntry.cpp b/docshell/shistory/nsSHEntry.cpp index 2ada9d07261a..5bae3bb3feab 100644 --- a/docshell/shistory/nsSHEntry.cpp +++ b/docshell/shistory/nsSHEntry.cpp @@ -476,7 +476,7 @@ nsSHEntry::Create(nsIURI* aURI, const nsAString& aTitle, mShared->mExpired = false; mIsSrcdocEntry = false; - mSrcdocData = NullString(); + mSrcdocData = VoidString(); mLoadedInThisProcess = true; diff --git a/dom/base/CustomElementRegistry.cpp b/dom/base/CustomElementRegistry.cpp index 1d9385988b88..5299d500cb1a 100644 --- a/dom/base/CustomElementRegistry.cpp +++ b/dom/base/CustomElementRegistry.cpp @@ -973,9 +973,9 @@ CustomElementRegistry::Upgrade(Element* aElement, LifecycleCallbackArgs args = { nsDependentAtomString(attrName), - NullString(), - (attrValue.IsEmpty() ? NullString() : attrValue), - (namespaceURI.IsEmpty() ? NullString() : namespaceURI) + VoidString(), + (attrValue.IsEmpty() ? VoidString() : attrValue), + (namespaceURI.IsEmpty() ? VoidString() : namespaceURI) }; EnqueueLifecycleCallback(nsIDocument::eAttributeChanged, aElement, &args, aDefinition); diff --git a/dom/base/DOMImplementation.cpp b/dom/base/DOMImplementation.cpp index 65fd8a5cbdda..24fe7ca3798c 100644 --- a/dom/base/DOMImplementation.cpp +++ b/dom/base/DOMImplementation.cpp @@ -70,7 +70,7 @@ DOMImplementation::CreateDocumentType(const nsAString& aQualifiedName, // Indicate that there is no internal subset (not just an empty one) RefPtr docType = NS_NewDOMDocumentType(mOwner->NodeInfoManager(), name, aPublicId, - aSystemId, NullString(), aRv); + aSystemId, VoidString(), aRv); return docType.forget(); } @@ -188,7 +188,7 @@ DOMImplementation::CreateHTMLDocument(const nsAString& aTitle, nsGkAtoms::html, // aName EmptyString(), // aPublicId EmptyString(), // aSystemId - NullString()); // aInternalSubset + VoidString()); // aInternalSubset NS_ENSURE_SUCCESS(rv, rv); @@ -249,8 +249,7 @@ DOMImplementation::CreateHTMLDocument(const Optional& aTitle, { nsCOMPtr document; nsCOMPtr domDocument; - aRv = CreateHTMLDocument(aTitle.WasPassed() ? aTitle.Value() - : NullString(), + aRv = CreateHTMLDocument(aTitle.WasPassed() ? aTitle.Value() : VoidString(), getter_AddRefs(document), getter_AddRefs(domDocument)); return document.forget(); diff --git a/dom/base/Element.cpp b/dom/base/Element.cpp index fe666c633009..fa2221077767 100644 --- a/dom/base/Element.cpp +++ b/dom/base/Element.cpp @@ -2642,9 +2642,9 @@ Element::SetAttrAndNotify(int32_t aNamespaceID, LifecycleCallbackArgs args = { nsDependentAtomString(aName), aModType == nsIDOMMutationEvent::ADDITION ? - NullString() : nsDependentAtomString(oldValueAtom), + VoidString() : nsDependentAtomString(oldValueAtom), nsDependentAtomString(newValueAtom), - (ns.IsEmpty() ? NullString() : ns) + (ns.IsEmpty() ? VoidString() : ns) }; nsContentUtils::EnqueueLifecycleCallback( @@ -2938,8 +2938,8 @@ Element::UnsetAttr(int32_t aNameSpaceID, nsIAtom* aName, LifecycleCallbackArgs args = { nsDependentAtomString(aName), nsDependentAtomString(oldValueAtom), - NullString(), - (ns.IsEmpty() ? NullString() : ns) + VoidString(), + (ns.IsEmpty() ? VoidString() : ns) }; nsContentUtils::EnqueueLifecycleCallback( diff --git a/dom/base/nsDOMMutationObserver.h b/dom/base/nsDOMMutationObserver.h index 98fdffc2ba9b..d386b6466e34 100644 --- a/dom/base/nsDOMMutationObserver.h +++ b/dom/base/nsDOMMutationObserver.h @@ -39,7 +39,7 @@ public: typedef nsTArray> AnimationArray; nsDOMMutationRecord(nsIAtom* aType, nsISupports* aOwner) - : mType(aType), mAttrNamespace(NullString()), mPrevValue(NullString()), mOwner(aOwner) + : mType(aType), mAttrNamespace(VoidString()), mPrevValue(VoidString()), mOwner(aOwner) { } diff --git a/dom/base/nsDocument.cpp b/dom/base/nsDocument.cpp index 06ba095ad11a..335f0b305dc6 100644 --- a/dom/base/nsDocument.cpp +++ b/dom/base/nsDocument.cpp @@ -3584,7 +3584,7 @@ nsIDocument::GetSrcdocData(nsAString &aSrcdocData) return inStrmChan->GetSrcdocData(aSrcdocData); } } - aSrcdocData = NullString(); + aSrcdocData = VoidString(); return NS_OK; } @@ -9796,7 +9796,7 @@ nsDocument::PreloadPictureImageSource(const nsAString& aSrcsetAttr, // selects the first matching source, so if this returns a URI we // needn't consider new sources until a new is encountered. bool found = - HTMLImageElement::SelectSourceForTagWithAttrs(this, true, NullString(), + HTMLImageElement::SelectSourceForTagWithAttrs(this, true, VoidString(), aSrcsetAttr, aSizesAttr, aTypeAttr, aMediaAttr, mPreloadPictureFoundSource); @@ -9825,7 +9825,7 @@ nsDocument::ResolvePreloadImage(nsIURI *aBaseURI, // Otherwise try to use this as a source HTMLImageElement::SelectSourceForTagWithAttrs(this, false, aSrcAttr, aSrcsetAttr, aSizesAttr, - NullString(), NullString(), + VoidString(), VoidString(), sourceURL); isImgSet = !aSrcsetAttr.IsEmpty(); } @@ -12804,7 +12804,7 @@ nsIDocument::Constructor(const GlobalObject& aGlobal, nsCOMPtr document; nsresult res = NS_NewDOMDocument(getter_AddRefs(document), - NullString(), + VoidString(), EmptyString(), nullptr, uri, diff --git a/dom/console/Console.cpp b/dom/console/Console.cpp index 37e1acaafe7b..42e97ee52918 100644 --- a/dom/console/Console.cpp +++ b/dom/console/Console.cpp @@ -1844,7 +1844,7 @@ Console::ProcessArguments(JSContext* aCx, int32_t diff = aSequence.Length() - aStyles.Length(); if (diff > 0) { for (int32_t i = 0; i < diff; i++) { - if (NS_WARN_IF(!aStyles.AppendElement(NullString(), fallible))) { + if (NS_WARN_IF(!aStyles.AppendElement(VoidString(), fallible))) { return false; } } diff --git a/dom/file/ipc/PendingIPCBlobChild.cpp b/dom/file/ipc/PendingIPCBlobChild.cpp index d24b00bd5df3..fb7430d2333d 100644 --- a/dom/file/ipc/PendingIPCBlobChild.cpp +++ b/dom/file/ipc/PendingIPCBlobChild.cpp @@ -43,7 +43,7 @@ PendingIPCBlobChild::SetPendingInfoAndDeleteActor(const nsString& aContentType, RefPtr blobImpl; blobImpl.swap(mBlobImpl); - blobImpl->SetLazyData(NullString(), aContentType, aLength, INT64_MAX); + blobImpl->SetLazyData(VoidString(), aContentType, aLength, INT64_MAX); PendingIPCBlobData data(nsString(aContentType), aLength, void_t()); Unused << Send__delete__(this, data); diff --git a/dom/file/ipc/PendingIPCBlobParent.cpp b/dom/file/ipc/PendingIPCBlobParent.cpp index cfd542deb4f7..a2605bd7b063 100644 --- a/dom/file/ipc/PendingIPCBlobParent.cpp +++ b/dom/file/ipc/PendingIPCBlobParent.cpp @@ -44,7 +44,7 @@ IPCResult PendingIPCBlobParent::Recv__delete__(const PendingIPCBlobData& aData) { if (aData.file().type() == PendingIPCFileUnion::Tvoid_t) { - mBlobImpl->SetLazyData(NullString(), aData.type(), aData.size(), INT64_MAX); + mBlobImpl->SetLazyData(VoidString(), aData.type(), aData.size(), INT64_MAX); } else { const PendingIPCFileData& fileData = aData.file().get_PendingIPCFileData(); diff --git a/dom/html/HTMLFormElement.cpp b/dom/html/HTMLFormElement.cpp index 6b87c8b54255..2afcfeea9432 100644 --- a/dom/html/HTMLFormElement.cpp +++ b/dom/html/HTMLFormElement.cpp @@ -802,7 +802,7 @@ HTMLFormElement::SubmitSubmission(HTMLFormSubmission* aFormSubmission) rv = linkHandler->OnLinkClickSync(this, actionURI, target.get(), - NullString(), + VoidString(), postDataStream, nullptr, false, getter_AddRefs(docShell), getter_AddRefs(mSubmittingRequest)); diff --git a/dom/html/HTMLImageElement.cpp b/dom/html/HTMLImageElement.cpp index 891d8cda26a5..6aa12eb1df04 100644 --- a/dom/html/HTMLImageElement.cpp +++ b/dom/html/HTMLImageElement.cpp @@ -353,7 +353,7 @@ HTMLImageElement::AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName, if (InResponsiveMode()) { if (mResponsiveSelector && mResponsiveSelector->Content() == this) { - mResponsiveSelector->SetDefaultSource(NullString()); + mResponsiveSelector->SetDefaultSource(VoidString()); } QueueImageLoadTask(true); } else { diff --git a/dom/indexedDB/ActorsParent.cpp b/dom/indexedDB/ActorsParent.cpp index 42aa9e38d630..9a34d821ad6e 100644 --- a/dom/indexedDB/ActorsParent.cpp +++ b/dom/indexedDB/ActorsParent.cpp @@ -17378,7 +17378,7 @@ FileManager::InitDirectory(nsIFile* aDirectory, nsCOMPtr connection; rv = CreateStorageConnection(aDatabaseFile, aDirectory, - NullString(), + VoidString(), aPersistenceType, aGroup, aOrigin, diff --git a/dom/indexedDB/IDBFileHandle.h b/dom/indexedDB/IDBFileHandle.h index c35a7b3fdcd0..84c4d62f0a92 100644 --- a/dom/indexedDB/IDBFileHandle.h +++ b/dom/indexedDB/IDBFileHandle.h @@ -203,7 +203,7 @@ public: ReadAsArrayBuffer(uint64_t aSize, ErrorResult& aRv) { AssertIsOnOwningThread(); - return Read(aSize, false, NullString(), aRv); + return Read(aSize, false, VoidString(), aRv); } already_AddRefed diff --git a/dom/indexedDB/IDBObjectStore.cpp b/dom/indexedDB/IDBObjectStore.cpp index 4c395ae7e760..4567bcc12579 100644 --- a/dom/indexedDB/IDBObjectStore.cpp +++ b/dom/indexedDB/IDBObjectStore.cpp @@ -925,7 +925,7 @@ public: if (aData.tag == SCTAG_DOM_BLOB) { aFile.mBlob->Impl()->SetLazyData( - NullString(), aData.type, aData.size, INT64_MAX); + VoidString(), aData.type, aData.size, INT64_MAX); MOZ_ASSERT(!aFile.mBlob->IsFile()); // ActorsParent sends here a kind of half blob and half file wrapped into diff --git a/dom/ipc/ContentChild.h b/dom/ipc/ContentChild.h index 8d6d3cd6db07..90e748d16890 100644 --- a/dom/ipc/ContentChild.h +++ b/dom/ipc/ContentChild.h @@ -768,7 +768,7 @@ private: AppInfo mAppInfo; bool mIsForBrowser; - nsString mRemoteType = NullString(); + nsString mRemoteType = VoidString(); bool mIsAlive; nsString mProcessName; diff --git a/dom/ipc/ContentParent.cpp b/dom/ipc/ContentParent.cpp index 7e7274e503ab..55bd1fe03166 100644 --- a/dom/ipc/ContentParent.cpp +++ b/dom/ipc/ContentParent.cpp @@ -4696,7 +4696,7 @@ ContentParent::RecvCreateWindow(PBrowserParent* aThisTab, CommonCreateWindow(aThisTab, /* aSetOpener = */ true, aChromeFlags, aCalledFromJS, aPositionSpecified, aSizeSpecified, nullptr, aFeatures, aBaseURI, aFullZoom, - nextTabParentId, NullString(), rv, + nextTabParentId, VoidString(), rv, newRemoteTab, &cwi.windowOpened(), aTriggeringPrincipal); if (!ipcResult) { diff --git a/dom/media/MediaManager.cpp b/dom/media/MediaManager.cpp index a06296086a28..98572fb7fa16 100644 --- a/dom/media/MediaManager.cpp +++ b/dom/media/MediaManager.cpp @@ -426,7 +426,7 @@ public: if (globalWindow) { RefPtr req = new GetUserMediaRequest(globalWindow->AsInner(), - NullString(), NullString()); + VoidString(), VoidString()); obs->NotifyObservers(req, "recording-device-stopped", nullptr); } return; diff --git a/dom/plugins/base/nsPluginInstanceOwner.cpp b/dom/plugins/base/nsPluginInstanceOwner.cpp index 3a5d8f5216bf..733c2396340d 100644 --- a/dom/plugins/base/nsPluginInstanceOwner.cpp +++ b/dom/plugins/base/nsPluginInstanceOwner.cpp @@ -491,7 +491,7 @@ NS_IMETHODIMP nsPluginInstanceOwner::GetURL(const char *aURL, triggeringPrincipal = BasePrincipal::CreateCodebasePrincipal(uri, attrs); } - rv = lh->OnLinkClick(content, uri, unitarget.get(), NullString(), + rv = lh->OnLinkClick(content, uri, unitarget.get(), VoidString(), aPostStream, headersDataStream, true, triggeringPrincipal); return rv; diff --git a/dom/plugins/ipc/PluginMessageUtils.h b/dom/plugins/ipc/PluginMessageUtils.h index 2fa06278d77a..ee567a3bf2b1 100644 --- a/dom/plugins/ipc/PluginMessageUtils.h +++ b/dom/plugins/ipc/PluginMessageUtils.h @@ -307,7 +307,7 @@ inline nsCString NullableString(const char* aString) { if (!aString) { - return NullCString(); + return VoidCString(); } return nsCString(aString); } diff --git a/dom/presentation/PresentationRequest.cpp b/dom/presentation/PresentationRequest.cpp index 9ad0499f8453..4dccf68e0cc2 100644 --- a/dom/presentation/PresentationRequest.cpp +++ b/dom/presentation/PresentationRequest.cpp @@ -140,7 +140,7 @@ PresentationRequest::WrapObject(JSContext* aCx, already_AddRefed PresentationRequest::Start(ErrorResult& aRv) { - return StartWithDevice(NullString(), aRv); + return StartWithDevice(VoidString(), aRv); } already_AddRefed diff --git a/dom/quota/ActorsParent.cpp b/dom/quota/ActorsParent.cpp index 48881fe188f3..9db706351a61 100644 --- a/dom/quota/ActorsParent.cpp +++ b/dom/quota/ActorsParent.cpp @@ -5843,7 +5843,7 @@ QuotaManager::ShutdownTimerCallback(nsITimer* aTimer, void* aClosure) // Abort all operations. for (RefPtr& client : quotaManager->mClients) { - client->AbortOperations(NullCString()); + client->AbortOperations(VoidCString()); } } diff --git a/dom/storage/LocalStorage.cpp b/dom/storage/LocalStorage.cpp index 78c9193eaa00..7e581eeec669 100644 --- a/dom/storage/LocalStorage.cpp +++ b/dom/storage/LocalStorage.cpp @@ -154,7 +154,7 @@ LocalStorage::RemoveItem(const nsAString& aKey, nsIPrincipal& aSubjectPrincipal, } if (!aRv.ErrorCodeIs(NS_SUCCESS_DOM_NO_OPERATION)) { - BroadcastChangeNotification(aKey, old, NullString()); + BroadcastChangeNotification(aKey, old, VoidString()); } } @@ -172,7 +172,7 @@ LocalStorage::Clear(nsIPrincipal& aSubjectPrincipal, ErrorResult& aRv) } if (!aRv.ErrorCodeIs(NS_SUCCESS_DOM_NO_OPERATION)) { - BroadcastChangeNotification(NullString(), NullString(), NullString()); + BroadcastChangeNotification(VoidString(), VoidString(), VoidString()); } } diff --git a/dom/storage/SessionStorage.cpp b/dom/storage/SessionStorage.cpp index 6f6e2540301a..3c5ef855beae 100644 --- a/dom/storage/SessionStorage.cpp +++ b/dom/storage/SessionStorage.cpp @@ -155,7 +155,7 @@ SessionStorage::RemoveItem(const nsAString& aKey, return; } - BroadcastChangeNotification(aKey, oldValue, NullString()); + BroadcastChangeNotification(aKey, oldValue, VoidString()); } void @@ -168,7 +168,7 @@ SessionStorage::Clear(nsIPrincipal& aSubjectPrincipal, } mCache->Clear(DATASET); - BroadcastChangeNotification(NullString(), NullString(), NullString()); + BroadcastChangeNotification(VoidString(), VoidString(), VoidString()); } void diff --git a/dom/workers/RuntimeService.cpp b/dom/workers/RuntimeService.cpp index 518a0b32a2e1..40a951f2ba35 100644 --- a/dom/workers/RuntimeService.cpp +++ b/dom/workers/RuntimeService.cpp @@ -2421,7 +2421,7 @@ RuntimeService::CreateSharedWorkerFromLoadInfo(JSContext* aCx, if (!workerPrivate) { workerPrivate = WorkerPrivate::Constructor(aCx, aScriptURL, false, - WorkerTypeShared, aName, NullCString(), + WorkerTypeShared, aName, VoidCString(), aLoadInfo, rv); NS_ENSURE_TRUE(workerPrivate, rv.StealNSResult()); diff --git a/dom/workers/ServiceWorkerPrivate.cpp b/dom/workers/ServiceWorkerPrivate.cpp index b3099e3b15f7..f5a85f611544 100644 --- a/dom/workers/ServiceWorkerPrivate.cpp +++ b/dom/workers/ServiceWorkerPrivate.cpp @@ -1878,7 +1878,7 @@ ServiceWorkerPrivate::SpawnWorkerIfNeeded(WakeUpReason aWhy, mWorkerPrivate = WorkerPrivate::Constructor(jsapi.cx(), scriptSpec, false, WorkerTypeService, - NullString(), + VoidString(), mInfo->Scope(), &info, error); if (NS_WARN_IF(error.Failed())) { diff --git a/dom/workers/WorkerPrivate.cpp b/dom/workers/WorkerPrivate.cpp index a3cae4224eca..4b349fbfd0d7 100644 --- a/dom/workers/WorkerPrivate.cpp +++ b/dom/workers/WorkerPrivate.cpp @@ -4646,7 +4646,7 @@ WorkerPrivate::Constructor(const GlobalObject& aGlobal, { JSContext* cx = aGlobal.Context(); return Constructor(cx, aScriptURL, aIsChromeWorker, aWorkerType, - aWorkerName, NullCString(), aLoadInfo, aRv); + aWorkerName, VoidCString(), aLoadInfo, aRv); } // static diff --git a/dom/xhr/XMLHttpRequestMainThread.cpp b/dom/xhr/XMLHttpRequestMainThread.cpp index 8175df40db8c..9a54e6e0987e 100644 --- a/dom/xhr/XMLHttpRequestMainThread.cpp +++ b/dom/xhr/XMLHttpRequestMainThread.cpp @@ -1530,7 +1530,7 @@ void XMLHttpRequestMainThread::Open(const nsACString& aMethod, const nsAString& aUrl, ErrorResult& aRv) { - Open(aMethod, aUrl, true, NullString(), NullString(), aRv); + Open(aMethod, aUrl, true, VoidString(), VoidString(), aRv); } // This case is hit when the async parameter is specified, even if the diff --git a/dom/xhr/XMLHttpRequestWorker.cpp b/dom/xhr/XMLHttpRequestWorker.cpp index 057503917bd4..963335dd19ab 100644 --- a/dom/xhr/XMLHttpRequestWorker.cpp +++ b/dom/xhr/XMLHttpRequestWorker.cpp @@ -1429,8 +1429,8 @@ OpenRunnable::MainThreadRunInternal() ErrorResult rv2; mProxy->mXHR->Open(mMethod, mURL, true, - mUser.WasPassed() ? mUser.Value() : NullString(), - mPassword.WasPassed() ? mPassword.Value() : NullString(), + mUser.WasPassed() ? mUser.Value() : VoidString(), + mPassword.WasPassed() ? mPassword.Value() : VoidString(), rv2); MOZ_ASSERT(mProxy->mInOpen); @@ -2046,7 +2046,7 @@ XMLHttpRequestWorker::Send(JSContext* aCx, RefPtr sendRunnable; if (aData.IsNull()) { - sendRunnable = new SendRunnable(mWorkerPrivate, mProxy, NullString()); + sendRunnable = new SendRunnable(mWorkerPrivate, mProxy, VoidString()); // Nothing to clone. } diff --git a/dom/xslt/xslt/txMozillaXMLOutput.cpp b/dom/xslt/xslt/txMozillaXMLOutput.cpp index b3678e858016..f03a02ce3a7b 100644 --- a/dom/xslt/xslt/txMozillaXMLOutput.cpp +++ b/dom/xslt/xslt/txMozillaXMLOutput.cpp @@ -904,7 +904,7 @@ txMozillaXMLOutput::createResultDocument(const nsAString& aName, int32_t aNsID, doctypeName, mOutputFormat.mPublicId, mOutputFormat.mSystemId, - NullString()); + VoidString()); NS_ENSURE_SUCCESS(rv, rv); nsCOMPtr docType = do_QueryInterface(documentType); diff --git a/dom/xul/templates/nsXULTemplateBuilder.cpp b/dom/xul/templates/nsXULTemplateBuilder.cpp index bf72f07d5f86..a350ed4bd943 100644 --- a/dom/xul/templates/nsXULTemplateBuilder.cpp +++ b/dom/xul/templates/nsXULTemplateBuilder.cpp @@ -487,7 +487,7 @@ nsXULTemplateBuilder::HasGeneratedContent(nsIRDFResource* aResource, bool* aGenerated) { ErrorResult rv; - const nsAString& tag = aTag ? nsDependentAtomString(aTag) : NullString(); + const nsAString& tag = aTag ? nsDependentAtomString(aTag) : VoidString(); *aGenerated = HasGeneratedContent(aResource, tag, rv); return rv.StealNSResult(); } diff --git a/gfx/angle/src/tests/preprocessor_tests/input_test.cpp b/gfx/angle/src/tests/preprocessor_tests/input_test.cpp index ca1878c5fafc..5e8d5931bdd6 100644 --- a/gfx/angle/src/tests/preprocessor_tests/input_test.cpp +++ b/gfx/angle/src/tests/preprocessor_tests/input_test.cpp @@ -21,7 +21,7 @@ TEST_F(InitTest, ZeroCount) EXPECT_EQ(pp::Token::LAST, token.type); } -TEST_F(InitTest, NullString) +TEST_F(InitTest, VoidString) { EXPECT_FALSE(mPreprocessor.init(1, NULL, NULL)); } diff --git a/js/xpconnect/loader/URLPreloader.h b/js/xpconnect/loader/URLPreloader.h index db5a1d7ed379..8825a02db980 100644 --- a/js/xpconnect/loader/URLPreloader.h +++ b/js/xpconnect/loader/URLPreloader.h @@ -224,7 +224,7 @@ private: { MOZ_IMPLICIT URLEntry(const CacheKey& key) : CacheKey(key) - , mData(NullCString()) + , mData(VoidCString()) {} explicit URLEntry(nsIFile* file) diff --git a/js/xpconnect/loader/mozJSSubScriptLoader.cpp b/js/xpconnect/loader/mozJSSubScriptLoader.cpp index bc98e48f5640..4dc62f8540d9 100644 --- a/js/xpconnect/loader/mozJSSubScriptLoader.cpp +++ b/js/xpconnect/loader/mozJSSubScriptLoader.cpp @@ -46,7 +46,7 @@ public: JSObject* options = nullptr) : OptionsBase(cx, options) , target(cx) - , charset(NullString()) + , charset(VoidString()) , ignoreCache(false) , async(false) , wantReturnValue(false) diff --git a/parser/html/nsHtml5TreeOperation.cpp b/parser/html/nsHtml5TreeOperation.cpp index 0e64fb53b26b..31ebd3e1e317 100644 --- a/parser/html/nsHtml5TreeOperation.cpp +++ b/parser/html/nsHtml5TreeOperation.cpp @@ -684,7 +684,7 @@ nsHtml5TreeOperation::AppendDoctypeToDocument(nsIAtom* aName, aName, aPublicId, aSystemId, - NullString()); + VoidString()); NS_ASSERTION(docType, "Doctype creation failed."); nsCOMPtr asContent = do_QueryInterface(docType); return AppendToDocument(asContent, aBuilder); diff --git a/toolkit/components/backgroundhangmonitor/HangDetails.h b/toolkit/components/backgroundhangmonitor/HangDetails.h index 29a4f29c27c1..ff1e1af02d33 100644 --- a/toolkit/components/backgroundhangmonitor/HangDetails.h +++ b/toolkit/components/backgroundhangmonitor/HangDetails.h @@ -32,7 +32,7 @@ public: HangDetails() : mDuration(0) , mProcess(GeckoProcessType_Invalid) - , mRemoteType(NullString()) + , mRemoteType(VoidString()) {} HangDetails(const HangDetails& aOther) = default; @@ -45,7 +45,7 @@ public: HangMonitor::HangAnnotations&& aAnnotations) : mDuration(aDuration) , mProcess(aProcess) - , mRemoteType(NullString()) + , mRemoteType(VoidString()) , mThreadName(aThreadName) , mRunnableName(aRunnableName) , mStack(Move(aStack)) diff --git a/xpcom/string/nsReadableUtils.cpp b/xpcom/string/nsReadableUtils.cpp index 952cf84f9b44..eb8c74fe4170 100644 --- a/xpcom/string/nsReadableUtils.cpp +++ b/xpcom/string/nsReadableUtils.cpp @@ -1166,7 +1166,7 @@ EmptyCString() } const nsString& -NullString() +VoidString() { static const nsString sNull(mozilla::detail::StringDataFlags::VOIDED); @@ -1174,7 +1174,7 @@ NullString() } const nsCString& -NullCString() +VoidCString() { static const nsCString sNull(mozilla::detail::StringDataFlags::VOIDED); diff --git a/xpcom/string/nsReadableUtils.h b/xpcom/string/nsReadableUtils.h index 3ef1db247c3e..37ada693dd3d 100644 --- a/xpcom/string/nsReadableUtils.h +++ b/xpcom/string/nsReadableUtils.h @@ -426,8 +426,8 @@ bool StringEndsWith(const nsACString& aSource, const nsACString& aSubstring, const nsString& EmptyString(); const nsCString& EmptyCString(); -const nsString& NullString(); -const nsCString& NullCString(); +const nsString& VoidString(); +const nsCString& VoidCString(); /** * Compare a UTF-8 string to an UTF-16 string. diff --git a/xpcom/string/nsTString.h b/xpcom/string/nsTString.h index 4f7396e5599a..246756ec0588 100644 --- a/xpcom/string/nsTString.h +++ b/xpcom/string/nsTString.h @@ -501,8 +501,8 @@ protected: { } - friend const nsTString& NullCString(); - friend const nsTString& NullString(); + friend const nsTString& VoidCString(); + friend const nsTString& VoidString(); // Used by Null[C]String. explicit nsTString(DataFlags aDataFlags) diff --git a/xpfe/components/directory/nsDirectoryViewer.cpp b/xpfe/components/directory/nsDirectoryViewer.cpp index 4a1442199747..1999a676bd27 100644 --- a/xpfe/components/directory/nsDirectoryViewer.cpp +++ b/xpfe/components/directory/nsDirectoryViewer.cpp @@ -931,7 +931,7 @@ nsHTTPIndex::FireTimer(nsITimer* aTimer, void* aClosure) do_QueryElementAt(httpIndex->mConnectionList, 0); httpIndex->mConnectionList->RemoveElementAt(0); - nsCString uri = NullCString(); + nsCString uri = VoidCString(); if (source) { httpIndex->GetDestination(source, uri); } From 29b6445766e2525bde0058edb5143f7e51acd06e Mon Sep 17 00:00:00 2001 From: Sebastian Hengst Date: Fri, 22 Sep 2017 11:36:05 +0200 Subject: [PATCH 47/56] Backed out changeset 8f4a95f9255c (bug 1402123) MozReview-Commit-ID: 7P4wfS1Bab6 --- .../MediaStream-MediaElement-preload-none.https.html.ini | 2 -- 1 file changed, 2 deletions(-) diff --git a/testing/web-platform/meta/mediacapture-streams/MediaStream-MediaElement-preload-none.https.html.ini b/testing/web-platform/meta/mediacapture-streams/MediaStream-MediaElement-preload-none.https.html.ini index cbdfe32cd3c7..5a1b1670b396 100644 --- a/testing/web-platform/meta/mediacapture-streams/MediaStream-MediaElement-preload-none.https.html.ini +++ b/testing/web-platform/meta/mediacapture-streams/MediaStream-MediaElement-preload-none.https.html.ini @@ -13,8 +13,6 @@ if debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): TIMEOUT if debug and stylo and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): TIMEOUT [Test that preload 'none' is ignored for MediaStream object URL used as src] - disabled: - if not stylo: https://bugzilla.mozilla.org/show_bug.cgi?id=1402123 expected: if debug and not stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): TIMEOUT if debug and stylo and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): TIMEOUT From e353ea6dbec99d1ed1114456ec47da3083e39d9d Mon Sep 17 00:00:00 2001 From: Sebastian Hengst Date: Fri, 22 Sep 2017 11:36:27 +0200 Subject: [PATCH 48/56] Backed out changeset 9192c6646cec (bug 1401613) MozReview-Commit-ID: E4ZA6a7NMGg --- .../tests/tools/wptrunner/README.rst | 6 +++++ .../wptrunner/wptrunner/manifestupdate.py | 7 ++--- .../tools/wptrunner/wptrunner/metadata.py | 27 +++++++++---------- .../wptrunner/wptmanifest/serializer.py | 2 -- 4 files changed, 23 insertions(+), 19 deletions(-) diff --git a/testing/web-platform/tests/tools/wptrunner/README.rst b/testing/web-platform/tests/tools/wptrunner/README.rst index 780518aae114..fc650eec45ac 100644 --- a/testing/web-platform/tests/tools/wptrunner/README.rst +++ b/testing/web-platform/tests/tools/wptrunner/README.rst @@ -146,6 +146,8 @@ An example of an expectation file is:: example_default_key: example_value [filename.html] + type: testharness + [subtest1] expected: FAIL @@ -156,6 +158,7 @@ An example of an expectation file is:: FAIL [filename.html?query=something] + type: testharness disabled: bug12345 The file consists of two elements, key-value pairs and @@ -227,6 +230,9 @@ The web-platform-test harness knows about several keys: `disabled` Any value indicates that the test is disabled. +`type` + The test type e.g. `testharness`, `reftest`, or `wdspec`. + `reftype` The type of comparison for reftests; either `==` or `!=`. diff --git a/testing/web-platform/tests/tools/wptrunner/wptrunner/manifestupdate.py b/testing/web-platform/tests/tools/wptrunner/wptrunner/manifestupdate.py index d67cffffd504..07e623c5d1bb 100644 --- a/testing/web-platform/tests/tools/wptrunner/wptrunner/manifestupdate.py +++ b/testing/web-platform/tests/tools/wptrunner/wptrunner/manifestupdate.py @@ -116,7 +116,7 @@ class TestNode(ManifestItem): self._from_file = True @classmethod - def create(cls, test_id): + def create(cls, test_type, test_id): """Create a TestNode corresponding to a given test :param test_type: The type of the test @@ -127,13 +127,14 @@ class TestNode(ManifestItem): node = DataNode(name) self = cls(node) + self.set("type", test_type) self._from_file = False return self @property def is_empty(self): - ignore_keys = set(["type"]) - if set(self._data.keys()) - ignore_keys: + required_keys = set(["type"]) + if set(self._data.keys()) != required_keys: return False return all(child.is_empty for child in self.children) diff --git a/testing/web-platform/tests/tools/wptrunner/wptrunner/metadata.py b/testing/web-platform/tests/tools/wptrunner/wptrunner/metadata.py index 4414258aa989..73f266fb9282 100644 --- a/testing/web-platform/tests/tools/wptrunner/wptrunner/metadata.py +++ b/testing/web-platform/tests/tools/wptrunner/wptrunner/metadata.py @@ -231,16 +231,14 @@ class ExpectedUpdater(object): def suite_start(self, data): self.run_info = data["run_info"] - def test_type(self, path): - for manifest in self.test_manifests.iterkeys(): - tests = list(manifest.iterpath(path)) - if len(tests): - assert all(test.item_type == tests[0].item_type for test in tests) - return tests[0].item_type - assert False + def test_id(self, id): + if type(id) in types.StringTypes: + return id + else: + return tuple(id) def test_start(self, data): - test_id = data["test"] + test_id = self.test_id(data["test"]) try: test_manifest, test = self.id_path_map[test_id] expected_node = self.expected_tree[test_manifest][test].get_test(test_id) @@ -255,10 +253,11 @@ class ExpectedUpdater(object): self.tests_visited[test_id] = set() def test_status(self, data): - test = self.test_cache.get(data["test"]) + test_id = self.test_id(data["test"]) + test = self.test_cache.get(test_id) if test is None: return - test_cls = wpttest.manifest_test_cls[self.test_type(test.root.test_path)] + test_cls = wpttest.manifest_test_cls[test.test_type] subtest = test.get_subtest(data["subtest"]) @@ -272,11 +271,11 @@ class ExpectedUpdater(object): subtest.set_result(self.run_info, result) def test_end(self, data): - test_id = data["test"] + test_id = self.test_id(data["test"]) test = self.test_cache.get(test_id) if test is None: return - test_cls = wpttest.manifest_test_cls[self.test_type(test.root.test_path)] + test_cls = wpttest.manifest_test_cls[test.test_type] if data["status"] == "SKIP": return @@ -323,7 +322,7 @@ def create_expected(test_manifest, test_path, tests, property_order=None, property_order=property_order, boolean_properties=boolean_properties) for test in tests: - expected.append(manifestupdate.TestNode.create(test.id)) + expected.append(manifestupdate.TestNode.create(test.item_type, test.id)) return expected @@ -347,6 +346,6 @@ def load_expected(test_manifest, metadata_path, test_path, tests, property_order # Add tests that don't have expected data for test in tests: if not expected_manifest.has_test(test.id): - expected_manifest.append(manifestupdate.TestNode.create(test.id)) + expected_manifest.append(manifestupdate.TestNode.create(test.item_type, test.id)) return expected_manifest diff --git a/testing/web-platform/tests/tools/wptrunner/wptrunner/wptmanifest/serializer.py b/testing/web-platform/tests/tools/wptrunner/wptrunner/wptmanifest/serializer.py index 3be2a6d94d62..52203ab240a9 100644 --- a/testing/web-platform/tests/tools/wptrunner/wptrunner/wptmanifest/serializer.py +++ b/testing/web-platform/tests/tools/wptrunner/wptrunner/wptmanifest/serializer.py @@ -28,8 +28,6 @@ class ManifestSerializer(NodeVisitor): def serialize(self, root): self.indent = 2 rv = "\n".join(self.visit(root)) - if not rv: - return rv if rv[-1] != "\n": rv = rv + "\n" return rv From 0ff8ca17e11424e497e8df5b08b4a72ea3a9104e Mon Sep 17 00:00:00 2001 From: Sebastian Hengst Date: Fri, 22 Sep 2017 11:36:34 +0200 Subject: [PATCH 49/56] Backed out changeset abead884f8fb (bug 1402002) MozReview-Commit-ID: 8eNqAd2Ahnd --HG-- rename : testing/web-platform/meta/css-fonts/font-display/font-display.html.ini => testing/web-platform/meta/css-font-display/font-display.html.ini rename : testing/web-platform/meta/feature-policy/payment-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html.ini => testing/web-platform/meta/payment-request/payment-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html.ini rename : testing/web-platform/meta/feature-policy/payment-allowed-by-feature-policy-attribute.https.sub.html.ini => testing/web-platform/meta/payment-request/payment-allowed-by-feature-policy-attribute.https.sub.html.ini rename : testing/web-platform/meta/feature-policy/payment-allowed-by-feature-policy.https.sub.html.ini => testing/web-platform/meta/payment-request/payment-allowed-by-feature-policy.https.sub.html.ini rename : testing/web-platform/meta/feature-policy/payment-default-feature-policy.https.sub.html.ini => testing/web-platform/meta/payment-request/payment-default-feature-policy.https.sub.html.ini rename : testing/web-platform/meta/feature-policy/payment-disabled-by-feature-policy.https.sub.html.ini => testing/web-platform/meta/payment-request/payment-disabled-by-feature-policy.https.sub.html.ini --- .../meta/FileAPI/idlharness.worker.js.ini | 1 - ...ic-cors-safelisted-request-headers.htm.ini | 5 - .../meta/XMLHttpRequest/data-uri.htm.ini | 1 - ...send-after-setting-document-domain.htm.ini | 3 - .../send-response-event-order.htm.ini | 1 - .../accelerometer/idlharness.https.html.ini | 99 -------- .../ambient-light/idlharness.https.html.ini | 57 ----- ...ontent-security-policy.https.window.js.ini | 5 - .../credentials-in-url.https.window.js.ini | 14 - .../dangling-markup.https.window.js.ini | 5 - ...nt-and-allowed-schemes.https.window.js.ini | 38 --- .../port-blocking.https.window.js.ini | 20 -- ...t-src-applet-archive-codebase.sub.html.ini | 11 + .../object-src-applet-archive.sub.html.ini | 11 + ...ject-src-applet-code-codebase.sub.html.ini | 11 + .../object-src-applet-code.sub.html.ini | 11 + .../font-display.html.ini | 0 .../parse-input-arguments-019.html.ini | 3 - .../parse-input-arguments-020.html.ini | 3 - .../parse-input-arguments-021.html.ini | 3 - .../parse-input-arguments-022.html.ini | 3 - .../attribute-value-selector-002.xht.ini | 3 + ...alignment-implies-size-change-007.html.ini | 5 - ...alignment-implies-size-change-009.html.ini | 5 - ...alignment-implies-size-change-017.html.ini | 5 - ...alignment-implies-size-change-025.html.ini | 5 - ...alignment-implies-size-change-027.html.ini | 5 - ...alignment-implies-size-change-035.html.ini | 5 - .../grid-minimum-size-grid-items-007.html.ini | 3 - .../grid-minimum-size-grid-items-009.html.ini | 3 - .../grid-minimum-size-grid-items-021.html.ini | 11 +- .../logicalprops-quirklength.html.ini | 3 + .../values/shape-outside-circle-010.html.ini | 1 - .../values/shape-outside-circle-011.html.ini | 1 - .../values/shape-outside-ellipse-010.html.ini | 1 - .../values/shape-outside-ellipse-011.html.ini | 1 - .../values/shape-outside-inset-008.html.ini | 1 - .../values/shape-outside-polygon-006.html.ini | 1 - .../white-space/pre-wrap-010.html.ini | 3 - .../textarea-pre-wrap-008.html.ini | 3 - .../textarea-pre-wrap-010.html.ini | 3 - .../css/css-ui-3/caret-color-020.html.ini | 5 + .../text-overflow-006.html.ini} | 2 +- .../vh_not_refreshing_on_chrome.html.ini | 3 + .../css/geometry-1/spec-examples.html.ini | 14 - .../meta/cssom-view/interfaces.html.ini | 8 - .../meta/cssom-view/scrollintoview.html.ini | 38 --- .../cssom/getComputedStyle-pseudo.html.ini | 1 - .../meta/cssom/interfaces.html.ini | 240 ------------------ ...-default-feature-policy.https.sub.html.ini | 12 - .../api/cors/cors-expose-star-worker.html.ini | 3 - .../fetch/api/cors/cors-expose-star.html.ini | 3 - .../fetch/api/headers/headers-basic.html.ini | 1 + ...ess.https.html.ini => idlharness.html.ini} | 14 +- .../meta/gyroscope/idlharness.https.html.ini | 57 ----- .../meta/html/dom/interfaces.html.ini | 3 - .../meta/html/dom/interfaces.worker.js.ini | 5 - .../collections/htmlallcollection.html.ini | 6 - .../the-style-element/style_type.html.ini | 8 - .../track-element/track-cue-order.html.ini | 5 - .../meta/html/semantics/interfaces.html.ini | 6 + .../script-languages-01.html.ini | 8 + ....html.ini => script-languages-02.html.ini} | 2 +- ...ipt-type-and-language-with-params.html.ini | 11 - .../the-navigator-object/content.html.ini | 23 ++ .../content/001.xhtml.ini | 5 + .../content/002.xhtml.ini | 5 + .../content/003.xhtml.ini | 5 + .../content/004.xhtml.ini | 5 + .../content/005.xhtml.ini | 5 + .../content/006.xhtml.ini | 5 + .../historical.window.js.ini | 5 - .../protocol/001.xhtml.ini | 5 + .../protocol/002.xhtml.ini | 5 + .../protocol/003.xhtml.ini | 5 + .../protocol/004.xhtml.ini | 5 + .../protocol/005.xhtml.ini | 5 + .../protocol/006.xhtml.ini | 5 + .../input-events-exec-command.html.ini | 5 - .../magnetometer/idlharness.https.html.ini | 78 ------ ...m-MediaElement-preload-none.https.html.ini | 26 +- ...ream-MediaElement-srcObject.https.html.ini | 3 +- ...MediaStream-add-audio-track.https.html.ini | 3 +- .../MediaStream-audio-only.https.html.ini | 3 +- ...-default-feature-policy.https.sub.html.ini | 39 --- .../MediaStream-finished-add.https.html.ini | 3 +- .../MediaStream-idl.https.html.ini | 3 +- .../MediaStream-removetrack.https.html.ini | 3 +- .../MediaStream-video-only.https.html.ini | 3 +- ...t-disabled-audio-is-silence.https.html.ini | 3 +- ...ent-disabled-video-is-black.https.html.ini | 3 - .../MediaStreamTrack-init.https.html.ini | 3 +- .../idlharness.https.html.ini | 78 ------ .../meta/paint-timing/basetest.html.ini | 6 - .../first-contentful-bg-image.html.ini | 6 - .../first-contentful-canvas.html.ini | 6 - .../first-contentful-image.html.ini | 6 - .../first-contentful-paint.html.ini | 6 - .../first-contentful-svg.html.ini | 6 - .../first-paint-bg-color.html.ini | 6 - .../paint-timing/first-paint-only.html.ini | 6 - .../interfaces.https.any.js.ini | 113 --------- .../payment-request/interfaces.https.html.ini | 167 ------------ ...ribute-redirect-on-load.https.sub.html.ini | 0 ...eature-policy-attribute.https.sub.html.ini | 0 ...lowed-by-feature-policy.https.sub.html.ini | 0 ...-default-feature-policy.https.sub.html.ini | 0 ...abled-by-feature-policy.https.sub.html.ini | 0 ...payment-request-constructor.https.html.ini | 12 - ...pingaddresschange-attribute.https.html.ini | 3 - ...ppingoptionchange-attribute.https.html.ini | 3 - ...t-shippingAddress-attribute.https.html.ini | 8 - ...st-shippingOption-attribute.https.html.ini | 20 -- ...uest-shippingType-attribute.https.html.ini | 3 - ...payment-request-show-method.https.html.ini | 3 - ...est-update-event-constructor.http.html.ini | 5 + ...t-update-event-constructor.https.html.ini} | 2 +- ...te-event-updatewith-method.https.html.ini} | 2 +- .../rejects_if_not_active.https.html.ini | 11 - .../performance-timeline/idlharness.html.ini | 5 + .../meta/resource-timing/idlharness.html.ini | 5 + .../skip-waiting-installed.https.html.ini | 5 - .../meta/url/interfaces.any.js.ini | 6 + .../tests/contexts/maximize_window.py.ini | 2 +- .../tests/element_click/select.py.ini | 2 +- .../webdriver/tests/get_window_rect.py.ini | 1 - .../webdriver/tests/minimize_window.py.ini | 2 +- .../webdriver/tests/set_window_rect.py.ini | 1 - ...ion-setRemoteDescription-rollback.html.ini | 9 - ...erConnection-setRemoteDescription.html.ini | 3 - .../meta/websockets/constructor/010.html.ini | 3 + .../meta/websockets/constructor/011.html.ini | 11 + .../workers/worker-performance.worker.js.ini | 11 - 133 files changed, 225 insertions(+), 1413 deletions(-) delete mode 100644 testing/web-platform/meta/XMLHttpRequest/access-control-basic-cors-safelisted-request-headers.htm.ini delete mode 100644 testing/web-platform/meta/XMLHttpRequest/send-after-setting-document-domain.htm.ini delete mode 100644 testing/web-platform/meta/background-fetch/content-security-policy.https.window.js.ini delete mode 100644 testing/web-platform/meta/background-fetch/credentials-in-url.https.window.js.ini delete mode 100644 testing/web-platform/meta/background-fetch/dangling-markup.https.window.js.ini delete mode 100644 testing/web-platform/meta/background-fetch/mixed-content-and-allowed-schemes.https.window.js.ini delete mode 100644 testing/web-platform/meta/background-fetch/port-blocking.https.window.js.ini create mode 100644 testing/web-platform/meta/content-security-policy/blink-contrib/object-src-applet-archive-codebase.sub.html.ini create mode 100644 testing/web-platform/meta/content-security-policy/blink-contrib/object-src-applet-archive.sub.html.ini create mode 100644 testing/web-platform/meta/content-security-policy/blink-contrib/object-src-applet-code-codebase.sub.html.ini create mode 100644 testing/web-platform/meta/content-security-policy/blink-contrib/object-src-applet-code.sub.html.ini rename testing/web-platform/meta/{css-fonts/font-display => css-font-display}/font-display.html.ini (100%) delete mode 100644 testing/web-platform/meta/css-paint-api/parse-input-arguments-019.html.ini delete mode 100644 testing/web-platform/meta/css-paint-api/parse-input-arguments-020.html.ini delete mode 100644 testing/web-platform/meta/css-paint-api/parse-input-arguments-021.html.ini delete mode 100644 testing/web-platform/meta/css-paint-api/parse-input-arguments-022.html.ini create mode 100644 testing/web-platform/meta/css/CSS2/selectors/attribute-value-selector-002.xht.ini delete mode 100644 testing/web-platform/meta/css/css-grid-1/alignment/grid-alignment-implies-size-change-007.html.ini delete mode 100644 testing/web-platform/meta/css/css-grid-1/alignment/grid-alignment-implies-size-change-009.html.ini delete mode 100644 testing/web-platform/meta/css/css-grid-1/alignment/grid-alignment-implies-size-change-017.html.ini delete mode 100644 testing/web-platform/meta/css/css-grid-1/alignment/grid-alignment-implies-size-change-025.html.ini delete mode 100644 testing/web-platform/meta/css/css-grid-1/alignment/grid-alignment-implies-size-change-027.html.ini delete mode 100644 testing/web-platform/meta/css/css-grid-1/alignment/grid-alignment-implies-size-change-035.html.ini delete mode 100644 testing/web-platform/meta/css/css-grid-1/grid-items/grid-minimum-size-grid-items-007.html.ini delete mode 100644 testing/web-platform/meta/css/css-grid-1/grid-items/grid-minimum-size-grid-items-009.html.ini create mode 100644 testing/web-platform/meta/css/css-logical-properties-1/logicalprops-quirklength.html.ini delete mode 100644 testing/web-platform/meta/css/css-text-3/white-space/pre-wrap-010.html.ini delete mode 100644 testing/web-platform/meta/css/css-text-3/white-space/textarea-pre-wrap-008.html.ini delete mode 100644 testing/web-platform/meta/css/css-text-3/white-space/textarea-pre-wrap-010.html.ini create mode 100644 testing/web-platform/meta/css/css-ui-3/caret-color-020.html.ini rename testing/web-platform/meta/css/{css-text-3/white-space/pre-wrap-008.html.ini => css-ui-3/text-overflow-006.html.ini} (56%) create mode 100644 testing/web-platform/meta/css/css-values-3/vh_not_refreshing_on_chrome.html.ini delete mode 100644 testing/web-platform/meta/css/geometry-1/spec-examples.html.ini delete mode 100644 testing/web-platform/meta/cssom-view/interfaces.html.ini delete mode 100644 testing/web-platform/meta/cssom-view/scrollintoview.html.ini delete mode 100644 testing/web-platform/meta/encrypted-media/encrypted-media-default-feature-policy.https.sub.html.ini rename testing/web-platform/meta/generic-sensor/{idlharness.https.html.ini => idlharness.html.ini} (62%) delete mode 100644 testing/web-platform/meta/html/semantics/document-metadata/the-style-element/style_type.html.ini delete mode 100644 testing/web-platform/meta/html/semantics/embedded-content/media-elements/track/track-element/track-cue-order.html.ini create mode 100644 testing/web-platform/meta/html/semantics/scripting-1/the-script-element/script-languages-01.html.ini rename testing/web-platform/meta/html/semantics/scripting-1/the-script-element/{script-type-and-language-js.html.ini => script-languages-02.html.ini} (99%) delete mode 100644 testing/web-platform/meta/html/semantics/scripting-1/the-script-element/script-type-and-language-with-params.html.ini create mode 100644 testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content.html.ini create mode 100644 testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content/001.xhtml.ini create mode 100644 testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content/002.xhtml.ini create mode 100644 testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content/003.xhtml.ini create mode 100644 testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content/004.xhtml.ini create mode 100644 testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content/005.xhtml.ini create mode 100644 testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content/006.xhtml.ini delete mode 100644 testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/historical.window.js.ini create mode 100644 testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/001.xhtml.ini create mode 100644 testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/002.xhtml.ini create mode 100644 testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/003.xhtml.ini create mode 100644 testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/004.xhtml.ini create mode 100644 testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/005.xhtml.ini create mode 100644 testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/006.xhtml.ini delete mode 100644 testing/web-platform/meta/input-events/input-events-exec-command.html.ini delete mode 100644 testing/web-platform/meta/mediacapture-streams/MediaStream-default-feature-policy.https.sub.html.ini delete mode 100644 testing/web-platform/meta/paint-timing/basetest.html.ini delete mode 100644 testing/web-platform/meta/paint-timing/first-contentful-bg-image.html.ini delete mode 100644 testing/web-platform/meta/paint-timing/first-contentful-canvas.html.ini delete mode 100644 testing/web-platform/meta/paint-timing/first-contentful-image.html.ini delete mode 100644 testing/web-platform/meta/paint-timing/first-contentful-paint.html.ini delete mode 100644 testing/web-platform/meta/paint-timing/first-contentful-svg.html.ini delete mode 100644 testing/web-platform/meta/paint-timing/first-paint-bg-color.html.ini delete mode 100644 testing/web-platform/meta/paint-timing/first-paint-only.html.ini delete mode 100644 testing/web-platform/meta/payment-handler/interfaces.https.any.js.ini rename testing/web-platform/meta/{feature-policy => payment-request}/payment-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html.ini (100%) rename testing/web-platform/meta/{feature-policy => payment-request}/payment-allowed-by-feature-policy-attribute.https.sub.html.ini (100%) rename testing/web-platform/meta/{feature-policy => payment-request}/payment-allowed-by-feature-policy.https.sub.html.ini (100%) rename testing/web-platform/meta/{feature-policy => payment-request}/payment-default-feature-policy.https.sub.html.ini (100%) rename testing/web-platform/meta/{feature-policy => payment-request}/payment-disabled-by-feature-policy.https.sub.html.ini (100%) delete mode 100644 testing/web-platform/meta/payment-request/payment-request-shippingAddress-attribute.https.html.ini delete mode 100644 testing/web-platform/meta/payment-request/payment-request-shippingOption-attribute.https.html.ini create mode 100644 testing/web-platform/meta/payment-request/payment-request-update-event-constructor.http.html.ini rename testing/web-platform/meta/payment-request/{PaymentRequestUpdateEvent/constructor.https.html.ini => payment-request-update-event-constructor.https.html.ini} (85%) rename testing/web-platform/meta/payment-request/{PaymentRequestUpdateEvent/updatewith-method.https.html.ini => payment-request-update-event-updatewith-method.https.html.ini} (84%) delete mode 100644 testing/web-platform/meta/payment-request/rejects_if_not_active.https.html.ini create mode 100644 testing/web-platform/meta/performance-timeline/idlharness.html.ini create mode 100644 testing/web-platform/meta/resource-timing/idlharness.html.ini delete mode 100644 testing/web-platform/meta/service-workers/service-worker/skip-waiting-installed.https.html.ini delete mode 100644 testing/web-platform/meta/webrtc/RTCPeerConnection-setRemoteDescription-rollback.html.ini create mode 100644 testing/web-platform/meta/websockets/constructor/011.html.ini delete mode 100644 testing/web-platform/meta/workers/worker-performance.worker.js.ini diff --git a/testing/web-platform/meta/FileAPI/idlharness.worker.js.ini b/testing/web-platform/meta/FileAPI/idlharness.worker.js.ini index 065bbbf9d9ea..901f4d273382 100644 --- a/testing/web-platform/meta/FileAPI/idlharness.worker.js.ini +++ b/testing/web-platform/meta/FileAPI/idlharness.worker.js.ini @@ -22,4 +22,3 @@ [Event interface: existence and properties of interface object] expected: FAIL - diff --git a/testing/web-platform/meta/XMLHttpRequest/access-control-basic-cors-safelisted-request-headers.htm.ini b/testing/web-platform/meta/XMLHttpRequest/access-control-basic-cors-safelisted-request-headers.htm.ini deleted file mode 100644 index 2373b260a044..000000000000 --- a/testing/web-platform/meta/XMLHttpRequest/access-control-basic-cors-safelisted-request-headers.htm.ini +++ /dev/null @@ -1,5 +0,0 @@ -[access-control-basic-cors-safelisted-request-headers.htm] - type: testharness - [Request with CORS-safelisted headers] - expected: FAIL - diff --git a/testing/web-platform/meta/XMLHttpRequest/data-uri.htm.ini b/testing/web-platform/meta/XMLHttpRequest/data-uri.htm.ini index 4776d55b75e8..41ecffb11f56 100644 --- a/testing/web-platform/meta/XMLHttpRequest/data-uri.htm.ini +++ b/testing/web-platform/meta/XMLHttpRequest/data-uri.htm.ini @@ -2,4 +2,3 @@ type: testharness [XHR method GET with MIME type image/png] expected: FAIL - diff --git a/testing/web-platform/meta/XMLHttpRequest/send-after-setting-document-domain.htm.ini b/testing/web-platform/meta/XMLHttpRequest/send-after-setting-document-domain.htm.ini deleted file mode 100644 index 09aff6098889..000000000000 --- a/testing/web-platform/meta/XMLHttpRequest/send-after-setting-document-domain.htm.ini +++ /dev/null @@ -1,3 +0,0 @@ -[send-after-setting-document-domain.htm] - expected: - if debug and stylo and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): CRASH diff --git a/testing/web-platform/meta/XMLHttpRequest/send-response-event-order.htm.ini b/testing/web-platform/meta/XMLHttpRequest/send-response-event-order.htm.ini index d2d87f217d3e..54e46bb22dff 100644 --- a/testing/web-platform/meta/XMLHttpRequest/send-response-event-order.htm.ini +++ b/testing/web-platform/meta/XMLHttpRequest/send-response-event-order.htm.ini @@ -1,3 +1,2 @@ [send-response-event-order.htm] - type: testharness disabled: if (os == "win"): https://bugzilla.mozilla.org/show_bug.cgi?id=1370056 diff --git a/testing/web-platform/meta/accelerometer/idlharness.https.html.ini b/testing/web-platform/meta/accelerometer/idlharness.https.html.ini index ce8f2e889537..818e27559653 100644 --- a/testing/web-platform/meta/accelerometer/idlharness.https.html.ini +++ b/testing/web-platform/meta/accelerometer/idlharness.https.html.ini @@ -249,102 +249,3 @@ [Accelerometer interface: new GravitySensor(); must inherit property "z" with the proper type] expected: FAIL - [Sensor interface: existence and properties of interface object] - expected: FAIL - - [Sensor interface object length] - expected: FAIL - - [Sensor interface object name] - expected: FAIL - - [Sensor interface: existence and properties of interface prototype object] - expected: FAIL - - [Sensor interface: existence and properties of interface prototype object's "constructor" property] - expected: FAIL - - [Sensor interface: attribute activated] - expected: FAIL - - [Sensor interface: attribute timestamp] - expected: FAIL - - [Sensor interface: operation start()] - expected: FAIL - - [Sensor interface: operation stop()] - expected: FAIL - - [Sensor interface: attribute onreading] - expected: FAIL - - [Sensor interface: attribute onactivate] - expected: FAIL - - [Sensor interface: attribute onerror] - expected: FAIL - - [Sensor interface: new Accelerometer(); must inherit property "activated" with the proper type] - expected: FAIL - - [Sensor interface: new Accelerometer(); must inherit property "timestamp" with the proper type] - expected: FAIL - - [Sensor interface: new Accelerometer(); must inherit property "start()" with the proper type] - expected: FAIL - - [Sensor interface: new Accelerometer(); must inherit property "stop()" with the proper type] - expected: FAIL - - [Sensor interface: new Accelerometer(); must inherit property "onreading" with the proper type] - expected: FAIL - - [Sensor interface: new Accelerometer(); must inherit property "onactivate" with the proper type] - expected: FAIL - - [Sensor interface: new Accelerometer(); must inherit property "onerror" with the proper type] - expected: FAIL - - [Sensor interface: new LinearAccelerationSensor(); must inherit property "activated" with the proper type] - expected: FAIL - - [Sensor interface: new LinearAccelerationSensor(); must inherit property "timestamp" with the proper type] - expected: FAIL - - [Sensor interface: new LinearAccelerationSensor(); must inherit property "start()" with the proper type] - expected: FAIL - - [Sensor interface: new LinearAccelerationSensor(); must inherit property "stop()" with the proper type] - expected: FAIL - - [Sensor interface: new LinearAccelerationSensor(); must inherit property "onreading" with the proper type] - expected: FAIL - - [Sensor interface: new LinearAccelerationSensor(); must inherit property "onactivate" with the proper type] - expected: FAIL - - [Sensor interface: new LinearAccelerationSensor(); must inherit property "onerror" with the proper type] - expected: FAIL - - [Sensor interface: new GravitySensor(); must inherit property "activated" with the proper type] - expected: FAIL - - [Sensor interface: new GravitySensor(); must inherit property "timestamp" with the proper type] - expected: FAIL - - [Sensor interface: new GravitySensor(); must inherit property "start()" with the proper type] - expected: FAIL - - [Sensor interface: new GravitySensor(); must inherit property "stop()" with the proper type] - expected: FAIL - - [Sensor interface: new GravitySensor(); must inherit property "onreading" with the proper type] - expected: FAIL - - [Sensor interface: new GravitySensor(); must inherit property "onactivate" with the proper type] - expected: FAIL - - [Sensor interface: new GravitySensor(); must inherit property "onerror" with the proper type] - expected: FAIL - diff --git a/testing/web-platform/meta/ambient-light/idlharness.https.html.ini b/testing/web-platform/meta/ambient-light/idlharness.https.html.ini index 8d76a0ca6267..7421fcf8523f 100644 --- a/testing/web-platform/meta/ambient-light/idlharness.https.html.ini +++ b/testing/web-platform/meta/ambient-light/idlharness.https.html.ini @@ -87,60 +87,3 @@ [AmbientLightSensor interface: new AmbientLightSensor(); must inherit property "illuminance" with the proper type] expected: FAIL - [Sensor interface: existence and properties of interface object] - expected: FAIL - - [Sensor interface object length] - expected: FAIL - - [Sensor interface object name] - expected: FAIL - - [Sensor interface: existence and properties of interface prototype object] - expected: FAIL - - [Sensor interface: existence and properties of interface prototype object's "constructor" property] - expected: FAIL - - [Sensor interface: attribute activated] - expected: FAIL - - [Sensor interface: attribute timestamp] - expected: FAIL - - [Sensor interface: operation start()] - expected: FAIL - - [Sensor interface: operation stop()] - expected: FAIL - - [Sensor interface: attribute onreading] - expected: FAIL - - [Sensor interface: attribute onactivate] - expected: FAIL - - [Sensor interface: attribute onerror] - expected: FAIL - - [Sensor interface: new AmbientLightSensor(); must inherit property "activated" with the proper type] - expected: FAIL - - [Sensor interface: new AmbientLightSensor(); must inherit property "timestamp" with the proper type] - expected: FAIL - - [Sensor interface: new AmbientLightSensor(); must inherit property "start()" with the proper type] - expected: FAIL - - [Sensor interface: new AmbientLightSensor(); must inherit property "stop()" with the proper type] - expected: FAIL - - [Sensor interface: new AmbientLightSensor(); must inherit property "onreading" with the proper type] - expected: FAIL - - [Sensor interface: new AmbientLightSensor(); must inherit property "onactivate" with the proper type] - expected: FAIL - - [Sensor interface: new AmbientLightSensor(); must inherit property "onerror" with the proper type] - expected: FAIL - diff --git a/testing/web-platform/meta/background-fetch/content-security-policy.https.window.js.ini b/testing/web-platform/meta/background-fetch/content-security-policy.https.window.js.ini deleted file mode 100644 index 2da013577be0..000000000000 --- a/testing/web-platform/meta/background-fetch/content-security-policy.https.window.js.ini +++ /dev/null @@ -1,5 +0,0 @@ -[content-security-policy.https.window.html] - type: testharness - [fetch blocked by CSP should reject] - expected: FAIL - diff --git a/testing/web-platform/meta/background-fetch/credentials-in-url.https.window.js.ini b/testing/web-platform/meta/background-fetch/credentials-in-url.https.window.js.ini deleted file mode 100644 index cd5caf09c7bf..000000000000 --- a/testing/web-platform/meta/background-fetch/credentials-in-url.https.window.js.ini +++ /dev/null @@ -1,14 +0,0 @@ -[credentials-in-url.https.window.html] - type: testharness - [fetch without credentials in URL should register ok] - expected: FAIL - - [fetch with username and password in URL should reject] - expected: FAIL - - [fetch with username and empty password in URL should reject] - expected: FAIL - - [fetch with empty username and password in URL should reject] - expected: FAIL - diff --git a/testing/web-platform/meta/background-fetch/dangling-markup.https.window.js.ini b/testing/web-platform/meta/background-fetch/dangling-markup.https.window.js.ini deleted file mode 100644 index 55dde793ec7d..000000000000 --- a/testing/web-platform/meta/background-fetch/dangling-markup.https.window.js.ini +++ /dev/null @@ -1,5 +0,0 @@ -[dangling-markup.https.window.html] - type: testharness - [fetch to URL containing \\n and < should reject] - expected: FAIL - diff --git a/testing/web-platform/meta/background-fetch/mixed-content-and-allowed-schemes.https.window.js.ini b/testing/web-platform/meta/background-fetch/mixed-content-and-allowed-schemes.https.window.js.ini deleted file mode 100644 index 0814484ee020..000000000000 --- a/testing/web-platform/meta/background-fetch/mixed-content-and-allowed-schemes.https.window.js.ini +++ /dev/null @@ -1,38 +0,0 @@ -[mixed-content-and-allowed-schemes.https.window.html] - type: testharness - [https: fetch should register ok] - expected: FAIL - - [loopback IPv4 http: fetch should register ok] - expected: FAIL - - [loopback IPv6 http: fetch should register ok] - expected: FAIL - - [non-loopback http: fetch should reject] - expected: FAIL - - [non-loopback IPv4 http: fetch should reject] - expected: FAIL - - [non-loopback IPv6 http: fetch should reject] - expected: FAIL - - [https: and non-loopback http: fetch should reject] - expected: FAIL - - [non-loopback http: and https: fetch should reject] - expected: FAIL - - [wss: fetch should reject] - expected: FAIL - - [file: fetch should reject] - expected: FAIL - - [data: fetch should reject] - expected: FAIL - - [unknown scheme fetch should reject] - expected: FAIL - diff --git a/testing/web-platform/meta/background-fetch/port-blocking.https.window.js.ini b/testing/web-platform/meta/background-fetch/port-blocking.https.window.js.ini deleted file mode 100644 index 0754df8c3a09..000000000000 --- a/testing/web-platform/meta/background-fetch/port-blocking.https.window.js.ini +++ /dev/null @@ -1,20 +0,0 @@ -[port-blocking.https.window.html] - type: testharness - [fetch to default https port should register ok] - expected: FAIL - - [fetch to default http port should register ok] - expected: FAIL - - [fetch to port 443 should register ok] - expected: FAIL - - [fetch to port 80 should register ok, even over https] - expected: FAIL - - [fetch to non-default non-bad port (8080) should register ok] - expected: FAIL - - [fetch to bad port (SMTP) should reject] - expected: FAIL - diff --git a/testing/web-platform/meta/content-security-policy/blink-contrib/object-src-applet-archive-codebase.sub.html.ini b/testing/web-platform/meta/content-security-policy/blink-contrib/object-src-applet-archive-codebase.sub.html.ini new file mode 100644 index 000000000000..3fd4d6eb23f8 --- /dev/null +++ b/testing/web-platform/meta/content-security-policy/blink-contrib/object-src-applet-archive-codebase.sub.html.ini @@ -0,0 +1,11 @@ +[object-src-applet-archive-codebase.sub.html] + type: testharness + expected: + if not debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): TIMEOUT + if debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): TIMEOUT + [Expecting logs: ["PASS"\]] + expected: NOTRUN + + [Violation report status OK.] + expected: FAIL + diff --git a/testing/web-platform/meta/content-security-policy/blink-contrib/object-src-applet-archive.sub.html.ini b/testing/web-platform/meta/content-security-policy/blink-contrib/object-src-applet-archive.sub.html.ini new file mode 100644 index 000000000000..bbbfb43a431f --- /dev/null +++ b/testing/web-platform/meta/content-security-policy/blink-contrib/object-src-applet-archive.sub.html.ini @@ -0,0 +1,11 @@ +[object-src-applet-archive.sub.html] + type: testharness + expected: + if not debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): TIMEOUT + if debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): TIMEOUT + [Expecting logs: ["PASS"\]] + expected: NOTRUN + + [Violation report status OK.] + expected: FAIL + diff --git a/testing/web-platform/meta/content-security-policy/blink-contrib/object-src-applet-code-codebase.sub.html.ini b/testing/web-platform/meta/content-security-policy/blink-contrib/object-src-applet-code-codebase.sub.html.ini new file mode 100644 index 000000000000..4c63ee29b96c --- /dev/null +++ b/testing/web-platform/meta/content-security-policy/blink-contrib/object-src-applet-code-codebase.sub.html.ini @@ -0,0 +1,11 @@ +[object-src-applet-code-codebase.sub.html] + type: testharness + expected: + if not debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): TIMEOUT + if debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): TIMEOUT + [Expecting logs: ["PASS"\]] + expected: NOTRUN + + [Violation report status OK.] + expected: FAIL + diff --git a/testing/web-platform/meta/content-security-policy/blink-contrib/object-src-applet-code.sub.html.ini b/testing/web-platform/meta/content-security-policy/blink-contrib/object-src-applet-code.sub.html.ini new file mode 100644 index 000000000000..8ff7fcb453d2 --- /dev/null +++ b/testing/web-platform/meta/content-security-policy/blink-contrib/object-src-applet-code.sub.html.ini @@ -0,0 +1,11 @@ +[object-src-applet-code.sub.html] + type: testharness + expected: + if not debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): TIMEOUT + if debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): TIMEOUT + [Expecting logs: ["PASS"\]] + expected: NOTRUN + + [Violation report status OK.] + expected: FAIL + diff --git a/testing/web-platform/meta/css-fonts/font-display/font-display.html.ini b/testing/web-platform/meta/css-font-display/font-display.html.ini similarity index 100% rename from testing/web-platform/meta/css-fonts/font-display/font-display.html.ini rename to testing/web-platform/meta/css-font-display/font-display.html.ini diff --git a/testing/web-platform/meta/css-paint-api/parse-input-arguments-019.html.ini b/testing/web-platform/meta/css-paint-api/parse-input-arguments-019.html.ini deleted file mode 100644 index a89a7d4d145d..000000000000 --- a/testing/web-platform/meta/css-paint-api/parse-input-arguments-019.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[parse-input-arguments-019.html] - type: reftest - expected: FAIL diff --git a/testing/web-platform/meta/css-paint-api/parse-input-arguments-020.html.ini b/testing/web-platform/meta/css-paint-api/parse-input-arguments-020.html.ini deleted file mode 100644 index a73dbbdb17a6..000000000000 --- a/testing/web-platform/meta/css-paint-api/parse-input-arguments-020.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[parse-input-arguments-020.html] - type: reftest - expected: FAIL diff --git a/testing/web-platform/meta/css-paint-api/parse-input-arguments-021.html.ini b/testing/web-platform/meta/css-paint-api/parse-input-arguments-021.html.ini deleted file mode 100644 index 2d55e408a992..000000000000 --- a/testing/web-platform/meta/css-paint-api/parse-input-arguments-021.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[parse-input-arguments-021.html] - type: reftest - expected: FAIL diff --git a/testing/web-platform/meta/css-paint-api/parse-input-arguments-022.html.ini b/testing/web-platform/meta/css-paint-api/parse-input-arguments-022.html.ini deleted file mode 100644 index 7d27a1d9e45b..000000000000 --- a/testing/web-platform/meta/css-paint-api/parse-input-arguments-022.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[parse-input-arguments-022.html] - type: reftest - expected: FAIL diff --git a/testing/web-platform/meta/css/CSS2/selectors/attribute-value-selector-002.xht.ini b/testing/web-platform/meta/css/CSS2/selectors/attribute-value-selector-002.xht.ini new file mode 100644 index 000000000000..1f15dbbcb012 --- /dev/null +++ b/testing/web-platform/meta/css/CSS2/selectors/attribute-value-selector-002.xht.ini @@ -0,0 +1,3 @@ +[attribute-value-selector-002.xht] + type: reftest + expected: FAIL diff --git a/testing/web-platform/meta/css/css-grid-1/alignment/grid-alignment-implies-size-change-007.html.ini b/testing/web-platform/meta/css/css-grid-1/alignment/grid-alignment-implies-size-change-007.html.ini deleted file mode 100644 index 65ddb11a65b3..000000000000 --- a/testing/web-platform/meta/css/css-grid-1/alignment/grid-alignment-implies-size-change-007.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[grid-alignment-implies-size-change-007.html] - type: testharness - [.before 1] - expected: FAIL - diff --git a/testing/web-platform/meta/css/css-grid-1/alignment/grid-alignment-implies-size-change-009.html.ini b/testing/web-platform/meta/css/css-grid-1/alignment/grid-alignment-implies-size-change-009.html.ini deleted file mode 100644 index 0059260bb01b..000000000000 --- a/testing/web-platform/meta/css/css-grid-1/alignment/grid-alignment-implies-size-change-009.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[grid-alignment-implies-size-change-009.html] - type: testharness - [.before 1] - expected: FAIL - diff --git a/testing/web-platform/meta/css/css-grid-1/alignment/grid-alignment-implies-size-change-017.html.ini b/testing/web-platform/meta/css/css-grid-1/alignment/grid-alignment-implies-size-change-017.html.ini deleted file mode 100644 index cb63e9d4b196..000000000000 --- a/testing/web-platform/meta/css/css-grid-1/alignment/grid-alignment-implies-size-change-017.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[grid-alignment-implies-size-change-017.html] - type: testharness - [.before 1] - expected: FAIL - diff --git a/testing/web-platform/meta/css/css-grid-1/alignment/grid-alignment-implies-size-change-025.html.ini b/testing/web-platform/meta/css/css-grid-1/alignment/grid-alignment-implies-size-change-025.html.ini deleted file mode 100644 index 0bd278738178..000000000000 --- a/testing/web-platform/meta/css/css-grid-1/alignment/grid-alignment-implies-size-change-025.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[grid-alignment-implies-size-change-025.html] - type: testharness - [.before 1] - expected: FAIL - diff --git a/testing/web-platform/meta/css/css-grid-1/alignment/grid-alignment-implies-size-change-027.html.ini b/testing/web-platform/meta/css/css-grid-1/alignment/grid-alignment-implies-size-change-027.html.ini deleted file mode 100644 index c9cb579c2c26..000000000000 --- a/testing/web-platform/meta/css/css-grid-1/alignment/grid-alignment-implies-size-change-027.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[grid-alignment-implies-size-change-027.html] - type: testharness - [.before 1] - expected: FAIL - diff --git a/testing/web-platform/meta/css/css-grid-1/alignment/grid-alignment-implies-size-change-035.html.ini b/testing/web-platform/meta/css/css-grid-1/alignment/grid-alignment-implies-size-change-035.html.ini deleted file mode 100644 index 841098197fc8..000000000000 --- a/testing/web-platform/meta/css/css-grid-1/alignment/grid-alignment-implies-size-change-035.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[grid-alignment-implies-size-change-035.html] - type: testharness - [.before 1] - expected: FAIL - diff --git a/testing/web-platform/meta/css/css-grid-1/grid-items/grid-minimum-size-grid-items-007.html.ini b/testing/web-platform/meta/css/css-grid-1/grid-items/grid-minimum-size-grid-items-007.html.ini deleted file mode 100644 index 6b6094d787be..000000000000 --- a/testing/web-platform/meta/css/css-grid-1/grid-items/grid-minimum-size-grid-items-007.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[grid-minimum-size-grid-items-007.html] - type: reftest - expected: FAIL diff --git a/testing/web-platform/meta/css/css-grid-1/grid-items/grid-minimum-size-grid-items-009.html.ini b/testing/web-platform/meta/css/css-grid-1/grid-items/grid-minimum-size-grid-items-009.html.ini deleted file mode 100644 index af13dc43150e..000000000000 --- a/testing/web-platform/meta/css/css-grid-1/grid-items/grid-minimum-size-grid-items-009.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[grid-minimum-size-grid-items-009.html] - type: reftest - expected: FAIL diff --git a/testing/web-platform/meta/css/css-grid-1/grid-items/grid-minimum-size-grid-items-021.html.ini b/testing/web-platform/meta/css/css-grid-1/grid-items/grid-minimum-size-grid-items-021.html.ini index d5951fb400b6..c47baf1b0d37 100644 --- a/testing/web-platform/meta/css/css-grid-1/grid-items/grid-minimum-size-grid-items-021.html.ini +++ b/testing/web-platform/meta/css/css-grid-1/grid-items/grid-minimum-size-grid-items-021.html.ini @@ -1,17 +1,14 @@ [grid-minimum-size-grid-items-021.html] type: testharness - [grid-2.gridTemplateRows] + [grid-3.height] expected: FAIL - [grid-4.gridTemplateRows] + [grid-3.gridTemplateRows] expected: FAIL - [grid-8.gridTemplateRows] + [grid-9.height] expected: FAIL - [grid-10.gridTemplateRows] - expected: FAIL - - [grid-12.gridTemplateRows] + [grid-9.gridTemplateRows] expected: FAIL diff --git a/testing/web-platform/meta/css/css-logical-properties-1/logicalprops-quirklength.html.ini b/testing/web-platform/meta/css/css-logical-properties-1/logicalprops-quirklength.html.ini new file mode 100644 index 000000000000..7c5f5dd33206 --- /dev/null +++ b/testing/web-platform/meta/css/css-logical-properties-1/logicalprops-quirklength.html.ini @@ -0,0 +1,3 @@ +[logicalprops-quirklength.html] + type: testharness + expected: ERROR diff --git a/testing/web-platform/meta/css/css-shapes-1/shape-outside/values/shape-outside-circle-010.html.ini b/testing/web-platform/meta/css/css-shapes-1/shape-outside/values/shape-outside-circle-010.html.ini index 882d5aacad6c..0232f93af7bf 100644 --- a/testing/web-platform/meta/css/css-shapes-1/shape-outside/values/shape-outside-circle-010.html.ini +++ b/testing/web-platform/meta/css/css-shapes-1/shape-outside/values/shape-outside-circle-010.html.ini @@ -31,4 +31,3 @@ [circle(calc(25%*3)) - computed style] expected: FAIL - diff --git a/testing/web-platform/meta/css/css-shapes-1/shape-outside/values/shape-outside-circle-011.html.ini b/testing/web-platform/meta/css/css-shapes-1/shape-outside/values/shape-outside-circle-011.html.ini index c5329fb1c634..945591d8c720 100644 --- a/testing/web-platform/meta/css/css-shapes-1/shape-outside/values/shape-outside-circle-011.html.ini +++ b/testing/web-platform/meta/css/css-shapes-1/shape-outside/values/shape-outside-circle-011.html.ini @@ -43,4 +43,3 @@ [circle(at calc((12.5%*6 + 10in) / 4)) - computed style] expected: FAIL - diff --git a/testing/web-platform/meta/css/css-shapes-1/shape-outside/values/shape-outside-ellipse-010.html.ini b/testing/web-platform/meta/css/css-shapes-1/shape-outside/values/shape-outside-ellipse-010.html.ini index df946503398b..f232c0c91ebc 100644 --- a/testing/web-platform/meta/css/css-shapes-1/shape-outside/values/shape-outside-ellipse-010.html.ini +++ b/testing/web-platform/meta/css/css-shapes-1/shape-outside/values/shape-outside-ellipse-010.html.ini @@ -105,4 +105,3 @@ [ellipse(calc(25%*3) calc(25%*3)) - computed style] expected: FAIL - diff --git a/testing/web-platform/meta/css/css-shapes-1/shape-outside/values/shape-outside-ellipse-011.html.ini b/testing/web-platform/meta/css/css-shapes-1/shape-outside/values/shape-outside-ellipse-011.html.ini index 231a7a91adde..d2600ab2eeca 100644 --- a/testing/web-platform/meta/css/css-shapes-1/shape-outside/values/shape-outside-ellipse-011.html.ini +++ b/testing/web-platform/meta/css/css-shapes-1/shape-outside/values/shape-outside-ellipse-011.html.ini @@ -118,4 +118,3 @@ expected: if stylo: PASS FAIL - diff --git a/testing/web-platform/meta/css/css-shapes-1/shape-outside/values/shape-outside-inset-008.html.ini b/testing/web-platform/meta/css/css-shapes-1/shape-outside/values/shape-outside-inset-008.html.ini index faddd7b6f5b1..fddbb0175e92 100644 --- a/testing/web-platform/meta/css/css-shapes-1/shape-outside/values/shape-outside-inset-008.html.ini +++ b/testing/web-platform/meta/css/css-shapes-1/shape-outside/values/shape-outside-inset-008.html.ini @@ -73,4 +73,3 @@ [inset(calc(25%*3) calc(25%*3)) - computed style] expected: FAIL - diff --git a/testing/web-platform/meta/css/css-shapes-1/shape-outside/values/shape-outside-polygon-006.html.ini b/testing/web-platform/meta/css/css-shapes-1/shape-outside/values/shape-outside-polygon-006.html.ini index e6be862e4097..e10c95d11936 100644 --- a/testing/web-platform/meta/css/css-shapes-1/shape-outside/values/shape-outside-polygon-006.html.ini +++ b/testing/web-platform/meta/css/css-shapes-1/shape-outside/values/shape-outside-polygon-006.html.ini @@ -63,4 +63,3 @@ [polygon(evenodd, calc(25%*3) calc(25%*3), calc(25%*3) calc(25%*3)) - computed style] expected: FAIL - diff --git a/testing/web-platform/meta/css/css-text-3/white-space/pre-wrap-010.html.ini b/testing/web-platform/meta/css/css-text-3/white-space/pre-wrap-010.html.ini deleted file mode 100644 index eb6b909624af..000000000000 --- a/testing/web-platform/meta/css/css-text-3/white-space/pre-wrap-010.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[pre-wrap-010.html] - type: reftest - expected: FAIL diff --git a/testing/web-platform/meta/css/css-text-3/white-space/textarea-pre-wrap-008.html.ini b/testing/web-platform/meta/css/css-text-3/white-space/textarea-pre-wrap-008.html.ini deleted file mode 100644 index efd6e6bb5e14..000000000000 --- a/testing/web-platform/meta/css/css-text-3/white-space/textarea-pre-wrap-008.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[textarea-pre-wrap-008.html] - type: reftest - expected: FAIL diff --git a/testing/web-platform/meta/css/css-text-3/white-space/textarea-pre-wrap-010.html.ini b/testing/web-platform/meta/css/css-text-3/white-space/textarea-pre-wrap-010.html.ini deleted file mode 100644 index c419ea3f576c..000000000000 --- a/testing/web-platform/meta/css/css-text-3/white-space/textarea-pre-wrap-010.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[textarea-pre-wrap-010.html] - type: reftest - expected: FAIL diff --git a/testing/web-platform/meta/css/css-ui-3/caret-color-020.html.ini b/testing/web-platform/meta/css/css-ui-3/caret-color-020.html.ini new file mode 100644 index 000000000000..216bdca28221 --- /dev/null +++ b/testing/web-platform/meta/css/css-ui-3/caret-color-020.html.ini @@ -0,0 +1,5 @@ +[caret-color-020.html] + type: testharness + [caret-color: currentcolor is interpolable] + expected: FAIL + diff --git a/testing/web-platform/meta/css/css-text-3/white-space/pre-wrap-008.html.ini b/testing/web-platform/meta/css/css-ui-3/text-overflow-006.html.ini similarity index 56% rename from testing/web-platform/meta/css/css-text-3/white-space/pre-wrap-008.html.ini rename to testing/web-platform/meta/css/css-ui-3/text-overflow-006.html.ini index 3bbd8fae1962..dc797ebfc6f4 100644 --- a/testing/web-platform/meta/css/css-text-3/white-space/pre-wrap-008.html.ini +++ b/testing/web-platform/meta/css/css-ui-3/text-overflow-006.html.ini @@ -1,3 +1,3 @@ -[pre-wrap-008.html] +[text-overflow-006.html] type: reftest expected: FAIL diff --git a/testing/web-platform/meta/css/css-values-3/vh_not_refreshing_on_chrome.html.ini b/testing/web-platform/meta/css/css-values-3/vh_not_refreshing_on_chrome.html.ini new file mode 100644 index 000000000000..f5ba362c0538 --- /dev/null +++ b/testing/web-platform/meta/css/css-values-3/vh_not_refreshing_on_chrome.html.ini @@ -0,0 +1,3 @@ +[vh_not_refreshing_on_chrome.html] + type: reftest + expected: FAIL diff --git a/testing/web-platform/meta/css/geometry-1/spec-examples.html.ini b/testing/web-platform/meta/css/geometry-1/spec-examples.html.ini deleted file mode 100644 index 682d571e9190..000000000000 --- a/testing/web-platform/meta/css/geometry-1/spec-examples.html.ini +++ /dev/null @@ -1,14 +0,0 @@ -[spec-examples.html] - type: testharness - [matrixTransform] - expected: FAIL - - [DOMQuad] - expected: FAIL - - [DOMQuad irregular] - expected: FAIL - - [DOMMatrix NaN] - expected: FAIL - diff --git a/testing/web-platform/meta/cssom-view/interfaces.html.ini b/testing/web-platform/meta/cssom-view/interfaces.html.ini deleted file mode 100644 index da6509a76092..000000000000 --- a/testing/web-platform/meta/cssom-view/interfaces.html.ini +++ /dev/null @@ -1,8 +0,0 @@ -[interfaces.html] - type: testharness - [Screen interface: existence and properties of interface object] - expected: FAIL - - [Screen interface: existence and properties of interface prototype object] - expected: FAIL - diff --git a/testing/web-platform/meta/cssom-view/scrollintoview.html.ini b/testing/web-platform/meta/cssom-view/scrollintoview.html.ini deleted file mode 100644 index a2240f8e6137..000000000000 --- a/testing/web-platform/meta/cssom-view/scrollintoview.html.ini +++ /dev/null @@ -1,38 +0,0 @@ -[scrollintoview.html] - type: testharness - [scrollIntoView({block: "center", inline: "center"}) starting at left,top] - expected: FAIL - - [scrollIntoView({block: "center", inline: "center"}) starting at left,bottom] - expected: FAIL - - [scrollIntoView({block: "center", inline: "center"}) starting at right,top] - expected: FAIL - - [scrollIntoView({block: "center", inline: "center"}) starting at right,bottom] - expected: FAIL - - [scrollIntoView({block: "start", inline: "start"}) starting at left,top] - expected: FAIL - - [scrollIntoView({block: "start", inline: "start"}) starting at left,bottom] - expected: FAIL - - [scrollIntoView({block: "end", inline: "end"}) starting at right,top] - expected: FAIL - - [scrollIntoView({block: "end", inline: "end"}) starting at right,bottom] - expected: FAIL - - [scrollIntoView({block: "nearest", inline: "nearest"}) starting at left,top] - expected: FAIL - - [scrollIntoView({block: "nearest", inline: "nearest"}) starting at left,bottom] - expected: FAIL - - [scrollIntoView({block: "nearest", inline: "nearest"}) starting at right,top] - expected: FAIL - - [scrollIntoView({block: "nearest", inline: "nearest"}) starting at right,bottom] - expected: FAIL - diff --git a/testing/web-platform/meta/cssom/getComputedStyle-pseudo.html.ini b/testing/web-platform/meta/cssom/getComputedStyle-pseudo.html.ini index c5e49d935c62..0ff94a4840c0 100644 --- a/testing/web-platform/meta/cssom/getComputedStyle-pseudo.html.ini +++ b/testing/web-platform/meta/cssom/getComputedStyle-pseudo.html.ini @@ -4,4 +4,3 @@ [Item-based blockification of nonexistent pseudo-elements] expected: if stylo: FAIL - diff --git a/testing/web-platform/meta/cssom/interfaces.html.ini b/testing/web-platform/meta/cssom/interfaces.html.ini index 20674c2ce8e3..33564bd534da 100644 --- a/testing/web-platform/meta/cssom/interfaces.html.ini +++ b/testing/web-platform/meta/cssom/interfaces.html.ini @@ -117,243 +117,3 @@ [CSSStyleDeclaration interface: operation setPropertyPriority(DOMString, DOMString)] expected: FAIL - [CSSRule interface: style_element.sheet.cssRules[4\] must inherit property "MARGIN_RULE" with the proper type] - expected: FAIL - - [CSSPageRule interface: style_element.sheet.cssRules[2\] must inherit property "selectorText" with the proper type] - expected: FAIL - - [CSSGroupingRule interface: style_element.sheet.cssRules[2\] must inherit property "cssRules" with the proper type] - expected: FAIL - - [CSSGroupingRule interface: style_element.sheet.cssRules[2\] must inherit property "insertRule(CSSOMString, unsigned long)" with the proper type] - expected: FAIL - - [CSSGroupingRule interface: calling insertRule(CSSOMString, unsigned long) on style_element.sheet.cssRules[2\] with too few arguments must throw TypeError] - expected: FAIL - - [CSSGroupingRule interface: style_element.sheet.cssRules[2\] must inherit property "deleteRule(unsigned long)" with the proper type] - expected: FAIL - - [CSSGroupingRule interface: calling deleteRule(unsigned long) on style_element.sheet.cssRules[2\] with too few arguments must throw TypeError] - expected: FAIL - - [CSSRule interface: style_element.sheet.cssRules[2\] must inherit property "MARGIN_RULE" with the proper type] - expected: FAIL - - [CSSMarginRule must be primary interface of style_element.sheet.cssRules[2\].cssRules[0\]] - expected: FAIL - - [Stringification of style_element.sheet.cssRules[2\].cssRules[0\]] - expected: FAIL - - [CSSMarginRule interface: style_element.sheet.cssRules[2\].cssRules[0\] must inherit property "name" with the proper type] - expected: FAIL - - [CSSMarginRule interface: style_element.sheet.cssRules[2\].cssRules[0\] must inherit property "style" with the proper type] - expected: FAIL - - [CSSRule interface: style_element.sheet.cssRules[2\].cssRules[0\] must inherit property "STYLE_RULE" with the proper type] - expected: FAIL - - [CSSRule interface: style_element.sheet.cssRules[2\].cssRules[0\] must inherit property "CHARSET_RULE" with the proper type] - expected: FAIL - - [CSSRule interface: style_element.sheet.cssRules[2\].cssRules[0\] must inherit property "IMPORT_RULE" with the proper type] - expected: FAIL - - [CSSRule interface: style_element.sheet.cssRules[2\].cssRules[0\] must inherit property "MEDIA_RULE" with the proper type] - expected: FAIL - - [CSSRule interface: style_element.sheet.cssRules[2\].cssRules[0\] must inherit property "FONT_FACE_RULE" with the proper type] - expected: FAIL - - [CSSRule interface: style_element.sheet.cssRules[2\].cssRules[0\] must inherit property "PAGE_RULE" with the proper type] - expected: FAIL - - [CSSRule interface: style_element.sheet.cssRules[2\].cssRules[0\] must inherit property "MARGIN_RULE" with the proper type] - expected: FAIL - - [CSSRule interface: style_element.sheet.cssRules[2\].cssRules[0\] must inherit property "NAMESPACE_RULE" with the proper type] - expected: FAIL - - [CSSRule interface: style_element.sheet.cssRules[2\].cssRules[0\] must inherit property "type" with the proper type] - expected: FAIL - - [CSSRule interface: style_element.sheet.cssRules[2\].cssRules[0\] must inherit property "cssText" with the proper type] - expected: FAIL - - [CSSRule interface: style_element.sheet.cssRules[2\].cssRules[0\] must inherit property "parentRule" with the proper type] - expected: FAIL - - [CSSRule interface: style_element.sheet.cssRules[2\].cssRules[0\] must inherit property "parentStyleSheet" with the proper type] - expected: FAIL - - [CSSNamespaceRule interface: style_element.sheet.cssRules[1\] must inherit property "namespaceURI" with the proper type] - expected: FAIL - - [CSSNamespaceRule interface: style_element.sheet.cssRules[1\] must inherit property "prefix" with the proper type] - expected: FAIL - - [CSSRule interface: style_element.sheet.cssRules[1\] must inherit property "MARGIN_RULE" with the proper type] - expected: FAIL - - [CSSStyleDeclaration interface: operation setPropertyValue(CSSOMString, CSSOMString)] - expected: FAIL - - [CSSStyleDeclaration interface: operation setPropertyPriority(CSSOMString, CSSOMString)] - expected: FAIL - - [CSSStyleDeclaration must be primary interface of style_element.sheet.cssRules[4\].style] - expected: FAIL - - [Stringification of style_element.sheet.cssRules[4\].style] - expected: FAIL - - [CSSStyleDeclaration interface: style_element.sheet.cssRules[4\].style must inherit property "setPropertyValue(CSSOMString, CSSOMString)" with the proper type] - expected: FAIL - - [CSSStyleDeclaration interface: calling setPropertyValue(CSSOMString, CSSOMString) on style_element.sheet.cssRules[4\].style with too few arguments must throw TypeError] - expected: FAIL - - [CSSStyleDeclaration interface: style_element.sheet.cssRules[4\].style must inherit property "setPropertyPriority(CSSOMString, CSSOMString)" with the proper type] - expected: FAIL - - [CSSStyleDeclaration interface: calling setPropertyPriority(CSSOMString, CSSOMString) on style_element.sheet.cssRules[4\].style with too few arguments must throw TypeError] - expected: FAIL - - [CSSStyleDeclaration must be primary interface of style_element.sheet.cssRules[2\].style] - expected: FAIL - - [Stringification of style_element.sheet.cssRules[2\].style] - expected: FAIL - - [CSSStyleDeclaration interface: style_element.sheet.cssRules[2\].style must inherit property "setPropertyValue(CSSOMString, CSSOMString)" with the proper type] - expected: FAIL - - [CSSStyleDeclaration interface: calling setPropertyValue(CSSOMString, CSSOMString) on style_element.sheet.cssRules[2\].style with too few arguments must throw TypeError] - expected: FAIL - - [CSSStyleDeclaration interface: style_element.sheet.cssRules[2\].style must inherit property "setPropertyPriority(CSSOMString, CSSOMString)" with the proper type] - expected: FAIL - - [CSSStyleDeclaration interface: calling setPropertyPriority(CSSOMString, CSSOMString) on style_element.sheet.cssRules[2\].style with too few arguments must throw TypeError] - expected: FAIL - - [CSSStyleDeclaration must be primary interface of style_element.sheet.cssRules[2\].cssRules[0\].style] - expected: FAIL - - [Stringification of style_element.sheet.cssRules[2\].cssRules[0\].style] - expected: FAIL - - [CSSStyleDeclaration interface: style_element.sheet.cssRules[2\].cssRules[0\].style must inherit property "cssText" with the proper type] - expected: FAIL - - [CSSStyleDeclaration interface: style_element.sheet.cssRules[2\].cssRules[0\].style must inherit property "length" with the proper type] - expected: FAIL - - [CSSStyleDeclaration interface: style_element.sheet.cssRules[2\].cssRules[0\].style must inherit property "item(unsigned long)" with the proper type] - expected: FAIL - - [CSSStyleDeclaration interface: calling item(unsigned long) on style_element.sheet.cssRules[2\].cssRules[0\].style with too few arguments must throw TypeError] - expected: FAIL - - [CSSStyleDeclaration interface: style_element.sheet.cssRules[2\].cssRules[0\].style must inherit property "getPropertyValue(CSSOMString)" with the proper type] - expected: FAIL - - [CSSStyleDeclaration interface: calling getPropertyValue(CSSOMString) on style_element.sheet.cssRules[2\].cssRules[0\].style with too few arguments must throw TypeError] - expected: FAIL - - [CSSStyleDeclaration interface: style_element.sheet.cssRules[2\].cssRules[0\].style must inherit property "getPropertyPriority(CSSOMString)" with the proper type] - expected: FAIL - - [CSSStyleDeclaration interface: calling getPropertyPriority(CSSOMString) on style_element.sheet.cssRules[2\].cssRules[0\].style with too few arguments must throw TypeError] - expected: FAIL - - [CSSStyleDeclaration interface: style_element.sheet.cssRules[2\].cssRules[0\].style must inherit property "setProperty(CSSOMString, CSSOMString, CSSOMString)" with the proper type] - expected: FAIL - - [CSSStyleDeclaration interface: calling setProperty(CSSOMString, CSSOMString, CSSOMString) on style_element.sheet.cssRules[2\].cssRules[0\].style with too few arguments must throw TypeError] - expected: FAIL - - [CSSStyleDeclaration interface: style_element.sheet.cssRules[2\].cssRules[0\].style must inherit property "setPropertyValue(CSSOMString, CSSOMString)" with the proper type] - expected: FAIL - - [CSSStyleDeclaration interface: calling setPropertyValue(CSSOMString, CSSOMString) on style_element.sheet.cssRules[2\].cssRules[0\].style with too few arguments must throw TypeError] - expected: FAIL - - [CSSStyleDeclaration interface: style_element.sheet.cssRules[2\].cssRules[0\].style must inherit property "setPropertyPriority(CSSOMString, CSSOMString)" with the proper type] - expected: FAIL - - [CSSStyleDeclaration interface: calling setPropertyPriority(CSSOMString, CSSOMString) on style_element.sheet.cssRules[2\].cssRules[0\].style with too few arguments must throw TypeError] - expected: FAIL - - [CSSStyleDeclaration interface: style_element.sheet.cssRules[2\].cssRules[0\].style must inherit property "removeProperty(CSSOMString)" with the proper type] - expected: FAIL - - [CSSStyleDeclaration interface: calling removeProperty(CSSOMString) on style_element.sheet.cssRules[2\].cssRules[0\].style with too few arguments must throw TypeError] - expected: FAIL - - [CSSStyleDeclaration interface: style_element.sheet.cssRules[2\].cssRules[0\].style must inherit property "parentRule" with the proper type] - expected: FAIL - - [CSSStyleDeclaration interface: style_element.sheet.cssRules[2\].cssRules[0\].style must inherit property "cssFloat" with the proper type] - expected: FAIL - - [CSSStyleDeclaration must be primary interface of style_element.style] - expected: FAIL - - [Stringification of style_element.style] - expected: FAIL - - [CSSStyleDeclaration interface: style_element.style must inherit property "setPropertyValue(CSSOMString, CSSOMString)" with the proper type] - expected: FAIL - - [CSSStyleDeclaration interface: calling setPropertyValue(CSSOMString, CSSOMString) on style_element.style with too few arguments must throw TypeError] - expected: FAIL - - [CSSStyleDeclaration interface: style_element.style must inherit property "setPropertyPriority(CSSOMString, CSSOMString)" with the proper type] - expected: FAIL - - [CSSStyleDeclaration interface: calling setPropertyPriority(CSSOMString, CSSOMString) on style_element.style with too few arguments must throw TypeError] - expected: FAIL - - [CSSStyleDeclaration must be primary interface of svg_element.style] - expected: FAIL - - [Stringification of svg_element.style] - expected: FAIL - - [CSSStyleDeclaration interface: svg_element.style must inherit property "setPropertyValue(CSSOMString, CSSOMString)" with the proper type] - expected: FAIL - - [CSSStyleDeclaration interface: calling setPropertyValue(CSSOMString, CSSOMString) on svg_element.style with too few arguments must throw TypeError] - expected: FAIL - - [CSSStyleDeclaration interface: svg_element.style must inherit property "setPropertyPriority(CSSOMString, CSSOMString)" with the proper type] - expected: FAIL - - [CSSStyleDeclaration interface: calling setPropertyPriority(CSSOMString, CSSOMString) on svg_element.style with too few arguments must throw TypeError] - expected: FAIL - - [CSSStyleDeclaration must be primary interface of getComputedStyle(svg_element)] - expected: FAIL - - [Stringification of getComputedStyle(svg_element)] - expected: FAIL - - [CSSStyleDeclaration interface: getComputedStyle(svg_element) must inherit property "setPropertyValue(CSSOMString, CSSOMString)" with the proper type] - expected: FAIL - - [CSSStyleDeclaration interface: calling setPropertyValue(CSSOMString, CSSOMString) on getComputedStyle(svg_element) with too few arguments must throw TypeError] - expected: FAIL - - [CSSStyleDeclaration interface: getComputedStyle(svg_element) must inherit property "setPropertyPriority(CSSOMString, CSSOMString)" with the proper type] - expected: FAIL - - [CSSStyleDeclaration interface: calling setPropertyPriority(CSSOMString, CSSOMString) on getComputedStyle(svg_element) with too few arguments must throw TypeError] - expected: FAIL - - [CSS interface: operation escape(CSSOMString)] - expected: FAIL - diff --git a/testing/web-platform/meta/encrypted-media/encrypted-media-default-feature-policy.https.sub.html.ini b/testing/web-platform/meta/encrypted-media/encrypted-media-default-feature-policy.https.sub.html.ini deleted file mode 100644 index d32e2b45b3f4..000000000000 --- a/testing/web-platform/meta/encrypted-media/encrypted-media-default-feature-policy.https.sub.html.ini +++ /dev/null @@ -1,12 +0,0 @@ -[encrypted-media-default-feature-policy.https.sub.html] - type: testharness - expected: TIMEOUT - [Default "encrypted-media" feature policy ["self"\] allows same-origin iframes.] - expected: TIMEOUT - - [Default "encrypted-media" feature policy ["self"\] disallows cross-origin iframes.] - expected: FAIL - - [Feature policy "encrypted-media" can be enabled in cross-origin iframes using "allow" attribute.] - expected: FAIL - diff --git a/testing/web-platform/meta/fetch/api/cors/cors-expose-star-worker.html.ini b/testing/web-platform/meta/fetch/api/cors/cors-expose-star-worker.html.ini index 41256db968d9..13682015a61d 100644 --- a/testing/web-platform/meta/fetch/api/cors/cors-expose-star-worker.html.ini +++ b/testing/web-platform/meta/fetch/api/cors/cors-expose-star-worker.html.ini @@ -3,6 +3,3 @@ [Basic Access-Control-Expose-Headers: * support] expected: FAIL - [* can be one of several values] - expected: FAIL - diff --git a/testing/web-platform/meta/fetch/api/cors/cors-expose-star.html.ini b/testing/web-platform/meta/fetch/api/cors/cors-expose-star.html.ini index 2dcee9d9ad6a..ca034df2169a 100644 --- a/testing/web-platform/meta/fetch/api/cors/cors-expose-star.html.ini +++ b/testing/web-platform/meta/fetch/api/cors/cors-expose-star.html.ini @@ -3,6 +3,3 @@ [Basic Access-Control-Expose-Headers: * support] expected: FAIL - [* can be one of several values] - expected: FAIL - diff --git a/testing/web-platform/meta/fetch/api/headers/headers-basic.html.ini b/testing/web-platform/meta/fetch/api/headers/headers-basic.html.ini index 0321618e55a0..4012104a5d48 100644 --- a/testing/web-platform/meta/fetch/api/headers/headers-basic.html.ini +++ b/testing/web-platform/meta/fetch/api/headers/headers-basic.html.ini @@ -1,5 +1,6 @@ [headers-basic.html] type: testharness + [Create headers with existing headers with custom iterator] expected: FAIL diff --git a/testing/web-platform/meta/generic-sensor/idlharness.https.html.ini b/testing/web-platform/meta/generic-sensor/idlharness.html.ini similarity index 62% rename from testing/web-platform/meta/generic-sensor/idlharness.https.html.ini rename to testing/web-platform/meta/generic-sensor/idlharness.html.ini index 1556ba8447c0..48194ab395cf 100644 --- a/testing/web-platform/meta/generic-sensor/idlharness.https.html.ini +++ b/testing/web-platform/meta/generic-sensor/idlharness.html.ini @@ -1,4 +1,4 @@ -[idlharness.https.html] +[idlharness.html] type: testharness [SensorErrorEvent interface: existence and properties of interface object] expected: FAIL @@ -18,12 +18,24 @@ [SensorErrorEvent interface: attribute error] expected: FAIL + [SensorErrorEvent must be primary interface of new SensorErrorEvent({ error: new TypeError("Boom!") });] + expected: FAIL + + [Stringification of new SensorErrorEvent({ error: new TypeError("Boom!") });] + expected: FAIL + + [SensorErrorEvent interface: new SensorErrorEvent({ error: new TypeError("Boom!") }); must inherit property "error" with the proper type (0)] + expected: FAIL + [SensorErrorEvent must be primary interface of new SensorErrorEvent("SECURITY_ERR", { errorCode: 18 });] expected: FAIL [Stringification of new SensorErrorEvent("SECURITY_ERR", { errorCode: 18 });] expected: FAIL + [SensorErrorEvent interface: new SensorErrorEvent("SECURITY_ERR", { errorCode: 18 }); must inherit property "error" with the proper type (0)] + expected: FAIL + [SensorErrorEvent interface: new SensorErrorEvent("SECURITY_ERR", { errorCode: 18 }); must inherit property "error" with the proper type] expected: FAIL diff --git a/testing/web-platform/meta/gyroscope/idlharness.https.html.ini b/testing/web-platform/meta/gyroscope/idlharness.https.html.ini index a401a70adaa0..7a0e55d640f3 100644 --- a/testing/web-platform/meta/gyroscope/idlharness.https.html.ini +++ b/testing/web-platform/meta/gyroscope/idlharness.https.html.ini @@ -123,60 +123,3 @@ [Gyroscope interface: new Gyroscope(); must inherit property "z" with the proper type] expected: FAIL - [Sensor interface: existence and properties of interface object] - expected: FAIL - - [Sensor interface object length] - expected: FAIL - - [Sensor interface object name] - expected: FAIL - - [Sensor interface: existence and properties of interface prototype object] - expected: FAIL - - [Sensor interface: existence and properties of interface prototype object's "constructor" property] - expected: FAIL - - [Sensor interface: attribute activated] - expected: FAIL - - [Sensor interface: attribute timestamp] - expected: FAIL - - [Sensor interface: operation start()] - expected: FAIL - - [Sensor interface: operation stop()] - expected: FAIL - - [Sensor interface: attribute onreading] - expected: FAIL - - [Sensor interface: attribute onactivate] - expected: FAIL - - [Sensor interface: attribute onerror] - expected: FAIL - - [Sensor interface: new Gyroscope(); must inherit property "activated" with the proper type] - expected: FAIL - - [Sensor interface: new Gyroscope(); must inherit property "timestamp" with the proper type] - expected: FAIL - - [Sensor interface: new Gyroscope(); must inherit property "start()" with the proper type] - expected: FAIL - - [Sensor interface: new Gyroscope(); must inherit property "stop()" with the proper type] - expected: FAIL - - [Sensor interface: new Gyroscope(); must inherit property "onreading" with the proper type] - expected: FAIL - - [Sensor interface: new Gyroscope(); must inherit property "onactivate" with the proper type] - expected: FAIL - - [Sensor interface: new Gyroscope(); must inherit property "onerror" with the proper type] - expected: FAIL - diff --git a/testing/web-platform/meta/html/dom/interfaces.html.ini b/testing/web-platform/meta/html/dom/interfaces.html.ini index bc1c6c5350b7..5ecd2015720d 100644 --- a/testing/web-platform/meta/html/dom/interfaces.html.ini +++ b/testing/web-platform/meta/html/dom/interfaces.html.ini @@ -4354,6 +4354,3 @@ [HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onunhandledrejection" with the proper type] expected: FAIL - [Test driver] - expected: FAIL - diff --git a/testing/web-platform/meta/html/dom/interfaces.worker.js.ini b/testing/web-platform/meta/html/dom/interfaces.worker.js.ini index cd3713f992d7..8f19116d7a65 100644 --- a/testing/web-platform/meta/html/dom/interfaces.worker.js.ini +++ b/testing/web-platform/meta/html/dom/interfaces.worker.js.ini @@ -74,7 +74,6 @@ [WorkerGlobalScope interface: self must inherit property "onlanguagechange" with the proper type (5)] expected: FAIL - [CanvasGradient interface: existence and properties of interface object] expected: FAIL @@ -425,7 +424,3 @@ [WorkerGlobalScope interface: self must inherit property "onunhandledrejection" with the proper type] expected: FAIL - - [Test driver] - expected: FAIL - diff --git a/testing/web-platform/meta/html/infrastructure/common-dom-interfaces/collections/htmlallcollection.html.ini b/testing/web-platform/meta/html/infrastructure/common-dom-interfaces/collections/htmlallcollection.html.ini index f1a65cdc0677..60f4f0ecad7c 100644 --- a/testing/web-platform/meta/html/infrastructure/common-dom-interfaces/collections/htmlallcollection.html.ini +++ b/testing/web-platform/meta/html/infrastructure/common-dom-interfaces/collections/htmlallcollection.html.ini @@ -24,9 +24,3 @@ [collections are new live HTMLCollection instances] expected: FAIL - [legacy caller with undefined] - expected: FAIL - - [item method with undefined] - expected: FAIL - diff --git a/testing/web-platform/meta/html/semantics/document-metadata/the-style-element/style_type.html.ini b/testing/web-platform/meta/html/semantics/document-metadata/the-style-element/style_type.html.ini deleted file mode 100644 index 03cd84bae40a..000000000000 --- a/testing/web-platform/meta/html/semantics/document-metadata/the-style-element/style_type.html.ini +++ /dev/null @@ -1,8 +0,0 @@ -[style_type.html] - type: testharness - [With a whitespace-surrounded type attribute, the style should not apply] - expected: FAIL - - [With a charset parameter in the type attribute, the style should not apply] - expected: FAIL - diff --git a/testing/web-platform/meta/html/semantics/embedded-content/media-elements/track/track-element/track-cue-order.html.ini b/testing/web-platform/meta/html/semantics/embedded-content/media-elements/track/track-element/track-cue-order.html.ini deleted file mode 100644 index e4cde8471f2d..000000000000 --- a/testing/web-platform/meta/html/semantics/embedded-content/media-elements/track/track-element/track-cue-order.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[track-cue-order.html] - type: testharness - [Text track cue order, equal start and end times with startTime mutations.] - expected: FAIL - diff --git a/testing/web-platform/meta/html/semantics/interfaces.html.ini b/testing/web-platform/meta/html/semantics/interfaces.html.ini index f191cad52f01..8d6b945c39c6 100644 --- a/testing/web-platform/meta/html/semantics/interfaces.html.ini +++ b/testing/web-platform/meta/html/semantics/interfaces.html.ini @@ -34,3 +34,9 @@ [Interfaces for Ã¥-bar] expected: FAIL + [Interfaces for applet] + expected: FAIL + + [Interfaces for APPLET] + expected: FAIL + diff --git a/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/script-languages-01.html.ini b/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/script-languages-01.html.ini new file mode 100644 index 000000000000..83477b02edc3 --- /dev/null +++ b/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/script-languages-01.html.ini @@ -0,0 +1,8 @@ +[script-languages-01.html] + type: testharness + [Script @type: unknown parameters] + expected: FAIL + + [Script @type: unknown parameters 1] + expected: FAIL + diff --git a/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/script-type-and-language-js.html.ini b/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/script-languages-02.html.ini similarity index 99% rename from testing/web-platform/meta/html/semantics/scripting-1/the-script-element/script-type-and-language-js.html.ini rename to testing/web-platform/meta/html/semantics/scripting-1/the-script-element/script-languages-02.html.ini index bf1bf09ca5cb..084e23469512 100644 --- a/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/script-type-and-language-js.html.ini +++ b/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/script-languages-02.html.ini @@ -1,4 +1,4 @@ -[script-type-and-language-js.html] +[script-languages-02.html] type: testharness [Script should run with type="application/ecmascript\\f"] expected: FAIL diff --git a/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/script-type-and-language-with-params.html.ini b/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/script-type-and-language-with-params.html.ini deleted file mode 100644 index 546e56275961..000000000000 --- a/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/script-type-and-language-with-params.html.ini +++ /dev/null @@ -1,11 +0,0 @@ -[script-type-and-language-with-params.html] - type: testharness - [A script with a charset param in its type should not run] - expected: FAIL - - [A script with an x-test param in its type should not run] - expected: FAIL - - [A script with a charset param in its type should not run, even with language=javascript] - expected: FAIL - diff --git a/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content.html.ini b/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content.html.ini new file mode 100644 index 000000000000..2d2b29bf2847 --- /dev/null +++ b/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content.html.ini @@ -0,0 +1,23 @@ +[content.html] + type: testharness + [%s instead of domain name should throw SYNTAX_ERR] + expected: FAIL + + [%s instead of subdomain name should throw syntax_err] + expected: FAIL + + [a url argument pointing to a different domain name, without %s should throw SYNTAX_ERR] + expected: FAIL + + [attempting to override the image/jpeg MIME type should throw SECURITY_ERR] + expected: FAIL + + [attempting to override the text/html MIME type should throw SECURITY_ERR] + expected: FAIL + + [attempting to override the text/javascript MIME type should throw SECURITY_ERR] + expected: FAIL + + [attempting to override the text/plain MIME type should throw SECURITY_ERR] + expected: FAIL + diff --git a/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content/001.xhtml.ini b/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content/001.xhtml.ini new file mode 100644 index 000000000000..3e0823f0cbbd --- /dev/null +++ b/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content/001.xhtml.ini @@ -0,0 +1,5 @@ +[001.xhtml] + type: testharness + [isContentHandlerRegistered for new content type] + expected: FAIL + diff --git a/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content/002.xhtml.ini b/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content/002.xhtml.ini new file mode 100644 index 000000000000..a84ad5040d9a --- /dev/null +++ b/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content/002.xhtml.ini @@ -0,0 +1,5 @@ +[002.xhtml] + type: testharness + [isContentHandlerRegistered for content type that is not yet accepted] + expected: FAIL + diff --git a/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content/003.xhtml.ini b/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content/003.xhtml.ini new file mode 100644 index 000000000000..723c18f52f58 --- /dev/null +++ b/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content/003.xhtml.ini @@ -0,0 +1,5 @@ +[003.xhtml] + type: testharness + [Content type case insensitivity in isContentHandlerRegistered] + expected: FAIL + diff --git a/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content/004.xhtml.ini b/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content/004.xhtml.ini new file mode 100644 index 000000000000..91905d892209 --- /dev/null +++ b/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content/004.xhtml.ini @@ -0,0 +1,5 @@ +[004.xhtml] + type: testharness + [Non-matching url in isContentHandlerRegistered] + expected: FAIL + diff --git a/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content/005.xhtml.ini b/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content/005.xhtml.ini new file mode 100644 index 000000000000..99a8c7540f45 --- /dev/null +++ b/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content/005.xhtml.ini @@ -0,0 +1,5 @@ +[005.xhtml] + type: testharness + [Invalid characters in content type in isContentHandlerRegistered] + expected: FAIL + diff --git a/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content/006.xhtml.ini b/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content/006.xhtml.ini new file mode 100644 index 000000000000..a768ca307883 --- /dev/null +++ b/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/content/006.xhtml.ini @@ -0,0 +1,5 @@ +[006.xhtml] + type: testharness + [Blacklisted content type and isContentHandlerRegistered] + expected: FAIL + diff --git a/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/historical.window.js.ini b/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/historical.window.js.ini deleted file mode 100644 index d3605aa9c07d..000000000000 --- a/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/historical.window.js.ini +++ /dev/null @@ -1,5 +0,0 @@ -[historical.window.html] - type: testharness - [registerContentHandler() is removed] - expected: FAIL - diff --git a/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/001.xhtml.ini b/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/001.xhtml.ini new file mode 100644 index 000000000000..bc745c6d1ad8 --- /dev/null +++ b/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/001.xhtml.ini @@ -0,0 +1,5 @@ +[001.xhtml] + type: testharness + [isProtocolHandlerRegistered for new protocol] + expected: FAIL + diff --git a/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/002.xhtml.ini b/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/002.xhtml.ini new file mode 100644 index 000000000000..1de86a1cb2b0 --- /dev/null +++ b/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/002.xhtml.ini @@ -0,0 +1,5 @@ +[002.xhtml] + type: testharness + [isProtocolHandlerRegistered for protocol that is not yet accepted] + expected: FAIL + diff --git a/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/003.xhtml.ini b/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/003.xhtml.ini new file mode 100644 index 000000000000..10d85e689270 --- /dev/null +++ b/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/003.xhtml.ini @@ -0,0 +1,5 @@ +[003.xhtml] + type: testharness + [Protocol case insensitivity in isProtocolHandlerRegistered] + expected: FAIL + diff --git a/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/004.xhtml.ini b/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/004.xhtml.ini new file mode 100644 index 000000000000..d0bc1c3b1478 --- /dev/null +++ b/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/004.xhtml.ini @@ -0,0 +1,5 @@ +[004.xhtml] + type: testharness + [Non-matching url in isProtocolHandlerRegistered] + expected: FAIL + diff --git a/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/005.xhtml.ini b/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/005.xhtml.ini new file mode 100644 index 000000000000..da3933852b5b --- /dev/null +++ b/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/005.xhtml.ini @@ -0,0 +1,5 @@ +[005.xhtml] + type: testharness + [Invalid characters in protocol scheme and isProtocolHandlerRegistered] + expected: FAIL + diff --git a/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/006.xhtml.ini b/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/006.xhtml.ini new file mode 100644 index 000000000000..1466324af7de --- /dev/null +++ b/testing/web-platform/meta/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/006.xhtml.ini @@ -0,0 +1,5 @@ +[006.xhtml] + type: testharness + [Scheme outside white list and isProtocolHandlerRegistered] + expected: FAIL + diff --git a/testing/web-platform/meta/input-events/input-events-exec-command.html.ini b/testing/web-platform/meta/input-events/input-events-exec-command.html.ini deleted file mode 100644 index 1fee14e7b80b..000000000000 --- a/testing/web-platform/meta/input-events/input-events-exec-command.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[input-events-exec-command.html] - type: testharness - [execCommand() should only trigger 'input'] - expected: FAIL - diff --git a/testing/web-platform/meta/magnetometer/idlharness.https.html.ini b/testing/web-platform/meta/magnetometer/idlharness.https.html.ini index f4955d0da51f..30f47cddc3c9 100644 --- a/testing/web-platform/meta/magnetometer/idlharness.https.html.ini +++ b/testing/web-platform/meta/magnetometer/idlharness.https.html.ini @@ -198,81 +198,3 @@ [UncalibratedMagnetometer interface: new UncalibratedMagnetometer(); must inherit property "zBias" with the proper type] expected: FAIL - [Sensor interface: existence and properties of interface object] - expected: FAIL - - [Sensor interface object length] - expected: FAIL - - [Sensor interface object name] - expected: FAIL - - [Sensor interface: existence and properties of interface prototype object] - expected: FAIL - - [Sensor interface: existence and properties of interface prototype object's "constructor" property] - expected: FAIL - - [Sensor interface: attribute activated] - expected: FAIL - - [Sensor interface: attribute timestamp] - expected: FAIL - - [Sensor interface: operation start()] - expected: FAIL - - [Sensor interface: operation stop()] - expected: FAIL - - [Sensor interface: attribute onreading] - expected: FAIL - - [Sensor interface: attribute onactivate] - expected: FAIL - - [Sensor interface: attribute onerror] - expected: FAIL - - [Sensor interface: new Magnetometer(); must inherit property "activated" with the proper type] - expected: FAIL - - [Sensor interface: new Magnetometer(); must inherit property "timestamp" with the proper type] - expected: FAIL - - [Sensor interface: new Magnetometer(); must inherit property "start()" with the proper type] - expected: FAIL - - [Sensor interface: new Magnetometer(); must inherit property "stop()" with the proper type] - expected: FAIL - - [Sensor interface: new Magnetometer(); must inherit property "onreading" with the proper type] - expected: FAIL - - [Sensor interface: new Magnetometer(); must inherit property "onactivate" with the proper type] - expected: FAIL - - [Sensor interface: new Magnetometer(); must inherit property "onerror" with the proper type] - expected: FAIL - - [Sensor interface: new UncalibratedMagnetometer(); must inherit property "activated" with the proper type] - expected: FAIL - - [Sensor interface: new UncalibratedMagnetometer(); must inherit property "timestamp" with the proper type] - expected: FAIL - - [Sensor interface: new UncalibratedMagnetometer(); must inherit property "start()" with the proper type] - expected: FAIL - - [Sensor interface: new UncalibratedMagnetometer(); must inherit property "stop()" with the proper type] - expected: FAIL - - [Sensor interface: new UncalibratedMagnetometer(); must inherit property "onreading" with the proper type] - expected: FAIL - - [Sensor interface: new UncalibratedMagnetometer(); must inherit property "onactivate" with the proper type] - expected: FAIL - - [Sensor interface: new UncalibratedMagnetometer(); must inherit property "onerror" with the proper type] - expected: FAIL - diff --git a/testing/web-platform/meta/mediacapture-streams/MediaStream-MediaElement-preload-none.https.html.ini b/testing/web-platform/meta/mediacapture-streams/MediaStream-MediaElement-preload-none.https.html.ini index 5a1b1670b396..63e21b55ddb6 100644 --- a/testing/web-platform/meta/mediacapture-streams/MediaStream-MediaElement-preload-none.https.html.ini +++ b/testing/web-platform/meta/mediacapture-streams/MediaStream-MediaElement-preload-none.https.html.ini @@ -1,31 +1,7 @@ [MediaStream-MediaElement-preload-none.https.html] type: testharness - expected: - if debug and not stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): TIMEOUT - if debug and stylo and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): TIMEOUT - if not debug and stylo and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): TIMEOUT - if not debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): TIMEOUT - if debug and stylo and not e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): TIMEOUT - if not debug and stylo and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): TIMEOUT - if not debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): TIMEOUT - if not debug and not stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): TIMEOUT - if debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): TIMEOUT - if debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): TIMEOUT - if debug and stylo and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): TIMEOUT [Test that preload 'none' is ignored for MediaStream object URL used as src] - expected: - if debug and not stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): TIMEOUT - if debug and stylo and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): TIMEOUT - if not debug and stylo and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): TIMEOUT - if not debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): TIMEOUT - if debug and stylo and not e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): TIMEOUT - if not debug and stylo and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): TIMEOUT - if not debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): TIMEOUT - if not debug and not stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): TIMEOUT - if debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): TIMEOUT - if debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): TIMEOUT - if debug and stylo and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): TIMEOUT - FAIL + expected: FAIL [Test that preload 'none' is ignored for MediaStream used as srcObject] expected: FAIL diff --git a/testing/web-platform/meta/mediacapture-streams/MediaStream-MediaElement-srcObject.https.html.ini b/testing/web-platform/meta/mediacapture-streams/MediaStream-MediaElement-srcObject.https.html.ini index 59f01df9a218..0c94abd5414e 100644 --- a/testing/web-platform/meta/mediacapture-streams/MediaStream-MediaElement-srcObject.https.html.ini +++ b/testing/web-platform/meta/mediacapture-streams/MediaStream-MediaElement-srcObject.https.html.ini @@ -1,6 +1,5 @@ [MediaStream-MediaElement-srcObject.https.html] type: testharness - expected: TIMEOUT [Tests that a MediaStream can be assigned to a video element with srcObject] - expected: TIMEOUT + expected: FAIL diff --git a/testing/web-platform/meta/mediacapture-streams/MediaStream-add-audio-track.https.html.ini b/testing/web-platform/meta/mediacapture-streams/MediaStream-add-audio-track.https.html.ini index b27c348a3049..440fd8cfc70a 100644 --- a/testing/web-platform/meta/mediacapture-streams/MediaStream-add-audio-track.https.html.ini +++ b/testing/web-platform/meta/mediacapture-streams/MediaStream-add-audio-track.https.html.ini @@ -1,6 +1,5 @@ [MediaStream-add-audio-track.https.html] type: testharness - expected: TIMEOUT [Tests that adding a track to a MediaStream works as expected] - expected: TIMEOUT + expected: FAIL diff --git a/testing/web-platform/meta/mediacapture-streams/MediaStream-audio-only.https.html.ini b/testing/web-platform/meta/mediacapture-streams/MediaStream-audio-only.https.html.ini index 1d674dea840c..793c4e22e703 100644 --- a/testing/web-platform/meta/mediacapture-streams/MediaStream-audio-only.https.html.ini +++ b/testing/web-platform/meta/mediacapture-streams/MediaStream-audio-only.https.html.ini @@ -1,6 +1,5 @@ [MediaStream-audio-only.https.html] type: testharness - expected: TIMEOUT [Tests that a MediaStream with exactly one audio track is returned] - expected: TIMEOUT + expected: FAIL diff --git a/testing/web-platform/meta/mediacapture-streams/MediaStream-default-feature-policy.https.sub.html.ini b/testing/web-platform/meta/mediacapture-streams/MediaStream-default-feature-policy.https.sub.html.ini deleted file mode 100644 index 57c04b771528..000000000000 --- a/testing/web-platform/meta/mediacapture-streams/MediaStream-default-feature-policy.https.sub.html.ini +++ /dev/null @@ -1,39 +0,0 @@ -[MediaStream-default-feature-policy.https.sub.html] - type: testharness - expected: TIMEOUT - [Default "microphone" feature policy ["self"\] allows the top-level document.] - expected: FAIL - - [Default "microphone" feature policy ["self"\] allows same-origin iframes.] - expected: TIMEOUT - - [Default "microphone" feature policy ["self"\] disallows cross-origin iframes.] - expected: FAIL - - [Feature policy "microphone" can be enabled in cross-origin iframes using "allow" attribute.] - expected: FAIL - - [Default "camera" feature policy ["self"\] allows the top-level document.] - expected: FAIL - - [Default "camera" feature policy ["self"\] allows same-origin iframes.] - expected: TIMEOUT - - [Default "camera" feature policy ["self"\] disallows cross-origin iframes.] - expected: FAIL - - [Feature policy "camera" can be enabled in cross-origin iframes using "allow" attribute.] - expected: FAIL - - [Default "camera; microphone" feature policy ["self"\] allows the top-level document.] - expected: FAIL - - [Default "camera; microphone" feature policy ["self"\] allows same-origin iframes.] - expected: TIMEOUT - - [Default "camera; microphone" feature policy ["self"\] disallows cross-origin iframes.] - expected: FAIL - - [Feature policy "camera; microphone" can be enabled in cross-origin iframes using "allow" attribute.] - expected: FAIL - diff --git a/testing/web-platform/meta/mediacapture-streams/MediaStream-finished-add.https.html.ini b/testing/web-platform/meta/mediacapture-streams/MediaStream-finished-add.https.html.ini index 7f31d9788225..1a810f4c3d1c 100644 --- a/testing/web-platform/meta/mediacapture-streams/MediaStream-finished-add.https.html.ini +++ b/testing/web-platform/meta/mediacapture-streams/MediaStream-finished-add.https.html.ini @@ -1,6 +1,5 @@ [MediaStream-finished-add.https.html] type: testharness - expected: TIMEOUT [Tests that adding a track to an inactive MediaStream is allowed] - expected: TIMEOUT + expected: FAIL diff --git a/testing/web-platform/meta/mediacapture-streams/MediaStream-idl.https.html.ini b/testing/web-platform/meta/mediacapture-streams/MediaStream-idl.https.html.ini index ad9d8748a083..012da9e8a68c 100644 --- a/testing/web-platform/meta/mediacapture-streams/MediaStream-idl.https.html.ini +++ b/testing/web-platform/meta/mediacapture-streams/MediaStream-idl.https.html.ini @@ -1,6 +1,5 @@ [MediaStream-idl.https.html] type: testharness - expected: TIMEOUT [Tests that a MediaStream constructor follows the algorithm set in the spec] - expected: TIMEOUT + expected: FAIL diff --git a/testing/web-platform/meta/mediacapture-streams/MediaStream-removetrack.https.html.ini b/testing/web-platform/meta/mediacapture-streams/MediaStream-removetrack.https.html.ini index 5c38a8612a84..6f34d4627380 100644 --- a/testing/web-platform/meta/mediacapture-streams/MediaStream-removetrack.https.html.ini +++ b/testing/web-platform/meta/mediacapture-streams/MediaStream-removetrack.https.html.ini @@ -1,6 +1,5 @@ [MediaStream-removetrack.https.html] type: testharness - expected: TIMEOUT [Tests that a removal from a MediaStream works as expected] - expected: TIMEOUT + expected: FAIL diff --git a/testing/web-platform/meta/mediacapture-streams/MediaStream-video-only.https.html.ini b/testing/web-platform/meta/mediacapture-streams/MediaStream-video-only.https.html.ini index 8001395b54c2..395f300f7c7b 100644 --- a/testing/web-platform/meta/mediacapture-streams/MediaStream-video-only.https.html.ini +++ b/testing/web-platform/meta/mediacapture-streams/MediaStream-video-only.https.html.ini @@ -1,6 +1,5 @@ [MediaStream-video-only.https.html] type: testharness - expected: TIMEOUT [Tests that a MediaStream with at least one video track is returned] - expected: TIMEOUT + expected: FAIL diff --git a/testing/web-platform/meta/mediacapture-streams/MediaStreamTrack-MediaElement-disabled-audio-is-silence.https.html.ini b/testing/web-platform/meta/mediacapture-streams/MediaStreamTrack-MediaElement-disabled-audio-is-silence.https.html.ini index 7589ec15d499..bc63660e4064 100644 --- a/testing/web-platform/meta/mediacapture-streams/MediaStreamTrack-MediaElement-disabled-audio-is-silence.https.html.ini +++ b/testing/web-platform/meta/mediacapture-streams/MediaStreamTrack-MediaElement-disabled-audio-is-silence.https.html.ini @@ -1,6 +1,5 @@ [MediaStreamTrack-MediaElement-disabled-audio-is-silence.https.html] type: testharness - expected: TIMEOUT [Tests that a disabled audio track in a MediaStream is rendered as silence] - expected: TIMEOUT + expected: FAIL diff --git a/testing/web-platform/meta/mediacapture-streams/MediaStreamTrack-MediaElement-disabled-video-is-black.https.html.ini b/testing/web-platform/meta/mediacapture-streams/MediaStreamTrack-MediaElement-disabled-video-is-black.https.html.ini index 9ff2cc000cfa..7ac34233bb80 100644 --- a/testing/web-platform/meta/mediacapture-streams/MediaStreamTrack-MediaElement-disabled-video-is-black.https.html.ini +++ b/testing/web-platform/meta/mediacapture-streams/MediaStreamTrack-MediaElement-disabled-video-is-black.https.html.ini @@ -3,6 +3,3 @@ [Tests that a disabled video track in a MediaStream is rendered as blackness] expected: FAIL - [A disabled video track is rendered as blackness] - expected: FAIL - diff --git a/testing/web-platform/meta/mediacapture-streams/MediaStreamTrack-init.https.html.ini b/testing/web-platform/meta/mediacapture-streams/MediaStreamTrack-init.https.html.ini index df077f58e73a..4e847b3fd3c5 100644 --- a/testing/web-platform/meta/mediacapture-streams/MediaStreamTrack-init.https.html.ini +++ b/testing/web-platform/meta/mediacapture-streams/MediaStreamTrack-init.https.html.ini @@ -1,6 +1,5 @@ [MediaStreamTrack-init.https.html] type: testharness - expected: TIMEOUT [Tests that the video MediaStreamTrack objects are properly initialized] - expected: TIMEOUT + expected: FAIL diff --git a/testing/web-platform/meta/orientation-sensor/idlharness.https.html.ini b/testing/web-platform/meta/orientation-sensor/idlharness.https.html.ini index 10e3d9ca2c74..ff9da118017a 100644 --- a/testing/web-platform/meta/orientation-sensor/idlharness.https.html.ini +++ b/testing/web-platform/meta/orientation-sensor/idlharness.https.html.ini @@ -114,81 +114,3 @@ [OrientationSensor interface: new RelativeOrientationSensor(); must inherit property "populateMatrix(RotationMatrixType)" with the proper type] expected: FAIL - [Sensor interface: existence and properties of interface object] - expected: FAIL - - [Sensor interface object length] - expected: FAIL - - [Sensor interface object name] - expected: FAIL - - [Sensor interface: existence and properties of interface prototype object] - expected: FAIL - - [Sensor interface: existence and properties of interface prototype object's "constructor" property] - expected: FAIL - - [Sensor interface: attribute activated] - expected: FAIL - - [Sensor interface: attribute timestamp] - expected: FAIL - - [Sensor interface: operation start()] - expected: FAIL - - [Sensor interface: operation stop()] - expected: FAIL - - [Sensor interface: attribute onreading] - expected: FAIL - - [Sensor interface: attribute onactivate] - expected: FAIL - - [Sensor interface: attribute onerror] - expected: FAIL - - [Sensor interface: new AbsoluteOrientationSensor(); must inherit property "activated" with the proper type] - expected: FAIL - - [Sensor interface: new AbsoluteOrientationSensor(); must inherit property "timestamp" with the proper type] - expected: FAIL - - [Sensor interface: new AbsoluteOrientationSensor(); must inherit property "start()" with the proper type] - expected: FAIL - - [Sensor interface: new AbsoluteOrientationSensor(); must inherit property "stop()" with the proper type] - expected: FAIL - - [Sensor interface: new AbsoluteOrientationSensor(); must inherit property "onreading" with the proper type] - expected: FAIL - - [Sensor interface: new AbsoluteOrientationSensor(); must inherit property "onactivate" with the proper type] - expected: FAIL - - [Sensor interface: new AbsoluteOrientationSensor(); must inherit property "onerror" with the proper type] - expected: FAIL - - [Sensor interface: new RelativeOrientationSensor(); must inherit property "activated" with the proper type] - expected: FAIL - - [Sensor interface: new RelativeOrientationSensor(); must inherit property "timestamp" with the proper type] - expected: FAIL - - [Sensor interface: new RelativeOrientationSensor(); must inherit property "start()" with the proper type] - expected: FAIL - - [Sensor interface: new RelativeOrientationSensor(); must inherit property "stop()" with the proper type] - expected: FAIL - - [Sensor interface: new RelativeOrientationSensor(); must inherit property "onreading" with the proper type] - expected: FAIL - - [Sensor interface: new RelativeOrientationSensor(); must inherit property "onactivate" with the proper type] - expected: FAIL - - [Sensor interface: new RelativeOrientationSensor(); must inherit property "onerror" with the proper type] - expected: FAIL - diff --git a/testing/web-platform/meta/paint-timing/basetest.html.ini b/testing/web-platform/meta/paint-timing/basetest.html.ini deleted file mode 100644 index 0c9e12b54c66..000000000000 --- a/testing/web-platform/meta/paint-timing/basetest.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[basetest.html] - type: testharness - expected: TIMEOUT - [Basic test to check existence of FP and FCP.] - expected: TIMEOUT - diff --git a/testing/web-platform/meta/paint-timing/first-contentful-bg-image.html.ini b/testing/web-platform/meta/paint-timing/first-contentful-bg-image.html.ini deleted file mode 100644 index ddc56addc6e3..000000000000 --- a/testing/web-platform/meta/paint-timing/first-contentful-bg-image.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[first-contentful-bg-image.html] - type: testharness - expected: TIMEOUT - [First contentful paint fires due to background image render.] - expected: TIMEOUT - diff --git a/testing/web-platform/meta/paint-timing/first-contentful-canvas.html.ini b/testing/web-platform/meta/paint-timing/first-contentful-canvas.html.ini deleted file mode 100644 index dab7e03bf388..000000000000 --- a/testing/web-platform/meta/paint-timing/first-contentful-canvas.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[first-contentful-canvas.html] - type: testharness - expected: TIMEOUT - [First contentful paint fires due to canvas render.] - expected: TIMEOUT - diff --git a/testing/web-platform/meta/paint-timing/first-contentful-image.html.ini b/testing/web-platform/meta/paint-timing/first-contentful-image.html.ini deleted file mode 100644 index 5623234b0ad2..000000000000 --- a/testing/web-platform/meta/paint-timing/first-contentful-image.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[first-contentful-image.html] - type: testharness - expected: TIMEOUT - [First contentful paint fires due to image render.] - expected: TIMEOUT - diff --git a/testing/web-platform/meta/paint-timing/first-contentful-paint.html.ini b/testing/web-platform/meta/paint-timing/first-contentful-paint.html.ini deleted file mode 100644 index d981c61f046f..000000000000 --- a/testing/web-platform/meta/paint-timing/first-contentful-paint.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[first-contentful-paint.html] - type: testharness - expected: TIMEOUT - [First Paint triggered by non-contentful paint. Image load triggers First Contentful Paint.] - expected: TIMEOUT - diff --git a/testing/web-platform/meta/paint-timing/first-contentful-svg.html.ini b/testing/web-platform/meta/paint-timing/first-contentful-svg.html.ini deleted file mode 100644 index 254e84000378..000000000000 --- a/testing/web-platform/meta/paint-timing/first-contentful-svg.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[first-contentful-svg.html] - type: testharness - expected: TIMEOUT - [First contentful paint fires due to svg.] - expected: TIMEOUT - diff --git a/testing/web-platform/meta/paint-timing/first-paint-bg-color.html.ini b/testing/web-platform/meta/paint-timing/first-paint-bg-color.html.ini deleted file mode 100644 index ba2ffe6f6ad1..000000000000 --- a/testing/web-platform/meta/paint-timing/first-paint-bg-color.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[first-paint-bg-color.html] - type: testharness - expected: TIMEOUT - [First paint fires due to background color. No FCP] - expected: TIMEOUT - diff --git a/testing/web-platform/meta/paint-timing/first-paint-only.html.ini b/testing/web-platform/meta/paint-timing/first-paint-only.html.ini deleted file mode 100644 index 6443dc05bd35..000000000000 --- a/testing/web-platform/meta/paint-timing/first-paint-only.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[first-paint-only.html] - type: testharness - expected: TIMEOUT - [Performance first paint timing entry exists. No first contentful paint.] - expected: TIMEOUT - diff --git a/testing/web-platform/meta/payment-handler/interfaces.https.any.js.ini b/testing/web-platform/meta/payment-handler/interfaces.https.any.js.ini deleted file mode 100644 index 3576af587650..000000000000 --- a/testing/web-platform/meta/payment-handler/interfaces.https.any.js.ini +++ /dev/null @@ -1,113 +0,0 @@ -[interfaces.https.any.html] - type: testharness - [PaymentManager interface: existence and properties of interface object] - expected: FAIL - - [PaymentManager interface object length] - expected: FAIL - - [PaymentManager interface object name] - expected: FAIL - - [PaymentManager interface: existence and properties of interface prototype object] - expected: FAIL - - [PaymentManager interface: existence and properties of interface prototype object's "constructor" property] - expected: FAIL - - [PaymentManager interface: attribute instruments] - expected: FAIL - - [PaymentManager interface: operation requestPermission()] - expected: FAIL - - [PaymentInstruments interface: existence and properties of interface object] - expected: FAIL - - [PaymentInstruments interface object length] - expected: FAIL - - [PaymentInstruments interface object name] - expected: FAIL - - [PaymentInstruments interface: existence and properties of interface prototype object] - expected: FAIL - - [PaymentInstruments interface: existence and properties of interface prototype object's "constructor" property] - expected: FAIL - - [PaymentInstruments interface: operation delete(DOMString)] - expected: FAIL - - [PaymentInstruments interface: operation get(DOMString)] - expected: FAIL - - [PaymentInstruments interface: operation keys()] - expected: FAIL - - [PaymentInstruments interface: operation has(DOMString)] - expected: FAIL - - [PaymentInstruments interface: operation set(DOMString, PaymentInstrument)] - expected: FAIL - - [PaymentInstruments interface: operation clear()] - expected: FAIL - - -[interfaces.https.any.worker.html] - type: testharness - [PaymentManager interface: existence and properties of interface object] - expected: FAIL - - [PaymentManager interface object length] - expected: FAIL - - [PaymentManager interface object name] - expected: FAIL - - [PaymentManager interface: existence and properties of interface prototype object] - expected: FAIL - - [PaymentManager interface: existence and properties of interface prototype object's "constructor" property] - expected: FAIL - - [PaymentManager interface: attribute instruments] - expected: FAIL - - [PaymentManager interface: member requestPermission] - expected: FAIL - - [PaymentInstruments interface: existence and properties of interface object] - expected: FAIL - - [PaymentInstruments interface object length] - expected: FAIL - - [PaymentInstruments interface object name] - expected: FAIL - - [PaymentInstruments interface: existence and properties of interface prototype object] - expected: FAIL - - [PaymentInstruments interface: existence and properties of interface prototype object's "constructor" property] - expected: FAIL - - [PaymentInstruments interface: operation delete(DOMString)] - expected: FAIL - - [PaymentInstruments interface: operation get(DOMString)] - expected: FAIL - - [PaymentInstruments interface: operation keys()] - expected: FAIL - - [PaymentInstruments interface: operation has(DOMString)] - expected: FAIL - - [PaymentInstruments interface: operation set(DOMString, PaymentInstrument)] - expected: FAIL - - [PaymentInstruments interface: operation clear()] - expected: FAIL - diff --git a/testing/web-platform/meta/payment-request/interfaces.https.html.ini b/testing/web-platform/meta/payment-request/interfaces.https.html.ini index 850b3d5d995b..46f5632b0e71 100644 --- a/testing/web-platform/meta/payment-request/interfaces.https.html.ini +++ b/testing/web-platform/meta/payment-request/interfaces.https.html.ini @@ -264,170 +264,3 @@ [PaymentResponse interface: operation toJSON()] expected: FAIL - [Document interface: attribute origin] - expected: FAIL - - [ShadowRoot interface: existence and properties of interface object] - expected: - if not debug and stylo and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL - if debug and stylo and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL - if debug and stylo and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL - if not debug and stylo and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL - if not debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): FAIL - if debug and stylo and not e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL - if not debug and stylo and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL - if not debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): FAIL - if debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): FAIL - if debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): FAIL - if debug and stylo and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL - - [ShadowRoot interface object length] - expected: - if not debug and stylo and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL - if debug and stylo and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL - if debug and stylo and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL - if not debug and stylo and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL - if not debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): FAIL - if debug and stylo and not e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL - if not debug and stylo and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL - if not debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): FAIL - if debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): FAIL - if debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): FAIL - if debug and stylo and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL - - [ShadowRoot interface object name] - expected: - if not debug and stylo and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL - if debug and stylo and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL - if debug and stylo and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL - if not debug and stylo and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL - if not debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): FAIL - if debug and stylo and not e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL - if not debug and stylo and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL - if not debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): FAIL - if debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): FAIL - if debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): FAIL - if debug and stylo and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL - - [ShadowRoot interface: existence and properties of interface prototype object] - expected: - if not debug and stylo and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL - if debug and stylo and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL - if debug and stylo and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL - if not debug and stylo and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL - if not debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): FAIL - if debug and stylo and not e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL - if not debug and stylo and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL - if not debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): FAIL - if debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): FAIL - if debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): FAIL - if debug and stylo and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL - - [ShadowRoot interface: existence and properties of interface prototype object's "constructor" property] - expected: - if not debug and stylo and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL - if debug and stylo and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL - if debug and stylo and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL - if not debug and stylo and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL - if not debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): FAIL - if debug and stylo and not e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL - if not debug and stylo and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL - if not debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): FAIL - if debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): FAIL - if debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): FAIL - if debug and stylo and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL - - [ShadowRoot interface: attribute mode] - expected: FAIL - - [ShadowRoot interface: attribute host] - expected: - if not debug and stylo and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL - if debug and stylo and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL - if debug and stylo and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL - if not debug and stylo and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL - if not debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): FAIL - if debug and stylo and not e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL - if not debug and stylo and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL - if not debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): FAIL - if debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): FAIL - if debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): FAIL - if debug and stylo and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL - - [Element interface: attribute slot] - expected: FAIL - - [Element interface: operation attachShadow(ShadowRootInit)] - expected: FAIL - - [Element interface: attribute shadowRoot] - expected: - if not debug and stylo and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL - if debug and stylo and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL - if debug and stylo and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL - if not debug and stylo and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL - if not debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): FAIL - if debug and stylo and not e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL - if not debug and stylo and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL - if not debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): FAIL - if debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): FAIL - if debug and stylo and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86") and (bits == 32): FAIL - if debug and stylo and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL - - [Element interface: attribute assignedSlot] - expected: FAIL - - [Text interface: attribute assignedSlot] - expected: FAIL - - [PaymentRequest must be primary interface of new PaymentRequest([{supportedMethods: 'foo'}\], {total: {label: 'bar', amount: {currency: 'USD', value: '0'}} })] - expected: FAIL - - [Stringification of new PaymentRequest([{supportedMethods: 'foo'}\], {total: {label: 'bar', amount: {currency: 'USD', value: '0'}} })] - expected: FAIL - - [PaymentRequest interface: new PaymentRequest([{supportedMethods: 'foo'}\], {total: {label: 'bar', amount: {currency: 'USD', value: '0'}} }) must inherit property "show()" with the proper type] - expected: FAIL - - [PaymentRequest interface: new PaymentRequest([{supportedMethods: 'foo'}\], {total: {label: 'bar', amount: {currency: 'USD', value: '0'}} }) must inherit property "abort()" with the proper type] - expected: FAIL - - [PaymentRequest interface: new PaymentRequest([{supportedMethods: 'foo'}\], {total: {label: 'bar', amount: {currency: 'USD', value: '0'}} }) must inherit property "canMakePayment()" with the proper type] - expected: FAIL - - [PaymentRequest interface: new PaymentRequest([{supportedMethods: 'foo'}\], {total: {label: 'bar', amount: {currency: 'USD', value: '0'}} }) must inherit property "id" with the proper type] - expected: FAIL - - [PaymentRequest interface: new PaymentRequest([{supportedMethods: 'foo'}\], {total: {label: 'bar', amount: {currency: 'USD', value: '0'}} }) must inherit property "shippingAddress" with the proper type] - expected: FAIL - - [PaymentRequest interface: new PaymentRequest([{supportedMethods: 'foo'}\], {total: {label: 'bar', amount: {currency: 'USD', value: '0'}} }) must inherit property "shippingOption" with the proper type] - expected: FAIL - - [PaymentRequest interface: new PaymentRequest([{supportedMethods: 'foo'}\], {total: {label: 'bar', amount: {currency: 'USD', value: '0'}} }) must inherit property "shippingType" with the proper type] - expected: FAIL - - [PaymentRequest interface: new PaymentRequest([{supportedMethods: 'foo'}\], {total: {label: 'bar', amount: {currency: 'USD', value: '0'}} }) must inherit property "onshippingaddresschange" with the proper type] - expected: FAIL - - [PaymentRequest interface: new PaymentRequest([{supportedMethods: 'foo'}\], {total: {label: 'bar', amount: {currency: 'USD', value: '0'}} }) must inherit property "onshippingoptionchange" with the proper type] - expected: FAIL - - [EventTarget interface: new PaymentRequest([{supportedMethods: 'foo'}\], {total: {label: 'bar', amount: {currency: 'USD', value: '0'}} }) must inherit property "addEventListener(DOMString, EventListener, [object Object\],[object Object\])" with the proper type] - expected: FAIL - - [EventTarget interface: calling addEventListener(DOMString, EventListener, [object Object\],[object Object\]) on new PaymentRequest([{supportedMethods: 'foo'}\], {total: {label: 'bar', amount: {currency: 'USD', value: '0'}} }) with too few arguments must throw TypeError] - expected: FAIL - - [EventTarget interface: new PaymentRequest([{supportedMethods: 'foo'}\], {total: {label: 'bar', amount: {currency: 'USD', value: '0'}} }) must inherit property "removeEventListener(DOMString, EventListener, [object Object\],[object Object\])" with the proper type] - expected: FAIL - - [EventTarget interface: calling removeEventListener(DOMString, EventListener, [object Object\],[object Object\]) on new PaymentRequest([{supportedMethods: 'foo'}\], {total: {label: 'bar', amount: {currency: 'USD', value: '0'}} }) with too few arguments must throw TypeError] - expected: FAIL - - [EventTarget interface: new PaymentRequest([{supportedMethods: 'foo'}\], {total: {label: 'bar', amount: {currency: 'USD', value: '0'}} }) must inherit property "dispatchEvent(Event)" with the proper type] - expected: FAIL - - [EventTarget interface: calling dispatchEvent(Event) on new PaymentRequest([{supportedMethods: 'foo'}\], {total: {label: 'bar', amount: {currency: 'USD', value: '0'}} }) with too few arguments must throw TypeError] - expected: FAIL - diff --git a/testing/web-platform/meta/feature-policy/payment-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html.ini b/testing/web-platform/meta/payment-request/payment-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html.ini similarity index 100% rename from testing/web-platform/meta/feature-policy/payment-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html.ini rename to testing/web-platform/meta/payment-request/payment-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html.ini diff --git a/testing/web-platform/meta/feature-policy/payment-allowed-by-feature-policy-attribute.https.sub.html.ini b/testing/web-platform/meta/payment-request/payment-allowed-by-feature-policy-attribute.https.sub.html.ini similarity index 100% rename from testing/web-platform/meta/feature-policy/payment-allowed-by-feature-policy-attribute.https.sub.html.ini rename to testing/web-platform/meta/payment-request/payment-allowed-by-feature-policy-attribute.https.sub.html.ini diff --git a/testing/web-platform/meta/feature-policy/payment-allowed-by-feature-policy.https.sub.html.ini b/testing/web-platform/meta/payment-request/payment-allowed-by-feature-policy.https.sub.html.ini similarity index 100% rename from testing/web-platform/meta/feature-policy/payment-allowed-by-feature-policy.https.sub.html.ini rename to testing/web-platform/meta/payment-request/payment-allowed-by-feature-policy.https.sub.html.ini diff --git a/testing/web-platform/meta/feature-policy/payment-default-feature-policy.https.sub.html.ini b/testing/web-platform/meta/payment-request/payment-default-feature-policy.https.sub.html.ini similarity index 100% rename from testing/web-platform/meta/feature-policy/payment-default-feature-policy.https.sub.html.ini rename to testing/web-platform/meta/payment-request/payment-default-feature-policy.https.sub.html.ini diff --git a/testing/web-platform/meta/feature-policy/payment-disabled-by-feature-policy.https.sub.html.ini b/testing/web-platform/meta/payment-request/payment-disabled-by-feature-policy.https.sub.html.ini similarity index 100% rename from testing/web-platform/meta/feature-policy/payment-disabled-by-feature-policy.https.sub.html.ini rename to testing/web-platform/meta/payment-request/payment-disabled-by-feature-policy.https.sub.html.ini diff --git a/testing/web-platform/meta/payment-request/payment-request-constructor.https.html.ini b/testing/web-platform/meta/payment-request/payment-request-constructor.https.html.ini index bc568bfee6ab..68c268a823ec 100644 --- a/testing/web-platform/meta/payment-request/payment-request-constructor.https.html.ini +++ b/testing/web-platform/meta/payment-request/payment-request-constructor.https.html.ini @@ -447,15 +447,3 @@ [Rethrow any exceptions of JSON-serializing modifier.data] expected: FAIL - [If there is a selected shipping option, and requestShipping is set, then that option becomes synchronously selected] - expected: FAIL - - [If requestShipping is set, and if there is a multiple selected shipping options, only the last is selected.] - expected: FAIL - - [If there are any duplicate shipping option ids, and shipping is requested, then throw a TypeError] - expected: FAIL - - [Throw when there are duplicate shippingOption ids, even if other values are different] - expected: FAIL - diff --git a/testing/web-platform/meta/payment-request/payment-request-onshippingaddresschange-attribute.https.html.ini b/testing/web-platform/meta/payment-request/payment-request-onshippingaddresschange-attribute.https.html.ini index e4522294d0ee..74a92c4b483d 100644 --- a/testing/web-platform/meta/payment-request/payment-request-onshippingaddresschange-attribute.https.html.ini +++ b/testing/web-platform/meta/payment-request/payment-request-onshippingaddresschange-attribute.https.html.ini @@ -9,6 +9,3 @@ [onshippingaddresschange attribute and listeners both work] expected: FAIL - [Must have a onshippingaddresschange IDL attribute] - expected: FAIL - diff --git a/testing/web-platform/meta/payment-request/payment-request-onshippingoptionchange-attribute.https.html.ini b/testing/web-platform/meta/payment-request/payment-request-onshippingoptionchange-attribute.https.html.ini index 05f7023e3a1c..86d3f88ee778 100644 --- a/testing/web-platform/meta/payment-request/payment-request-onshippingoptionchange-attribute.https.html.ini +++ b/testing/web-platform/meta/payment-request/payment-request-onshippingoptionchange-attribute.https.html.ini @@ -9,6 +9,3 @@ [onshippingoptionchange attribute and listeners both work] expected: FAIL - [Must have a onshippingoptionchange IDL attribute] - expected: FAIL - diff --git a/testing/web-platform/meta/payment-request/payment-request-shippingAddress-attribute.https.html.ini b/testing/web-platform/meta/payment-request/payment-request-shippingAddress-attribute.https.html.ini deleted file mode 100644 index 167f567628e1..000000000000 --- a/testing/web-platform/meta/payment-request/payment-request-shippingAddress-attribute.https.html.ini +++ /dev/null @@ -1,8 +0,0 @@ -[payment-request-shippingAddress-attribute.https.html] - type: testharness - [Must have a .shippingAddress IDL attribute.] - expected: FAIL - - [.shippingAddress attribute must default to null.] - expected: FAIL - diff --git a/testing/web-platform/meta/payment-request/payment-request-shippingOption-attribute.https.html.ini b/testing/web-platform/meta/payment-request/payment-request-shippingOption-attribute.https.html.ini deleted file mode 100644 index ba5fe5afb978..000000000000 --- a/testing/web-platform/meta/payment-request/payment-request-shippingOption-attribute.https.html.ini +++ /dev/null @@ -1,20 +0,0 @@ -[payment-request-shippingOption-attribute.https.html] - type: testharness - [Must have a .shippingOption IDL attribute.] - expected: FAIL - - [.shippingOption attribute must default to null.] - expected: FAIL - - [If there is a single shipping option, but selected is false, then .shippingOption must be null.] - expected: FAIL - - [If there are multiple shipping options all with `selected` set to false, then .shippingOption is null.] - expected: FAIL - - [Given multiple shipping options, it must use the selected shipping option for .shippingOption value.] - expected: FAIL - - [If there are multiple of the shipping options with selected true, then .shippingOption is the last selected shipping option in order.] - expected: FAIL - diff --git a/testing/web-platform/meta/payment-request/payment-request-shippingType-attribute.https.html.ini b/testing/web-platform/meta/payment-request/payment-request-shippingType-attribute.https.html.ini index d7ce31d1abe4..832f98035c07 100644 --- a/testing/web-platform/meta/payment-request/payment-request-shippingType-attribute.https.html.ini +++ b/testing/web-platform/meta/payment-request/payment-request-shippingType-attribute.https.html.ini @@ -6,6 +6,3 @@ [If options.requestShipping is true, request.shippingType will be options.shippingType.] expected: FAIL - [Must have a shippingType IDL attribute] - expected: FAIL - diff --git a/testing/web-platform/meta/payment-request/payment-request-show-method.https.html.ini b/testing/web-platform/meta/payment-request/payment-request-show-method.https.html.ini index 5954bee14f0c..4522cf2f12e0 100644 --- a/testing/web-platform/meta/payment-request/payment-request-show-method.https.html.ini +++ b/testing/web-platform/meta/payment-request/payment-request-show-method.https.html.ini @@ -9,6 +9,3 @@ [If payment method consultation produces no supported method of payment, then return a promise rejected with a "NotSupportedError" DOMException.] expected: FAIL - [Must be possible to construct a payment request] - expected: FAIL - diff --git a/testing/web-platform/meta/payment-request/payment-request-update-event-constructor.http.html.ini b/testing/web-platform/meta/payment-request/payment-request-update-event-constructor.http.html.ini new file mode 100644 index 000000000000..9225f1cab8ce --- /dev/null +++ b/testing/web-platform/meta/payment-request/payment-request-update-event-constructor.http.html.ini @@ -0,0 +1,5 @@ +[payment-request-update-event-constructor.http.html] + type: testharness + [PaymentRequestUpdateEvent constructor throws in a non-secure context] + expected: FAIL + diff --git a/testing/web-platform/meta/payment-request/PaymentRequestUpdateEvent/constructor.https.html.ini b/testing/web-platform/meta/payment-request/payment-request-update-event-constructor.https.html.ini similarity index 85% rename from testing/web-platform/meta/payment-request/PaymentRequestUpdateEvent/constructor.https.html.ini rename to testing/web-platform/meta/payment-request/payment-request-update-event-constructor.https.html.ini index d86e007a9bac..51abc94969a9 100644 --- a/testing/web-platform/meta/payment-request/PaymentRequestUpdateEvent/constructor.https.html.ini +++ b/testing/web-platform/meta/payment-request/payment-request-update-event-constructor.https.html.ini @@ -1,4 +1,4 @@ -[constructor.https.html] +[payment-request-update-event-constructor.https.html] type: testharness [PaymentRequestUpdateEvent can be constructed in secure-context] expected: FAIL diff --git a/testing/web-platform/meta/payment-request/PaymentRequestUpdateEvent/updatewith-method.https.html.ini b/testing/web-platform/meta/payment-request/payment-request-update-event-updatewith-method.https.html.ini similarity index 84% rename from testing/web-platform/meta/payment-request/PaymentRequestUpdateEvent/updatewith-method.https.html.ini rename to testing/web-platform/meta/payment-request/payment-request-update-event-updatewith-method.https.html.ini index f6033de31c3a..ac8508f8bf87 100644 --- a/testing/web-platform/meta/payment-request/PaymentRequestUpdateEvent/updatewith-method.https.html.ini +++ b/testing/web-platform/meta/payment-request/payment-request-update-event-updatewith-method.https.html.ini @@ -1,4 +1,4 @@ -[updatewith-method.https.html] +[payment-request-update-event-updatewith-method.https.html] type: testharness [Let target be the request which is dispatching the event.] expected: FAIL diff --git a/testing/web-platform/meta/payment-request/rejects_if_not_active.https.html.ini b/testing/web-platform/meta/payment-request/rejects_if_not_active.https.html.ini deleted file mode 100644 index f0abcd178ab2..000000000000 --- a/testing/web-platform/meta/payment-request/rejects_if_not_active.https.html.ini +++ /dev/null @@ -1,11 +0,0 @@ -[rejects_if_not_active.https.html] - type: testharness - [PaymentRequest.show() aborts if the document is not active] - expected: FAIL - - [PaymentRequest.show() aborts if the document is active, but not fully active] - expected: FAIL - - [If a payment request is showing, but its document is navigated away (so no longer fully active), the payment request aborts.] - expected: FAIL - diff --git a/testing/web-platform/meta/performance-timeline/idlharness.html.ini b/testing/web-platform/meta/performance-timeline/idlharness.html.ini new file mode 100644 index 000000000000..12a1ab4d449c --- /dev/null +++ b/testing/web-platform/meta/performance-timeline/idlharness.html.ini @@ -0,0 +1,5 @@ +[idlharness.html] + type: testharness + [PerformanceEntry interface: operation toJSON()] + expected: FAIL + diff --git a/testing/web-platform/meta/resource-timing/idlharness.html.ini b/testing/web-platform/meta/resource-timing/idlharness.html.ini new file mode 100644 index 000000000000..b8deff89d7fa --- /dev/null +++ b/testing/web-platform/meta/resource-timing/idlharness.html.ini @@ -0,0 +1,5 @@ +[idlharness.html] + type: testharness + [PerformanceResourceTiming interface: operation toJSON()] + expected: FAIL + diff --git a/testing/web-platform/meta/service-workers/service-worker/skip-waiting-installed.https.html.ini b/testing/web-platform/meta/service-workers/service-worker/skip-waiting-installed.https.html.ini deleted file mode 100644 index a45678dcc31f..000000000000 --- a/testing/web-platform/meta/service-workers/service-worker/skip-waiting-installed.https.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[skip-waiting-installed.https.html] - type: testharness - [Test skipWaiting when a installed worker is waiting] - expected: FAIL - diff --git a/testing/web-platform/meta/url/interfaces.any.js.ini b/testing/web-platform/meta/url/interfaces.any.js.ini index fd6d02f39474..7027ea65b5a8 100644 --- a/testing/web-platform/meta/url/interfaces.any.js.ini +++ b/testing/web-platform/meta/url/interfaces.any.js.ini @@ -1,8 +1,14 @@ [interfaces.any.worker.html] type: testharness + [Test toJSON operation of URL] + expected: FAIL + [interfaces.any.html] type: testharness [URL interface: legacy window alias] expected: FAIL + [Test toJSON operation of URL] + expected: FAIL + diff --git a/testing/web-platform/meta/webdriver/tests/contexts/maximize_window.py.ini b/testing/web-platform/meta/webdriver/tests/contexts/maximize_window.py.ini index 451855b78b98..403c0d01bee0 100644 --- a/testing/web-platform/meta/webdriver/tests/contexts/maximize_window.py.ini +++ b/testing/web-platform/meta/webdriver/tests/contexts/maximize_window.py.ini @@ -1,8 +1,8 @@ [maximize_window.py] type: wdspec + [maximize_window.py::test_handle_prompt_accept] expected: FAIL [maximize_window.py::test_handle_prompt_missing_value] expected: FAIL - diff --git a/testing/web-platform/meta/webdriver/tests/element_click/select.py.ini b/testing/web-platform/meta/webdriver/tests/element_click/select.py.ini index 0ed10974c737..93c586a6f6ce 100644 --- a/testing/web-platform/meta/webdriver/tests/element_click/select.py.ini +++ b/testing/web-platform/meta/webdriver/tests/element_click/select.py.ini @@ -1,4 +1,4 @@ [select.py] type: wdspec disabled: - if debug: https://bugzilla.mozilla.org/show_bug.cgi?id=1397219 + if debug: https://bugzilla.mozilla.org/show_bug.cgi?id=1397219 \ No newline at end of file diff --git a/testing/web-platform/meta/webdriver/tests/get_window_rect.py.ini b/testing/web-platform/meta/webdriver/tests/get_window_rect.py.ini index e66a5b0f5d4c..89458c8af664 100644 --- a/testing/web-platform/meta/webdriver/tests/get_window_rect.py.ini +++ b/testing/web-platform/meta/webdriver/tests/get_window_rect.py.ini @@ -5,4 +5,3 @@ [get_window_rect.py::test_handle_prompt_missing_value] expected: FAIL - diff --git a/testing/web-platform/meta/webdriver/tests/minimize_window.py.ini b/testing/web-platform/meta/webdriver/tests/minimize_window.py.ini index ca338e2fbcdd..c1fe96e757ab 100644 --- a/testing/web-platform/meta/webdriver/tests/minimize_window.py.ini +++ b/testing/web-platform/meta/webdriver/tests/minimize_window.py.ini @@ -1,8 +1,8 @@ [minimize_window.py] type: wdspec + [minimize_window.py::test_handle_prompt_accept] expected: FAIL [minimize_window.py::test_handle_prompt_missing_value] expected: FAIL - diff --git a/testing/web-platform/meta/webdriver/tests/set_window_rect.py.ini b/testing/web-platform/meta/webdriver/tests/set_window_rect.py.ini index 15e8857273b7..96273bff3fe7 100644 --- a/testing/web-platform/meta/webdriver/tests/set_window_rect.py.ini +++ b/testing/web-platform/meta/webdriver/tests/set_window_rect.py.ini @@ -5,4 +5,3 @@ [set_window_rect.py::test_handle_prompt_missing_value] expected: FAIL - diff --git a/testing/web-platform/meta/webrtc/RTCPeerConnection-setRemoteDescription-rollback.html.ini b/testing/web-platform/meta/webrtc/RTCPeerConnection-setRemoteDescription-rollback.html.ini deleted file mode 100644 index a7d3a7e54aa6..000000000000 --- a/testing/web-platform/meta/webrtc/RTCPeerConnection-setRemoteDescription-rollback.html.ini +++ /dev/null @@ -1,9 +0,0 @@ -[RTCPeerConnection-setRemoteDescription-rollback.html] - type: testharness - expected: TIMEOUT - [setRemoteDescription(rollback) in have-remote-offer state should revert to stable state] - expected: FAIL - - [Test onsignalingstatechange event for setRemoteDescription(rollback) in have-remote-offer state should revert to stable state] - expected: TIMEOUT - diff --git a/testing/web-platform/meta/webrtc/RTCPeerConnection-setRemoteDescription.html.ini b/testing/web-platform/meta/webrtc/RTCPeerConnection-setRemoteDescription.html.ini index aaf355ba4e77..26b7c3104a8b 100644 --- a/testing/web-platform/meta/webrtc/RTCPeerConnection-setRemoteDescription.html.ini +++ b/testing/web-platform/meta/webrtc/RTCPeerConnection-setRemoteDescription.html.ini @@ -46,6 +46,3 @@ [Test onsignalingstatechange event for Calling setRemoteDescription() again after one round of remote-offer/local-answer should succeed] expected: TIMEOUT - [Test onsignalingstatechange event for Switching role from offerer to answerer after going back to stable state should succeed] - expected: TIMEOUT - diff --git a/testing/web-platform/meta/websockets/constructor/010.html.ini b/testing/web-platform/meta/websockets/constructor/010.html.ini index e5b18224c368..f286708818ea 100644 --- a/testing/web-platform/meta/websockets/constructor/010.html.ini +++ b/testing/web-platform/meta/websockets/constructor/010.html.ini @@ -6,3 +6,6 @@ [010.html?wss] type: testharness + [WebSockets: protocol in response but no requested protocol] + expected: FAIL + diff --git a/testing/web-platform/meta/websockets/constructor/011.html.ini b/testing/web-platform/meta/websockets/constructor/011.html.ini new file mode 100644 index 000000000000..f8593fd519b9 --- /dev/null +++ b/testing/web-platform/meta/websockets/constructor/011.html.ini @@ -0,0 +1,11 @@ +[011.html?wss] + type: testharness + [WebSockets: protocol mismatch] + expected: FAIL + + +[011.html] + type: testharness + [WebSockets: protocol mismatch] + expected: FAIL + diff --git a/testing/web-platform/meta/workers/worker-performance.worker.js.ini b/testing/web-platform/meta/workers/worker-performance.worker.js.ini deleted file mode 100644 index f55d148842c1..000000000000 --- a/testing/web-platform/meta/workers/worker-performance.worker.js.ini +++ /dev/null @@ -1,11 +0,0 @@ -[worker-performance.worker.html] - type: testharness - [Resource timing seems to work in workers] - expected: FAIL - - [performance.clearResourceTimings in workers] - expected: FAIL - - [performance.setResourceTimingBufferSize in workers] - expected: FAIL - From bf92b791370ffb1f1855db0b96e94f6bcd6793d2 Mon Sep 17 00:00:00 2001 From: Sebastian Hengst Date: Fri, 22 Sep 2017 11:42:15 +0200 Subject: [PATCH 50/56] Backed out changeset 147051a4cc35 (bug 1402002) for perma-crashing in wpt /css/css-variables-1/variable-first-letter.html on Linux 32 stylo disabled debug and still failing wpt /mediacapture-streams/MediaStream-MediaElement-preload-none.https.html on non-stylo builds. r=backout a=backout MozReview-Commit-ID: EWASfe1D350 --HG-- rename : testing/web-platform/tests/clipboard-apis/OWNERS => testing/web-platform/tests/clipboard/OWNERS rename : testing/web-platform/tests/css-fonts/font-display/font-display-ref.html => testing/web-platform/tests/css-font-display/font-display-ref.html rename : testing/web-platform/tests/css-fonts/font-display/font-display.html => testing/web-platform/tests/css-font-display/font-display.html rename : testing/web-platform/tests/css/css-logical-1/OWNERS => testing/web-platform/tests/css/css-logical-properties-1/OWNERS rename : testing/web-platform/tests/css/css-logical-1/logicalprops-block-size-vlr.html => testing/web-platform/tests/css/css-logical-properties-1/logicalprops-block-size-vlr.html rename : testing/web-platform/tests/css/css-logical-1/logicalprops-block-size.html => testing/web-platform/tests/css/css-logical-properties-1/logicalprops-block-size.html rename : testing/web-platform/tests/css/css-logical-1/logicalprops-inline-size-vlr.html => testing/web-platform/tests/css/css-logical-properties-1/logicalprops-inline-size-vlr.html rename : testing/web-platform/tests/css/css-logical-1/logicalprops-inline-size.html => testing/web-platform/tests/css/css-logical-properties-1/logicalprops-inline-size.html rename : testing/web-platform/tests/css/css-logical-1/resources/style-check.js => testing/web-platform/tests/css/css-logical-properties-1/resources/style-check.js rename : testing/web-platform/tests/css/css-logical-1/cascading-001-ref.html => testing/web-platform/tests/css/css-logical-props-1/cascading-001-ref.html rename : testing/web-platform/tests/css/css-logical-1/cascading-001.html => testing/web-platform/tests/css/css-logical-props-1/cascading-001.html rename : testing/web-platform/tests/feature-policy/payment-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html => testing/web-platform/tests/payment-request/payment-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html rename : testing/web-platform/tests/feature-policy/payment-allowed-by-feature-policy-attribute.https.sub.html => testing/web-platform/tests/payment-request/payment-allowed-by-feature-policy-attribute.https.sub.html rename : testing/web-platform/tests/feature-policy/payment-allowed-by-feature-policy.https.sub.html => testing/web-platform/tests/payment-request/payment-allowed-by-feature-policy.https.sub.html rename : testing/web-platform/tests/feature-policy/payment-allowed-by-feature-policy.https.sub.html.headers => testing/web-platform/tests/payment-request/payment-allowed-by-feature-policy.https.sub.html.headers rename : testing/web-platform/tests/feature-policy/payment-default-feature-policy.https.sub.html => testing/web-platform/tests/payment-request/payment-default-feature-policy.https.sub.html rename : testing/web-platform/tests/feature-policy/payment-disabled-by-feature-policy.https.sub.html => testing/web-platform/tests/payment-request/payment-disabled-by-feature-policy.https.sub.html rename : testing/web-platform/tests/feature-policy/payment-disabled-by-feature-policy.https.sub.html.headers => testing/web-platform/tests/payment-request/payment-disabled-by-feature-policy.https.sub.html.headers rename : testing/web-platform/tests/payment-request/PaymentRequestUpdateEvent/constructor.http.html => testing/web-platform/tests/payment-request/payment-request-update-event-constructor.http.html rename : testing/web-platform/tests/payment-request/PaymentRequestUpdateEvent/updatewith-method.https.html => testing/web-platform/tests/payment-request/payment-request-update-event-updatewith-method.https.html --- testing/web-platform/meta/MANIFEST.json | 4904 +++--------- testing/web-platform/meta/mozilla-sync | 4 +- testing/web-platform/moz.build | 12 + .../2dcontext/tools/current-work-canvas.xhtml | 6833 +++++++---------- .../tests/2dcontext/tools/gentestutils.py | 312 +- .../tests/2dcontext/tools/name2dir.yaml | 24 +- .../tests/2dcontext/tools/spec.yaml | 4 +- .../tests/2dcontext/tools/specextract.py | 41 +- testing/web-platform/tests/FileAPI/OWNERS | 1 + testing/web-platform/tests/README.md | 4 - ...-basic-cors-safelisted-request-headers.htm | 32 - ...basic-cors-safelisted-response-headers.htm | 31 - ...cess-control-basic-get-fail-non-simple.htm | 31 - ...-with-non-cors-safelisted-content-type.htm | 2 +- ...-control-preflight-async-method-denied.htm | 38 - ...-control-preflight-async-not-supported.htm | 37 - ...access-control-preflight-headers-async.htm | 35 - ...ontrol-preflight-request-header-sorted.htm | 28 - ...ntrol-preflight-request-headers-origin.htm | 29 - ...l-preflight-request-invalid-status-400.htm | 28 - ...flight-request-must-not-contain-cookie.htm | 57 - ...s-control-preflight-sync-header-denied.htm | 39 - ...s-control-preflight-sync-method-denied.htm | 38 - ...s-control-preflight-sync-not-supported.htm | 38 - ...ccess-control-recursive-failed-request.htm | 38 - ...access-control-response-with-body-sync.htm | 25 - .../access-control-response-with-body.htm | 29 - ...-control-response-with-exposed-headers.htm | 38 - ...rol-sandboxed-iframe-allow-origin-null.htm | 32 - .../access-control-sandboxed-iframe-allow.htm | 32 - ...ndboxed-iframe-denied-without-wildcard.htm | 43 - ...access-control-sandboxed-iframe-denied.htm | 41 - .../allow-lists-starting-with-comma.htm | 30 +- .../resources/access-control-allow-lists.py | 6 +- .../access-control-allow-with-body.py | 15 - ...l-basic-cors-safelisted-request-headers.py | 14 - ...ontrol-basic-whitelist-response-headers.py | 19 - .../resources/access-control-cookie.py | 16 - ...control-preflight-request-header-sorted.py | 18 - ...ontrol-preflight-request-headers-origin.py | 12 - ...eflight-request-must-not-contain-cookie.py | 12 - .../access-control-sandboxed-iframe.html | 24 - .../tests/accelerometer/idlharness.https.html | 50 +- .../tests/ambient-light/idlharness.https.html | 46 +- testing/web-platform/tests/auxclick/OWNERS | 1 + .../content-security-policy.https.window.js | 20 - .../credentials-in-url.https.window.js | 32 - .../dangling-markup.https.window.js | 17 - ...ontent-and-allowed-schemes.https.window.js | 80 - .../port-blocking.https.window.js | 35 - .../tests/background-fetch/resources/sw.js | 1 - .../tests/background-fetch/resources/utils.js | 26 - .../{clipboard-apis => clipboard}/OWNERS | 0 ...bject-src-applet-archive-codebase.sub.html | 41 + ...plet-archive-codebase.sub.html.sub.headers | 6 + .../object-src-applet-archive.sub.html | 41 + ...ct-src-applet-archive.sub.html.sub.headers | 6 + .../object-src-applet-code-codebase.sub.html | 41 + ...-applet-code-codebase.sub.html.sub.headers | 6 + .../object-src-applet-code.sub.html | 41 + ...bject-src-applet-code.sub.html.sub.headers | 6 + testing/web-platform/tests/core-aam/OWNERS | 2 - testing/web-platform/tests/core-aam/README.md | 59 - .../tests/core-aam/alert-manual.html | 96 - .../tests/core-aam/alertdialog-manual.html | 84 - .../tests/core-aam/application-manual.html | 90 - .../core-aam/aria-atomic_false-manual.html | 86 - .../core-aam/aria-atomic_true-manual.html | 122 - .../aria-autocomplete_both_new-manual.html | 70 - .../aria-autocomplete_inline_new-manual.html | 70 - .../aria-autocomplete_list_new-manual.html | 70 - .../core-aam/aria-busy_false-manual.html | 72 - .../tests/core-aam/aria-busy_true-manual.html | 72 - ...aria-checked_false_on_checkbox-manual.html | 86 - ...checked_false_on_menuitemradio-manual.html | 100 - .../core-aam/aria-checked_mixed-manual.html | 92 - .../aria-checked_true_on_checkbox-manual.html | 86 - ...-checked_true_on_menuitemradio-manual.html | 100 - .../core-aam/aria-colcount_new-manual.html | 98 - .../core-aam/aria-colindex_new-manual.html | 88 - .../core-aam/aria-colspan_new-manual.html | 88 - .../tests/core-aam/aria-controls-manual.html | 101 - ...th_non-false_allowed_value_new-manual.html | 78 - ...nt_with_unrecognized_value_new-manual.html | 78 - .../core-aam/aria-describedby-manual.html | 115 - .../core-aam/aria-details_new-manual.html | 88 - .../core-aam/aria-disabled_false-manual.html | 72 - .../core-aam/aria-disabled_true-manual.html | 90 - .../core-aam/aria-dropeffect_copy-manual.html | 72 - .../aria-dropeffect_execute-manual.html | 72 - .../core-aam/aria-dropeffect_link-manual.html | 72 - .../core-aam/aria-dropeffect_move-manual.html | 72 - .../core-aam/aria-dropeffect_none-manual.html | 56 - .../aria-dropeffect_popup-manual.html | 72 - .../core-aam/aria-errormessage-manual.html | 97 - .../core-aam/aria-expanded_false-manual.html | 78 - .../core-aam/aria-expanded_true-manual.html | 78 - .../tests/core-aam/aria-flowto-manual.html | 97 - .../core-aam/aria-grabbed_false-manual.html | 72 - .../core-aam/aria-grabbed_true-manual.html | 72 - .../aria-haspopup_dialog_new-manual.html | 86 - .../core-aam/aria-haspopup_false-manual.html | 56 - .../aria-haspopup_listbox_new-manual.html | 86 - .../aria-haspopup_menu_new-manual.html | 86 - .../aria-haspopup_tree_new-manual.html | 86 - .../core-aam/aria-haspopup_true-manual.html | 86 - .../core-aam/aria-hidden_true-manual.html | 72 - .../core-aam/aria-invalid_false-manual.html | 72 - .../core-aam/aria-invalid_grammar-manual.html | 84 - .../aria-invalid_spelling-manual.html | 84 - .../core-aam/aria-invalid_true-manual.html | 84 - ...nvalid_with_unrecognized_value-manual.html | 84 - .../aria-keyshortcuts_new-manual.html | 64 - .../tests/core-aam/aria-label-manual.html | 72 - .../core-aam/aria-labelledby-manual.html | 121 - .../aria-level_on_heading_new-manual.html | 78 - .../aria-level_on_non-heading-manual.html | 80 - .../core-aam/aria-live_assertive-manual.html | 110 - .../tests/core-aam/aria-live_off-manual.html | 110 - .../core-aam/aria-live_polite-manual.html | 110 - .../core-aam/aria-modal_false_new-manual.html | 81 - .../core-aam/aria-modal_true_new-manual.html | 81 - .../core-aam/aria-multiline_false-manual.html | 68 - .../core-aam/aria-multiline_true-manual.html | 76 - .../aria-multiselectable_false-manual.html | 66 - .../aria-multiselectable_true-manual.html | 74 - .../aria-orientation_horizontal-manual.html | 84 - ...aria-orientation_undefined_new-manual.html | 62 - .../aria-orientation_vertical-manual.html | 84 - ...s_may_need_manual_verification-manual.html | 143 - .../core-aam/aria-placeholder_new-manual.html | 72 - .../tests/core-aam/aria-posinset-manual.html | 80 - .../core-aam/aria-pressed_false-manual.html | 72 - .../core-aam/aria-pressed_mixed-manual.html | 72 - .../core-aam/aria-pressed_true-manual.html | 72 - .../core-aam/aria-readonly_false-manual.html | 80 - ...is_unspecified_on_gridcell_new-manual.html | 82 - ...aria-readonly_true_on_checkbox-manual.html | 78 - ...ia-readonly_true_on_radiogroup-manual.html | 90 - .../aria-readonly_true_on_textbox-manual.html | 78 - .../tests/core-aam/aria-relevant-manual.html | 110 - .../core-aam/aria-required_true-manual.html | 74 - ...y_or_whitespace_characters_new-manual.html | 56 - .../aria-roledescription_new-manual.html | 72 - .../core-aam/aria-rowcount_new-manual.html | 98 - .../core-aam/aria-rowindex_new-manual.html | 98 - .../core-aam/aria-rowspan_new-manual.html | 88 - .../core-aam/aria-selected_false-manual.html | 88 - .../core-aam/aria-selected_true-manual.html | 88 - .../core-aam/aria-setsize_-1-manual.html | 81 - .../tests/core-aam/aria-setsize_3-manual.html | 81 - .../core-aam/aria-sort_ascending-manual.html | 82 - .../core-aam/aria-sort_descending-manual.html | 82 - .../tests/core-aam/aria-sort_none-manual.html | 60 - .../core-aam/aria-sort_other-manual.html | 82 - .../tests/core-aam/aria-valuemax-manual.html | 72 - .../tests/core-aam/aria-valuemin-manual.html | 72 - .../tests/core-aam/aria-valuenow-manual.html | 78 - .../tests/core-aam/aria-valuetext-manual.html | 78 - .../tests/core-aam/article-manual.html | 110 - .../tests/core-aam/banner_new-manual.html | 114 - ..._with_aria-haspopup_dialog_new-manual.html | 90 - ...on_with_aria-haspopup_true_new-manual.html | 90 - ...aria-pressed_and_aria-haspopup-manual.html | 84 - ...defined_value_for_aria-pressed-manual.html | 92 - .../tests/core-aam/cell_new-manual.html | 114 - .../tests/core-aam/checkbox-manual.html | 84 - .../tests/core-aam/columnheader-manual.html | 102 - .../tests/core-aam/combobox-manual.html | 112 - .../core-aam/complementary_new-manual.html | 114 - .../core-aam/contentinfo_new-manual.html | 114 - .../tests/core-aam/definition-manual.html | 96 - .../tests/core-aam/dialog-manual.html | 84 - .../tests/core-aam/directory-manual.html | 84 - .../tests/core-aam/document-manual.html | 92 - .../tests/core-aam/feed_new-manual.html | 106 - .../tests/core-aam/figure_new-manual.html | 104 - .../tests/core-aam/form_new-manual.html | 108 - .../tests/core-aam/grid-manual.html | 165 - .../tests/core-aam/gridcell-manual.html | 120 - .../tests/core-aam/group-manual.html | 84 - .../tests/core-aam/heading-manual.html | 96 - .../tests/core-aam/img-manual.html | 98 - .../tests/core-aam/link-manual.html | 116 - .../tests/core-aam/list-manual.html | 94 - ..._owned_by_or_child_of_combobox-manual.html | 112 - ..._owned_by_or_child_of_combobox-manual.html | 115 - .../tests/core-aam/listitem-manual.html | 106 - .../tests/core-aam/log-manual.html | 138 - .../tests/core-aam/main_new-manual.html | 108 - .../tests/core-aam/marquee-manual.html | 128 - .../tests/core-aam/math-manual.html | 90 - .../tests/core-aam/menu-manual.html | 106 - .../tests/core-aam/menubar-manual.html | 106 - ...not_owned_by_or_child_of_group-manual.html | 86 - ...tem_owned_by_or_child_of_group-manual.html | 89 - .../core-aam/menuitemcheckbox-manual.html | 100 - .../tests/core-aam/menuitemradio-manual.html | 106 - .../tests/core-aam/navigation_new-manual.html | 108 - .../tests/core-aam/none_new-manual.html | 72 - .../tests/core-aam/note-manual.html | 90 - .../option_inside_combobox-manual.html | 90 - .../option_not_inside_combobox-manual.html | 90 - .../tests/core-aam/presentation-manual.html | 72 - .../tests/core-aam/progressbar-manual.html | 110 - .../tests/core-aam/radio-manual.html | 96 - .../tests/core-aam/radiogroup-manual.html | 86 - ...on_with_an_accessible_name_new-manual.html | 114 - ...without_an_accessible_name_new-manual.html | 84 - .../core-aam/row_inside_treegrid-manual.html | 100 - .../row_not_inside_treegrid-manual.html | 100 - .../tests/core-aam/rowgroup-manual.html | 81 - .../tests/core-aam/rowheader-manual.html | 102 - .../tests/core-aam/scrollbar-manual.html | 104 - .../tests/core-aam/search_new-manual.html | 108 - .../tests/core-aam/searchbox_new-manual.html | 110 - .../separator_focusable_new-manual.html | 104 - .../separator_non-focusable-manual.html | 84 - .../tests/core-aam/slider-manual.html | 104 - .../tests/core-aam/spinbutton-manual.html | 104 - .../tests/core-aam/status-manual.html | 134 - .../tests/core-aam/switch_new-manual.html | 116 - .../tests/core-aam/tab-manual.html | 86 - .../tests/core-aam/table_new-manual.html | 153 - .../tests/core-aam/tablist-manual.html | 112 - .../tests/core-aam/tabpanel-manual.html | 84 - .../tests/core-aam/term_new-manual.html | 96 - ...x_when_aria-multiline_is_false-manual.html | 104 - ...ox_when_aria-multiline_is_true-manual.html | 104 - .../tests/core-aam/timer-manual.html | 132 - .../tests/core-aam/toolbar-manual.html | 84 - .../tests/core-aam/tooltip-manual.html | 84 - .../tests/core-aam/tree-manual.html | 106 - .../tests/core-aam/treegrid-manual.html | 120 - .../tests/core-aam/treeitem-manual.html | 86 - .../font-display-ref.html | 0 .../font-display.html | 0 .../resources/slow-ahem-loading.py | 2 +- .../css-paint-api/background-image-alpha.html | 4 +- .../tests/css-paint-api/paint-arguments.html | 2 +- .../paint-function-arguments.html | 2 +- .../parse-input-arguments-016.html | 4 +- .../parse-input-arguments-017.html | 4 +- .../parse-input-arguments-019.html | 47 - .../parse-input-arguments-020.html | 46 - .../parse-input-arguments-021.html | 49 - .../parse-input-arguments-022.html | 47 - .../attribute-value-selector-001-ref.xht | 4 +- .../attribute-value-selector-001.xht | 4 +- .../attribute-value-selector-002.xht | 8 +- .../attribute-value-selector-003.xht | 4 +- .../tests/css/CSS2/syntax/core-syntax-001.xht | 1 - .../tests/css/CSS2/syntax/core-syntax-002.xht | 1 - .../tests/css/CSS2/syntax/core-syntax-003.xht | 1 - .../tests/css/CSS2/syntax/core-syntax-004.xht | 1 - .../tests/css/CSS2/syntax/core-syntax-006.xht | 1 - .../tests/css/CSS2/syntax/core-syntax-007.xht | 1 - .../tests/css/CSS2/syntax/core-syntax-008.xht | 3 +- .../tests/css/CSS2/syntax/core-syntax-009.xht | 1 - ...rid-alignment-implies-size-change-001.html | 41 - ...rid-alignment-implies-size-change-002.html | 41 - ...rid-alignment-implies-size-change-003.html | 41 - ...rid-alignment-implies-size-change-004.html | 41 - ...rid-alignment-implies-size-change-005.html | 41 - ...rid-alignment-implies-size-change-006.html | 41 - ...rid-alignment-implies-size-change-007.html | 41 - ...rid-alignment-implies-size-change-008.html | 41 - ...rid-alignment-implies-size-change-009.html | 41 - ...rid-alignment-implies-size-change-010.html | 41 - ...rid-alignment-implies-size-change-011.html | 41 - ...rid-alignment-implies-size-change-012.html | 41 - ...rid-alignment-implies-size-change-013.html | 41 - ...rid-alignment-implies-size-change-014.html | 41 - ...rid-alignment-implies-size-change-015.html | 41 - ...rid-alignment-implies-size-change-016.html | 41 - ...rid-alignment-implies-size-change-017.html | 41 - ...rid-alignment-implies-size-change-018.html | 41 - ...rid-alignment-implies-size-change-019.html | 41 - ...rid-alignment-implies-size-change-020.html | 41 - ...rid-alignment-implies-size-change-021.html | 41 - ...rid-alignment-implies-size-change-022.html | 41 - ...rid-alignment-implies-size-change-023.html | 41 - ...rid-alignment-implies-size-change-024.html | 41 - ...rid-alignment-implies-size-change-025.html | 41 - ...rid-alignment-implies-size-change-026.html | 41 - ...rid-alignment-implies-size-change-027.html | 41 - ...rid-alignment-implies-size-change-028.html | 42 - ...rid-alignment-implies-size-change-029.html | 41 - ...rid-alignment-implies-size-change-030.html | 41 - ...rid-alignment-implies-size-change-031.html | 41 - ...rid-alignment-implies-size-change-032.html | 41 - ...rid-alignment-implies-size-change-033.html | 41 - ...rid-alignment-implies-size-change-034.html | 41 - ...rid-alignment-implies-size-change-035.html | 41 - ...rid-alignment-implies-size-change-036.html | 41 - .../grid-content-distribution-001.html | 1 - .../grid-content-distribution-002.html | 1 - .../grid-content-distribution-003.html | 1 - .../grid-content-distribution-004.html | 1 - .../grid-content-distribution-005.html | 1 - .../grid-content-distribution-006.html | 1 - .../grid-content-distribution-007.html | 1 - .../grid-content-distribution-008.html | 1 - .../grid-content-distribution-009.html | 1 - .../grid-content-distribution-010.html | 1 - .../grid-content-distribution-011.html | 1 - .../grid-content-distribution-012.html | 1 - .../grid-content-distribution-013.html | 1 - .../grid-content-distribution-014.html | 1 - .../grid-content-distribution-015.html | 1 - .../grid-content-distribution-016.html | 1 - .../grid-content-distribution-017.html | 1 - .../grid-content-distribution-019.html | 1 - .../grid-content-distribution-020.html | 1 - .../grid-content-distribution-021.html | 1 - .../grid-content-distribution-022.html | 1 - .../grid-content-distribution-023.html | 1 - .../grid-content-distribution-024.html | 1 - .../grid-content-distribution-025.html | 1 - ...istribution-with-collapsed-tracks-001.html | 4 +- ...istribution-with-collapsed-tracks-002.html | 3 +- ...istribution-with-collapsed-tracks-003.html | 3 +- ...istribution-with-collapsed-tracks-004.html | 3 +- ...istribution-with-collapsed-tracks-005.html | 3 +- ...istribution-with-collapsed-tracks-006.html | 3 +- ...istribution-with-collapsed-tracks-007.html | 3 +- ...istribution-with-collapsed-tracks-008.html | 3 +- ...istribution-with-collapsed-tracks-009.html | 3 +- ...istribution-with-collapsed-tracks-010.html | 3 +- ...istribution-with-collapsed-tracks-011.html | 3 +- ...istribution-with-collapsed-tracks-012.html | 3 +- ...istribution-with-collapsed-tracks-013.html | 3 +- ...istribution-with-collapsed-tracks-014.html | 3 +- ...istribution-with-collapsed-tracks-015.html | 3 +- ...istribution-with-collapsed-tracks-016.html | 3 +- ...istribution-with-collapsed-tracks-017.html | 3 +- ...istribution-with-collapsed-tracks-018.html | 3 +- ...istribution-with-collapsed-tracks-019.html | 3 +- ...istribution-with-collapsed-tracks-020.html | 3 +- ...istribution-with-collapsed-tracks-021.html | 3 +- ...istribution-with-collapsed-tracks-022.html | 3 +- ...istribution-with-collapsed-tracks-023.html | 3 +- ...istribution-with-collapsed-tracks-024.html | 3 +- .../grid-self-alignment-stretch-001.html | 1 - .../grid-self-alignment-stretch-002.html | 1 - .../grid-self-alignment-stretch-003.html | 1 - .../grid-self-alignment-stretch-004.html | 1 - .../grid-self-alignment-stretch-005.html | 1 - .../grid-self-alignment-stretch-006.html | 1 - .../grid-self-alignment-stretch-007.html | 1 - .../grid-self-alignment-stretch-008.html | 1 - .../grid-self-alignment-stretch-009.html | 1 - .../grid-self-alignment-stretch-010.html | 1 - .../grid-self-alignment-stretch-011.html | 1 - .../grid-self-alignment-stretch-012.html | 1 - .../grid-self-alignment-stretch-013.html | 1 - .../grid-self-alignment-stretch-014.html | 1 - .../grid-self-alignment-stretch-015.html | 1 - .../grid-self-alignment-stretch-016.html | 1 - ...elf-alignment-stretch-vertical-lr-001.html | 1 - ...elf-alignment-stretch-vertical-lr-002.html | 1 - ...elf-alignment-stretch-vertical-lr-003.html | 1 - ...elf-alignment-stretch-vertical-lr-004.html | 1 - ...elf-alignment-stretch-vertical-lr-005.html | 1 - ...elf-alignment-stretch-vertical-lr-006.html | 1 - ...elf-alignment-stretch-vertical-lr-007.html | 1 - ...elf-alignment-stretch-vertical-lr-008.html | 1 - ...elf-alignment-stretch-vertical-lr-009.html | 1 - ...elf-alignment-stretch-vertical-lr-010.html | 1 - ...elf-alignment-stretch-vertical-lr-011.html | 1 - ...elf-alignment-stretch-vertical-lr-012.html | 1 - ...elf-alignment-stretch-vertical-lr-013.html | 1 - ...elf-alignment-stretch-vertical-lr-014.html | 1 - ...elf-alignment-stretch-vertical-lr-015.html | 1 - ...elf-alignment-stretch-vertical-lr-016.html | 1 - ...elf-alignment-stretch-vertical-rl-001.html | 1 - ...elf-alignment-stretch-vertical-rl-002.html | 1 - ...elf-alignment-stretch-vertical-rl-003.html | 1 - ...elf-alignment-stretch-vertical-rl-004.html | 1 - ...elf-alignment-stretch-vertical-rl-005.html | 1 - ...elf-alignment-stretch-vertical-rl-006.html | 1 - ...elf-alignment-stretch-vertical-rl-007.html | 1 - ...elf-alignment-stretch-vertical-rl-008.html | 1 - ...elf-alignment-stretch-vertical-rl-009.html | 1 - ...elf-alignment-stretch-vertical-rl-010.html | 1 - ...elf-alignment-stretch-vertical-rl-011.html | 1 - ...elf-alignment-stretch-vertical-rl-012.html | 1 - ...elf-alignment-stretch-vertical-rl-013.html | 1 - ...elf-alignment-stretch-vertical-rl-014.html | 1 - ...elf-alignment-stretch-vertical-rl-015.html | 1 - ...elf-alignment-stretch-vertical-rl-016.html | 2 - ...f-baseline-changes-grid-area-size-001.html | 1 - ...f-baseline-changes-grid-area-size-002.html | 1 - ...f-baseline-changes-grid-area-size-003.html | 1 - ...f-baseline-changes-grid-area-size-004.html | 1 - ...f-baseline-changes-grid-area-size-005.html | 1 - ...f-baseline-changes-grid-area-size-006.html | 1 - ...f-baseline-changes-grid-area-size-007.html | 1 - ...f-baseline-changes-grid-area-size-008.html | 1 - ...f-baseline-changes-grid-area-size-009.html | 1 - ...f-baseline-changes-grid-area-size-010.html | 1 - ...f-baseline-changes-grid-area-size-011.html | 1 - ...f-baseline-changes-grid-area-size-012.html | 1 - .../grid-definition/grid-shorthand-001.html | 37 - .../grid-minimum-size-grid-items-006.html | 2 +- .../grid-minimum-size-grid-items-007.html | 10 +- .../grid-minimum-size-grid-items-008.html | 2 +- .../grid-minimum-size-grid-items-009.html | 9 +- .../grid-minimum-size-grid-items-021.html | 14 +- .../grid-items/support/100x50-green.png | Bin 0 -> 15130 bytes .../grid-items/support/25x50-green.png | Bin 99 -> 0 bytes .../grid-items/support/50x100-green.png | Bin 0 -> 15180 bytes .../grid-items/support/50x25-green.png | Bin 100 -> 0 bytes .../css/css-grid-1/support/style-change.js | 5 - .../OWNERS | 0 .../logicalprops-block-size-vlr.html | 0 .../logicalprops-block-size.html | 0 .../logicalprops-inline-size-vlr.html | 0 .../logicalprops-inline-size.html | 0 .../logicalprops-quirklength.html | 2 +- .../resources/style-check.js | 0 .../cascading-001-ref.html | 0 .../cascading-001.html | 0 .../fixed-layout-calc-width-001.html | 35 - ...-layout-excess-width-distribution-001.html | 43 - .../css-tables-3/support/check-layout-th.js | 190 - .../css-text-3/white-space/pre-wrap-001.html | 24 - .../css-text-3/white-space/pre-wrap-002.html | 25 - .../css-text-3/white-space/pre-wrap-003.html | 25 - .../css-text-3/white-space/pre-wrap-004.html | 25 - .../css-text-3/white-space/pre-wrap-005.html | 25 - .../css-text-3/white-space/pre-wrap-006.html | 25 - .../css-text-3/white-space/pre-wrap-007.html | 26 - .../css-text-3/white-space/pre-wrap-008.html | 27 - .../css-text-3/white-space/pre-wrap-009.html | 27 - .../css-text-3/white-space/pre-wrap-010.html | 27 - .../css-text-3/white-space/pre-wrap-011.html | 27 - .../css-text-3/white-space/pre-wrap-012.html | 26 - .../css-text-3/white-space/pre-wrap-013.html | 26 - .../css-text-3/white-space/pre-wrap-014.html | 27 - .../reference/pre-wrap-001-ref.html | 16 - .../reference/textarea-pre-wrap-001-ref.html | 33 - .../white-space/textarea-pre-wrap-001.html | 35 - .../white-space/textarea-pre-wrap-002.html | 36 - .../white-space/textarea-pre-wrap-003.html | 36 - .../white-space/textarea-pre-wrap-004.html | 36 - .../white-space/textarea-pre-wrap-005.html | 36 - .../white-space/textarea-pre-wrap-006.html | 36 - .../white-space/textarea-pre-wrap-007.html | 37 - .../white-space/textarea-pre-wrap-008.html | 38 - .../white-space/textarea-pre-wrap-009.html | 38 - .../white-space/textarea-pre-wrap-010.html | 38 - .../white-space/textarea-pre-wrap-011.html | 38 - .../white-space/textarea-pre-wrap-012.html | 37 - .../white-space/textarea-pre-wrap-013.html | 37 - .../white-space/textarea-pre-wrap-014.html | 38 - .../css/css-transitions-1/events-001.html | 330 +- .../css/css-transitions-1/events-002.html | 167 +- .../css/css-transitions-1/events-003.html | 163 +- .../css/css-transitions-1/events-004.html | 189 +- .../css/css-transitions-1/events-005.html | 191 +- .../css/css-transitions-1/events-006.html | 173 +- .../css/css-transitions-1/events-007.html | 98 +- .../css/css-transitions-1/support/helper.js | 103 - .../tests/css/css-ui-3/caret-color-020.html | 9 +- .../tests/css/css-ui-3/text-overflow-006.html | 15 +- .../tests/css/css-ui-3/text-overflow-023.html | 35 - .../absolute-length-units-001.html | 43 - .../vh_not_refreshing_on_chrome-ref.html | 17 +- ...h_not_refreshing_on_chrome_iframe-ref.html | 7 +- .../vh_not_refreshing_on_chrome_iframe.html | 12 +- .../vh_not_refreshing_on_chrome.html | 17 +- .../web-platform/tests/css/geometry-1/OWNERS | 1 + .../tests/css/geometry-1/spec-examples.html | 92 - .../tests/css/work-in-progress/opera/OWNERS | 2 +- testing/web-platform/tests/cssom-view/OWNERS | 1 + .../tests/cssom-view/elementFromPosition.html | 2 +- .../tests/cssom-view/interfaces.html | 67 - .../scrollBoundaryBehavior-manual.html | 151 - .../tests/cssom-view/scrollintoview.html | 112 - .../tests/cssom-view/ttwf-scrollintoview.html | 32 + testing/web-platform/tests/cssom/OWNERS | 1 + .../web-platform/tests/cssom/interfaces.html | 227 +- .../tests/cssom/support/xmlss-pi.xhtml | 1 - testing/web-platform/tests/docs/OWNERS | 1 + .../web-platform/tests/docs/introduction.md | 2 +- testing/web-platform/tests/dom/OWNERS | 1 + .../tests/dom/nodes/Node-cloneNode.html | 1 + ...edia-default-feature-policy.https.sub.html | 21 - .../web-platform/tests/feature-policy/OWNERS | 1 - .../tests/feature-policy/README.md | 8 +- .../feature-policy/resources/featurepolicy.js | 100 +- testing/web-platform/tests/fetch/OWNERS | 1 - .../tests/fetch/api/cors/cors-expose-star.js | 17 +- .../fetch/api/cors/cors-preflight-star.any.js | 8 +- .../api/response/response-cancel-stream.html | 16 +- .../tests/gamepad/idlharness-manual.html | 4 +- .../tests/gamepad/idlharness.html | 4 +- ...{idlharness.https.html => idlharness.html} | 22 +- .../tests/gyroscope/idlharness.https.html | 46 +- .../tests/hr-time/timeOrigin.html | 5 +- .../hr-time/window-worker-time-origin.html | 36 + .../window-worker-timeOrigin.window.js | 30 - testing/web-platform/tests/html/OWNERS | 1 + .../named-objects.html | 8 +- .../dom-tree-accessors/nameditem-03.html | 100 +- .../dom-tree-accessors/nameditem-08.html | 13 +- .../tests/html/dom/historical.html | 33 - .../tests/html/dom/interfaces.html | 1 + .../collections/htmlallcollection.html | 95 +- .../the-style-element/style_type.html | 71 - .../the-style-element/style_type_change.html | 39 - .../mime-types/canPlayType.html | 5 +- .../track/track-element/track-cue-order.html | 83 - .../the-dialog-element/dialog-showModal.html | 55 - .../tests/html/semantics/interfaces.js | 2 +- .../script-language-type.html | 18 + .../script-languages-01.html | 24 + ...guage-js.html => script-languages-02.html} | 3 +- .../script-type-and-language-empty.html | 48 - .../script-type-and-language-with-params.html | 41 - .../pseudo-classes/checked-type-change.html | 24 - .../indeterminate-type-change.html | 24 - .../inrange-outofrange-type-change.html | 43 - .../idle-callbacks/callback-suspended.html | 2 +- .../the-navigator-object/content.html | 136 + .../the-navigator-object/content/001.xhtml | 16 + .../the-navigator-object/content/002.xhtml | 19 + .../the-navigator-object/content/003.xhtml | 18 + .../the-navigator-object/content/004.xhtml | 18 + .../the-navigator-object/content/005.xhtml | 18 + .../the-navigator-object/content/006.xhtml | 18 + .../the-navigator-object/historical.window.js | 10 - .../navigator-pluginarray.html | 19 - .../the-navigator-object/protocol/001.xhtml | 17 + .../the-navigator-object/protocol/002.xhtml | 19 + .../the-navigator-object/protocol/003.xhtml | 18 + .../the-navigator-object/protocol/004.xhtml | 18 + .../the-navigator-object/protocol/005.xhtml | 18 + .../the-navigator-object/protocol/006.xhtml | 19 + .../tests/innerText/getter-tests.js | 7 - .../input-events-cut-paste-manual.html | 83 - .../input-events-exec-command.html | 86 - ...input-events-get-target-ranges-manual.html | 76 - .../input-events-typing-data-manual.html | 38 + .../input-events-typing-manual.html | 60 - .../tests/interfaces/cssom-view.idl | 184 - .../web-platform/tests/interfaces/cssom.idl | 327 +- .../tests/interfaces/geometry.idl | 8 +- .../web-platform/tests/interfaces/html.idl | 5 + .../tests/interfaces/payment-handler.idl | 55 - .../tests/interfaces/payment-request.idl | 114 - testing/web-platform/tests/lint.whitelist | 3 +- .../web-platform/tests/longtask-timing/OWNERS | 2 - .../tests/magnetometer/idlharness.https.html | 53 +- .../mediacapture-streams/GUM-api.https.html | 9 +- .../mediacapture-streams/GUM-deny.https.html | 18 +- .../GUM-empty-option-param.https.html | 23 +- .../GUM-impossible-constraint.https.html | 18 +- .../GUM-optional-constraint.https.html | 16 +- .../GUM-trivial-constraint.https.html | 16 +- .../GUM-unknownkey-option-param.https.html | 34 +- ...tream-MediaElement-preload-none.https.html | 28 +- ...iaStream-MediaElement-srcObject.https.html | 56 +- .../MediaStream-add-audio-track.https.html | 5 +- .../MediaStream-audio-only.https.html | 3 +- ...ream-default-feature-policy.https.sub.html | 61 - .../MediaStream-finished-add.https.html | 5 +- .../MediaStream-gettrackid.https.html | 7 +- .../MediaStream-id-manual.https.html | 15 +- .../MediaStream-idl.https.html | 50 +- .../MediaStream-removetrack.https.html | 5 +- .../MediaStream-video-only.https.html | 3 +- ...ement-disabled-audio-is-silence.https.html | 4 +- ...Element-disabled-video-is-black.https.html | 52 +- .../MediaStreamTrack-end-manual.https.html | 3 +- .../MediaStreamTrack-id.https.html | 4 +- .../MediaStreamTrack-init.https.html | 28 +- .../conformance-requirements/.gitkeep | 0 .../converting-html-to-other-formats/.gitkeep | 0 .../json/.gitkeep | 0 .../tests/microdata/dependencies/.gitkeep | 0 .../microdata/encoding-microdata/.gitkeep | 0 .../associating-names-with-items/.gitkeep | 0 .../encoding-microdata/items/.gitkeep | 0 .../microdata-and-other-namespaces/.gitkeep | 0 .../names-the-itemprop-attribute/.gitkeep | 0 .../original-id.json | 1 + .../the-microdata-model/.gitkeep | 0 .../encoding-microdata/values/.gitkeep | 0 .../tests/microdata/iana/.gitkeep | 0 .../tests/microdata/introduction/.gitkeep | 0 .../global-identifiers-for-items/.gitkeep | 0 .../microdata/introduction/overview/.gitkeep | 0 .../.gitkeep | 0 .../introduction/the-basic-syntax/.gitkeep | 0 .../introduction/typed-items/.gitkeep | 0 .../using-the-microdata-dom-api/.gitkeep | 0 .../tests/microdata/terminology/.gitkeep | 0 .../orientation-sensor/idlharness.https.html | 55 +- .../web-platform/tests/paint-timing/OWNERS | 2 - .../tests/paint-timing/basetest.html | 46 - .../first-contentful-bg-image.html | 41 - .../paint-timing/first-contentful-canvas.html | 41 - .../paint-timing/first-contentful-image.html | 40 - .../paint-timing/first-contentful-paint.html | 66 - .../paint-timing/first-contentful-svg.html | 40 - .../paint-timing/first-paint-bg-color.html | 37 - .../tests/paint-timing/first-paint-only.html | 40 - .../tests/paint-timing/resources/circle.svg | 3 - .../tests/paint-timing/resources/circles.png | Bin 2479 -> 0 bytes .../web-platform/tests/payment-handler/OWNERS | 2 - .../payment-handler/interfaces.https.any.js | 20 - .../web-platform/tests/payment-request/OWNERS | 4 - ...plicate-shipping-options-manual.https.html | 89 - .../algorithms-manual.https.html | 180 - ...emoving-allowpaymentrequest.https.sub.html | 28 +- ...-allowpaymentrequest-timing.https.sub.html | 7 +- ...setting-allowpaymentrequest.https.sub.html | 2 +- .../change-shipping-option-manual.https.html | 86 - .../payment-request/interfaces.https.html | 155 +- ...-attribute-redirect-on-load.https.sub.html | 0 ...by-feature-policy-attribute.https.sub.html | 0 ...t-allowed-by-feature-policy.https.sub.html | 0 ...d-by-feature-policy.https.sub.html.headers | 0 ...ment-default-feature-policy.https.sub.html | 0 ...-disabled-by-feature-policy.https.sub.html | 0 ...d-by-feature-policy.https.sub.html.headers | 0 .../payment-request-constructor.https.html | 122 +- ...quest-ctor-currency-code-checks.https.html | 6 +- .../payment-request-id-attribute.https.html | 1 - ...shippingaddresschange-attribute.https.html | 5 - ...nshippingoptionchange-attribute.https.html | 5 - ...quest-shippingAddress-attribute.https.html | 28 - ...equest-shippingOption-attribute.https.html | 100 - ...-request-shippingType-attribute.https.html | 5 - .../payment-request-show-method.https.html | 10 - ...equest-update-event-constructor.http.html} | 0 ...quest-update-event-constructor.https.html} | 1 - ...update-event-updatewith-method.https.html} | 0 .../payment-response/helpers.js | 56 - ...hippingAddress-attribute-manual.https.html | 2 - .../rejects_if_not_active.https.html | 156 - .../payment-request/resources/page1.html | 1 - .../payment-request/resources/page2.html | 1 - ...shipping-address-changed-manual.https.html | 77 - .../user-abort-algorithm-manual.https.html | 62 - .../performance-timeline/po-observe.html | 3 +- ...tionConnection_onmessage_receiving-ua.html | 4 +- testing/web-platform/tests/quirks-mode/OWNERS | 2 +- .../tests/resources/idlharness.js | 24 +- .../idlharness/IdlArray/is_json_type.html | 10 - .../IdlInterface/test_to_json_operation.html | 18 +- .../resources/test/tests/idlharness/helper.js | 1 - .../tests/resources/testharnessreport.js | 13 - .../fetch-frame-resource.https.html | 7 +- .../extendable-event-async-waituntil.js | 21 +- .../resources/registration-tests.js | 460 ++ .../skip-waiting-installed-worker.js | 22 +- .../brand-checks.dedicatedworker.html | 11 - .../readable-byte-streams/brand-checks.html | 10 - .../readable-byte-streams/brand-checks.js | 194 - .../brand-checks.serviceworker.https.html | 12 - .../brand-checks.sharedworker.html | 11 - .../tests/streams/resources/test-utils.js | 1 - .../tests/tools/ci/ci_stability.sh | 2 +- .../wptrunner/wptrunner/browsers/sauce.py | 2 +- .../tools/wptrunner/wptrunner/environment.py | 2 +- .../tests/tools/wptrunner/wptrunner/font.py | 110 - .../wptrunner/wptrunner/wptcommandline.py | 5 - .../tools/wptrunner/wptrunner/wptrunner.py | 8 +- testing/web-platform/tests/uievents/OWNERS | 1 - testing/web-platform/tests/url/OWNERS | 1 + .../web-platform/tests/url/urltestdata.json | 57 - ...wport-attribute-event-handlers-manual.html | 75 - .../tests/wai-aria/tools/make_tests.pl | 4 +- .../tests/state/get_element_attribute.py | 1 + .../tests/webdriver/tests/support/fixtures.py | 2 +- ...RTCConfiguration-iceCandidatePoolSize.html | 14 +- .../RTCPeerConnection-createAnswer.html | 4 +- .../tests/webrtc/RTCPeerConnection-helper.js | 28 +- ...Connection-setLocalDescription-answer.html | 8 +- ...rConnection-setLocalDescription-offer.html | 2 +- ...nnection-setLocalDescription-pranswer.html | 8 +- ...nnection-setLocalDescription-rollback.html | 2 +- ...RTCPeerConnection-setLocalDescription.html | 2 +- ...onnection-setRemoteDescription-answer.html | 4 +- ...Connection-setRemoteDescription-offer.html | 8 +- ...nection-setRemoteDescription-pranswer.html | 2 +- ...nection-setRemoteDescription-rollback.html | 2 +- ...TCPeerConnection-setRemoteDescription.html | 2 +- .../webrtc/RTCSctpTransport-constructor.html | 2 +- testing/web-platform/tests/websockets/OWNERS | 1 + .../tests/websockets/constructor/010.html | 13 +- .../tests/websockets/constructor/011.html | 12 +- .../tests/webstorage/storage_enumerate.html | 27 - .../web-platform/tests/webvr/idlharness.html | 10 +- testing/web-platform/tests/webvtt/OWNERS | 1 + .../parsing/cue-text-parsing/dat/entities.dat | 2 +- .../cue-text-parsing/tests/entities.html | 2 +- testing/web-platform/tests/workers/OWNERS | 1 + .../workers/worker-performance.worker.js | 128 - 702 files changed, 7600 insertions(+), 33132 deletions(-) delete mode 100644 testing/web-platform/tests/XMLHttpRequest/access-control-basic-cors-safelisted-request-headers.htm delete mode 100644 testing/web-platform/tests/XMLHttpRequest/access-control-basic-cors-safelisted-response-headers.htm delete mode 100644 testing/web-platform/tests/XMLHttpRequest/access-control-basic-get-fail-non-simple.htm delete mode 100644 testing/web-platform/tests/XMLHttpRequest/access-control-preflight-async-method-denied.htm delete mode 100644 testing/web-platform/tests/XMLHttpRequest/access-control-preflight-async-not-supported.htm delete mode 100644 testing/web-platform/tests/XMLHttpRequest/access-control-preflight-headers-async.htm delete mode 100644 testing/web-platform/tests/XMLHttpRequest/access-control-preflight-request-header-sorted.htm delete mode 100644 testing/web-platform/tests/XMLHttpRequest/access-control-preflight-request-headers-origin.htm delete mode 100644 testing/web-platform/tests/XMLHttpRequest/access-control-preflight-request-invalid-status-400.htm delete mode 100644 testing/web-platform/tests/XMLHttpRequest/access-control-preflight-request-must-not-contain-cookie.htm delete mode 100644 testing/web-platform/tests/XMLHttpRequest/access-control-preflight-sync-header-denied.htm delete mode 100644 testing/web-platform/tests/XMLHttpRequest/access-control-preflight-sync-method-denied.htm delete mode 100644 testing/web-platform/tests/XMLHttpRequest/access-control-preflight-sync-not-supported.htm delete mode 100644 testing/web-platform/tests/XMLHttpRequest/access-control-recursive-failed-request.htm delete mode 100644 testing/web-platform/tests/XMLHttpRequest/access-control-response-with-body-sync.htm delete mode 100644 testing/web-platform/tests/XMLHttpRequest/access-control-response-with-body.htm delete mode 100644 testing/web-platform/tests/XMLHttpRequest/access-control-response-with-exposed-headers.htm delete mode 100644 testing/web-platform/tests/XMLHttpRequest/access-control-sandboxed-iframe-allow-origin-null.htm delete mode 100644 testing/web-platform/tests/XMLHttpRequest/access-control-sandboxed-iframe-allow.htm delete mode 100644 testing/web-platform/tests/XMLHttpRequest/access-control-sandboxed-iframe-denied-without-wildcard.htm delete mode 100644 testing/web-platform/tests/XMLHttpRequest/access-control-sandboxed-iframe-denied.htm delete mode 100644 testing/web-platform/tests/XMLHttpRequest/resources/access-control-allow-with-body.py delete mode 100644 testing/web-platform/tests/XMLHttpRequest/resources/access-control-basic-cors-safelisted-request-headers.py delete mode 100644 testing/web-platform/tests/XMLHttpRequest/resources/access-control-basic-whitelist-response-headers.py delete mode 100644 testing/web-platform/tests/XMLHttpRequest/resources/access-control-cookie.py delete mode 100644 testing/web-platform/tests/XMLHttpRequest/resources/access-control-preflight-request-header-sorted.py delete mode 100644 testing/web-platform/tests/XMLHttpRequest/resources/access-control-preflight-request-headers-origin.py delete mode 100644 testing/web-platform/tests/XMLHttpRequest/resources/access-control-preflight-request-must-not-contain-cookie.py delete mode 100644 testing/web-platform/tests/XMLHttpRequest/resources/access-control-sandboxed-iframe.html create mode 100644 testing/web-platform/tests/auxclick/OWNERS delete mode 100644 testing/web-platform/tests/background-fetch/content-security-policy.https.window.js delete mode 100644 testing/web-platform/tests/background-fetch/credentials-in-url.https.window.js delete mode 100644 testing/web-platform/tests/background-fetch/dangling-markup.https.window.js delete mode 100644 testing/web-platform/tests/background-fetch/mixed-content-and-allowed-schemes.https.window.js delete mode 100644 testing/web-platform/tests/background-fetch/port-blocking.https.window.js delete mode 100644 testing/web-platform/tests/background-fetch/resources/sw.js delete mode 100644 testing/web-platform/tests/background-fetch/resources/utils.js rename testing/web-platform/tests/{clipboard-apis => clipboard}/OWNERS (100%) create mode 100644 testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-archive-codebase.sub.html create mode 100644 testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-archive-codebase.sub.html.sub.headers create mode 100644 testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-archive.sub.html create mode 100644 testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-archive.sub.html.sub.headers create mode 100644 testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-code-codebase.sub.html create mode 100644 testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-code-codebase.sub.html.sub.headers create mode 100644 testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-code.sub.html create mode 100644 testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-code.sub.html.sub.headers delete mode 100644 testing/web-platform/tests/core-aam/OWNERS delete mode 100644 testing/web-platform/tests/core-aam/README.md delete mode 100644 testing/web-platform/tests/core-aam/alert-manual.html delete mode 100644 testing/web-platform/tests/core-aam/alertdialog-manual.html delete mode 100644 testing/web-platform/tests/core-aam/application-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-atomic_false-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-atomic_true-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-autocomplete_both_new-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-autocomplete_inline_new-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-autocomplete_list_new-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-busy_false-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-busy_true-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-checked_false_on_checkbox-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-checked_false_on_menuitemradio-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-checked_mixed-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-checked_true_on_checkbox-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-checked_true_on_menuitemradio-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-colcount_new-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-colindex_new-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-colspan_new-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-controls-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-current_with_non-false_allowed_value_new-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-current_with_unrecognized_value_new-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-describedby-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-details_new-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-disabled_false-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-disabled_true-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-dropeffect_copy-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-dropeffect_execute-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-dropeffect_link-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-dropeffect_move-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-dropeffect_none-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-dropeffect_popup-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-errormessage-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-expanded_false-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-expanded_true-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-flowto-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-grabbed_false-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-grabbed_true-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-haspopup_dialog_new-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-haspopup_false-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-haspopup_listbox_new-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-haspopup_menu_new-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-haspopup_tree_new-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-haspopup_true-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-hidden_true-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-invalid_false-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-invalid_grammar-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-invalid_spelling-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-invalid_true-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-invalid_with_unrecognized_value-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-keyshortcuts_new-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-label-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-labelledby-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-level_on_heading_new-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-level_on_non-heading-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-live_assertive-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-live_off-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-live_polite-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-modal_false_new-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-modal_true_new-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-multiline_false-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-multiline_true-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-multiselectable_false-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-multiselectable_true-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-orientation_horizontal-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-orientation_undefined_new-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-orientation_vertical-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-owns_may_need_manual_verification-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-placeholder_new-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-posinset-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-pressed_false-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-pressed_mixed-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-pressed_true-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-readonly_false-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-readonly_is_unspecified_on_gridcell_new-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-readonly_true_on_checkbox-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-readonly_true_on_radiogroup-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-readonly_true_on_textbox-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-relevant-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-required_true-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-roledescription_is_empty_or_whitespace_characters_new-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-roledescription_new-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-rowcount_new-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-rowindex_new-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-rowspan_new-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-selected_false-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-selected_true-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-setsize_-1-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-setsize_3-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-sort_ascending-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-sort_descending-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-sort_none-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-sort_other-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-valuemax-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-valuemin-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-valuenow-manual.html delete mode 100644 testing/web-platform/tests/core-aam/aria-valuetext-manual.html delete mode 100644 testing/web-platform/tests/core-aam/article-manual.html delete mode 100644 testing/web-platform/tests/core-aam/banner_new-manual.html delete mode 100644 testing/web-platform/tests/core-aam/button_with_aria-haspopup_dialog_new-manual.html delete mode 100644 testing/web-platform/tests/core-aam/button_with_aria-haspopup_true_new-manual.html delete mode 100644 testing/web-platform/tests/core-aam/button_with_default_values_for_aria-pressed_and_aria-haspopup-manual.html delete mode 100644 testing/web-platform/tests/core-aam/button_with_defined_value_for_aria-pressed-manual.html delete mode 100644 testing/web-platform/tests/core-aam/cell_new-manual.html delete mode 100644 testing/web-platform/tests/core-aam/checkbox-manual.html delete mode 100644 testing/web-platform/tests/core-aam/columnheader-manual.html delete mode 100644 testing/web-platform/tests/core-aam/combobox-manual.html delete mode 100644 testing/web-platform/tests/core-aam/complementary_new-manual.html delete mode 100644 testing/web-platform/tests/core-aam/contentinfo_new-manual.html delete mode 100644 testing/web-platform/tests/core-aam/definition-manual.html delete mode 100644 testing/web-platform/tests/core-aam/dialog-manual.html delete mode 100644 testing/web-platform/tests/core-aam/directory-manual.html delete mode 100644 testing/web-platform/tests/core-aam/document-manual.html delete mode 100644 testing/web-platform/tests/core-aam/feed_new-manual.html delete mode 100644 testing/web-platform/tests/core-aam/figure_new-manual.html delete mode 100644 testing/web-platform/tests/core-aam/form_new-manual.html delete mode 100644 testing/web-platform/tests/core-aam/grid-manual.html delete mode 100644 testing/web-platform/tests/core-aam/gridcell-manual.html delete mode 100644 testing/web-platform/tests/core-aam/group-manual.html delete mode 100644 testing/web-platform/tests/core-aam/heading-manual.html delete mode 100644 testing/web-platform/tests/core-aam/img-manual.html delete mode 100644 testing/web-platform/tests/core-aam/link-manual.html delete mode 100644 testing/web-platform/tests/core-aam/list-manual.html delete mode 100644 testing/web-platform/tests/core-aam/listbox_not_owned_by_or_child_of_combobox-manual.html delete mode 100644 testing/web-platform/tests/core-aam/listbox_owned_by_or_child_of_combobox-manual.html delete mode 100644 testing/web-platform/tests/core-aam/listitem-manual.html delete mode 100644 testing/web-platform/tests/core-aam/log-manual.html delete mode 100644 testing/web-platform/tests/core-aam/main_new-manual.html delete mode 100644 testing/web-platform/tests/core-aam/marquee-manual.html delete mode 100644 testing/web-platform/tests/core-aam/math-manual.html delete mode 100644 testing/web-platform/tests/core-aam/menu-manual.html delete mode 100644 testing/web-platform/tests/core-aam/menubar-manual.html delete mode 100644 testing/web-platform/tests/core-aam/menuitem_not_owned_by_or_child_of_group-manual.html delete mode 100644 testing/web-platform/tests/core-aam/menuitem_owned_by_or_child_of_group-manual.html delete mode 100644 testing/web-platform/tests/core-aam/menuitemcheckbox-manual.html delete mode 100644 testing/web-platform/tests/core-aam/menuitemradio-manual.html delete mode 100644 testing/web-platform/tests/core-aam/navigation_new-manual.html delete mode 100644 testing/web-platform/tests/core-aam/none_new-manual.html delete mode 100644 testing/web-platform/tests/core-aam/note-manual.html delete mode 100644 testing/web-platform/tests/core-aam/option_inside_combobox-manual.html delete mode 100644 testing/web-platform/tests/core-aam/option_not_inside_combobox-manual.html delete mode 100644 testing/web-platform/tests/core-aam/presentation-manual.html delete mode 100644 testing/web-platform/tests/core-aam/progressbar-manual.html delete mode 100644 testing/web-platform/tests/core-aam/radio-manual.html delete mode 100644 testing/web-platform/tests/core-aam/radiogroup-manual.html delete mode 100644 testing/web-platform/tests/core-aam/region_with_an_accessible_name_new-manual.html delete mode 100644 testing/web-platform/tests/core-aam/region_without_an_accessible_name_new-manual.html delete mode 100644 testing/web-platform/tests/core-aam/row_inside_treegrid-manual.html delete mode 100644 testing/web-platform/tests/core-aam/row_not_inside_treegrid-manual.html delete mode 100644 testing/web-platform/tests/core-aam/rowgroup-manual.html delete mode 100644 testing/web-platform/tests/core-aam/rowheader-manual.html delete mode 100644 testing/web-platform/tests/core-aam/scrollbar-manual.html delete mode 100644 testing/web-platform/tests/core-aam/search_new-manual.html delete mode 100644 testing/web-platform/tests/core-aam/searchbox_new-manual.html delete mode 100644 testing/web-platform/tests/core-aam/separator_focusable_new-manual.html delete mode 100644 testing/web-platform/tests/core-aam/separator_non-focusable-manual.html delete mode 100644 testing/web-platform/tests/core-aam/slider-manual.html delete mode 100644 testing/web-platform/tests/core-aam/spinbutton-manual.html delete mode 100644 testing/web-platform/tests/core-aam/status-manual.html delete mode 100644 testing/web-platform/tests/core-aam/switch_new-manual.html delete mode 100644 testing/web-platform/tests/core-aam/tab-manual.html delete mode 100644 testing/web-platform/tests/core-aam/table_new-manual.html delete mode 100644 testing/web-platform/tests/core-aam/tablist-manual.html delete mode 100644 testing/web-platform/tests/core-aam/tabpanel-manual.html delete mode 100644 testing/web-platform/tests/core-aam/term_new-manual.html delete mode 100644 testing/web-platform/tests/core-aam/textbox_when_aria-multiline_is_false-manual.html delete mode 100644 testing/web-platform/tests/core-aam/textbox_when_aria-multiline_is_true-manual.html delete mode 100644 testing/web-platform/tests/core-aam/timer-manual.html delete mode 100644 testing/web-platform/tests/core-aam/toolbar-manual.html delete mode 100644 testing/web-platform/tests/core-aam/tooltip-manual.html delete mode 100644 testing/web-platform/tests/core-aam/tree-manual.html delete mode 100644 testing/web-platform/tests/core-aam/treegrid-manual.html delete mode 100644 testing/web-platform/tests/core-aam/treeitem-manual.html rename testing/web-platform/tests/{css-fonts/font-display => css-font-display}/font-display-ref.html (100%) rename testing/web-platform/tests/{css-fonts/font-display => css-font-display}/font-display.html (100%) rename testing/web-platform/tests/{css-fonts/font-display => css-font-display}/resources/slow-ahem-loading.py (80%) delete mode 100644 testing/web-platform/tests/css-paint-api/parse-input-arguments-019.html delete mode 100644 testing/web-platform/tests/css-paint-api/parse-input-arguments-020.html delete mode 100644 testing/web-platform/tests/css-paint-api/parse-input-arguments-021.html delete mode 100644 testing/web-platform/tests/css-paint-api/parse-input-arguments-022.html delete mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-001.html delete mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-002.html delete mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-003.html delete mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-004.html delete mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-005.html delete mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-006.html delete mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-007.html delete mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-008.html delete mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-009.html delete mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-010.html delete mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-011.html delete mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-012.html delete mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-013.html delete mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-014.html delete mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-015.html delete mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-016.html delete mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-017.html delete mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-018.html delete mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-019.html delete mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-020.html delete mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-021.html delete mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-022.html delete mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-023.html delete mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-024.html delete mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-025.html delete mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-026.html delete mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-027.html delete mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-028.html delete mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-029.html delete mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-030.html delete mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-031.html delete mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-032.html delete mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-033.html delete mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-034.html delete mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-035.html delete mode 100644 testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-036.html delete mode 100644 testing/web-platform/tests/css/css-grid-1/grid-definition/grid-shorthand-001.html create mode 100644 testing/web-platform/tests/css/css-grid-1/grid-items/support/100x50-green.png delete mode 100644 testing/web-platform/tests/css/css-grid-1/grid-items/support/25x50-green.png create mode 100644 testing/web-platform/tests/css/css-grid-1/grid-items/support/50x100-green.png delete mode 100644 testing/web-platform/tests/css/css-grid-1/grid-items/support/50x25-green.png delete mode 100644 testing/web-platform/tests/css/css-grid-1/support/style-change.js rename testing/web-platform/tests/css/{css-logical-1 => css-logical-properties-1}/OWNERS (100%) rename testing/web-platform/tests/css/{css-logical-1 => css-logical-properties-1}/logicalprops-block-size-vlr.html (100%) rename testing/web-platform/tests/css/{css-logical-1 => css-logical-properties-1}/logicalprops-block-size.html (100%) rename testing/web-platform/tests/css/{css-logical-1 => css-logical-properties-1}/logicalprops-inline-size-vlr.html (100%) rename testing/web-platform/tests/css/{css-logical-1 => css-logical-properties-1}/logicalprops-inline-size.html (100%) rename testing/web-platform/tests/css/{css-logical-1 => css-logical-properties-1}/logicalprops-quirklength.html (86%) rename testing/web-platform/tests/css/{css-logical-1 => css-logical-properties-1}/resources/style-check.js (100%) rename testing/web-platform/tests/css/{css-logical-1 => css-logical-props-1}/cascading-001-ref.html (100%) rename testing/web-platform/tests/css/{css-logical-1 => css-logical-props-1}/cascading-001.html (100%) delete mode 100644 testing/web-platform/tests/css/css-tables-3/fixed-layout-calc-width-001.html delete mode 100644 testing/web-platform/tests/css/css-tables-3/fixed-layout-excess-width-distribution-001.html delete mode 100644 testing/web-platform/tests/css/css-tables-3/support/check-layout-th.js delete mode 100644 testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-001.html delete mode 100644 testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-002.html delete mode 100644 testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-003.html delete mode 100644 testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-004.html delete mode 100644 testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-005.html delete mode 100644 testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-006.html delete mode 100644 testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-007.html delete mode 100644 testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-008.html delete mode 100644 testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-009.html delete mode 100644 testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-010.html delete mode 100644 testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-011.html delete mode 100644 testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-012.html delete mode 100644 testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-013.html delete mode 100644 testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-014.html delete mode 100644 testing/web-platform/tests/css/css-text-3/white-space/reference/pre-wrap-001-ref.html delete mode 100644 testing/web-platform/tests/css/css-text-3/white-space/reference/textarea-pre-wrap-001-ref.html delete mode 100644 testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-001.html delete mode 100644 testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-002.html delete mode 100644 testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-003.html delete mode 100644 testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-004.html delete mode 100644 testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-005.html delete mode 100644 testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-006.html delete mode 100644 testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-007.html delete mode 100644 testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-008.html delete mode 100644 testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-009.html delete mode 100644 testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-010.html delete mode 100644 testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-011.html delete mode 100644 testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-012.html delete mode 100644 testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-013.html delete mode 100644 testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-014.html delete mode 100644 testing/web-platform/tests/css/css-ui-3/text-overflow-023.html delete mode 100644 testing/web-platform/tests/css/css-values-3/absolute-length-units-001.html delete mode 100644 testing/web-platform/tests/css/geometry-1/spec-examples.html delete mode 100644 testing/web-platform/tests/cssom-view/interfaces.html delete mode 100644 testing/web-platform/tests/cssom-view/scrollBoundaryBehavior-manual.html delete mode 100644 testing/web-platform/tests/cssom-view/scrollintoview.html create mode 100644 testing/web-platform/tests/cssom-view/ttwf-scrollintoview.html delete mode 100644 testing/web-platform/tests/cssom/support/xmlss-pi.xhtml delete mode 100644 testing/web-platform/tests/encrypted-media/encrypted-media-default-feature-policy.https.sub.html delete mode 100644 testing/web-platform/tests/feature-policy/OWNERS rename testing/web-platform/tests/generic-sensor/{idlharness.https.html => idlharness.html} (82%) create mode 100644 testing/web-platform/tests/hr-time/window-worker-time-origin.html delete mode 100644 testing/web-platform/tests/hr-time/window-worker-timeOrigin.window.js delete mode 100644 testing/web-platform/tests/html/dom/historical.html delete mode 100644 testing/web-platform/tests/html/semantics/document-metadata/the-style-element/style_type.html delete mode 100644 testing/web-platform/tests/html/semantics/document-metadata/the-style-element/style_type_change.html delete mode 100644 testing/web-platform/tests/html/semantics/embedded-content/media-elements/track/track-element/track-cue-order.html create mode 100644 testing/web-platform/tests/html/semantics/scripting-1/the-script-element/script-language-type.html create mode 100644 testing/web-platform/tests/html/semantics/scripting-1/the-script-element/script-languages-01.html rename testing/web-platform/tests/html/semantics/scripting-1/the-script-element/{script-type-and-language-js.html => script-languages-02.html} (95%) delete mode 100644 testing/web-platform/tests/html/semantics/scripting-1/the-script-element/script-type-and-language-empty.html delete mode 100644 testing/web-platform/tests/html/semantics/scripting-1/the-script-element/script-type-and-language-with-params.html delete mode 100644 testing/web-platform/tests/html/semantics/selectors/pseudo-classes/checked-type-change.html delete mode 100644 testing/web-platform/tests/html/semantics/selectors/pseudo-classes/indeterminate-type-change.html delete mode 100644 testing/web-platform/tests/html/semantics/selectors/pseudo-classes/inrange-outofrange-type-change.html create mode 100644 testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content.html create mode 100644 testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content/001.xhtml create mode 100644 testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content/002.xhtml create mode 100644 testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content/003.xhtml create mode 100644 testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content/004.xhtml create mode 100644 testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content/005.xhtml create mode 100644 testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content/006.xhtml delete mode 100644 testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/historical.window.js create mode 100644 testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/001.xhtml create mode 100644 testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/002.xhtml create mode 100644 testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/003.xhtml create mode 100644 testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/004.xhtml create mode 100644 testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/005.xhtml create mode 100644 testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/006.xhtml delete mode 100644 testing/web-platform/tests/input-events/input-events-cut-paste-manual.html delete mode 100644 testing/web-platform/tests/input-events/input-events-exec-command.html delete mode 100644 testing/web-platform/tests/input-events/input-events-get-target-ranges-manual.html create mode 100644 testing/web-platform/tests/input-events/input-events-typing-data-manual.html delete mode 100644 testing/web-platform/tests/input-events/input-events-typing-manual.html delete mode 100644 testing/web-platform/tests/interfaces/cssom-view.idl delete mode 100644 testing/web-platform/tests/interfaces/payment-handler.idl delete mode 100644 testing/web-platform/tests/interfaces/payment-request.idl delete mode 100644 testing/web-platform/tests/longtask-timing/OWNERS delete mode 100644 testing/web-platform/tests/mediacapture-streams/MediaStream-default-feature-policy.https.sub.html create mode 100644 testing/web-platform/tests/microdata/conformance-requirements/.gitkeep create mode 100644 testing/web-platform/tests/microdata/converting-html-to-other-formats/.gitkeep create mode 100644 testing/web-platform/tests/microdata/converting-html-to-other-formats/json/.gitkeep create mode 100644 testing/web-platform/tests/microdata/dependencies/.gitkeep create mode 100644 testing/web-platform/tests/microdata/encoding-microdata/.gitkeep create mode 100644 testing/web-platform/tests/microdata/encoding-microdata/associating-names-with-items/.gitkeep create mode 100644 testing/web-platform/tests/microdata/encoding-microdata/items/.gitkeep create mode 100644 testing/web-platform/tests/microdata/encoding-microdata/microdata-and-other-namespaces/.gitkeep create mode 100644 testing/web-platform/tests/microdata/encoding-microdata/names-the-itemprop-attribute/.gitkeep create mode 100644 testing/web-platform/tests/microdata/encoding-microdata/names-the-itemprop-attribute/original-id.json create mode 100644 testing/web-platform/tests/microdata/encoding-microdata/the-microdata-model/.gitkeep create mode 100644 testing/web-platform/tests/microdata/encoding-microdata/values/.gitkeep create mode 100644 testing/web-platform/tests/microdata/iana/.gitkeep create mode 100644 testing/web-platform/tests/microdata/introduction/.gitkeep create mode 100644 testing/web-platform/tests/microdata/introduction/global-identifiers-for-items/.gitkeep create mode 100644 testing/web-platform/tests/microdata/introduction/overview/.gitkeep create mode 100644 testing/web-platform/tests/microdata/introduction/selecting-names-when-defining-vocabularies/.gitkeep create mode 100644 testing/web-platform/tests/microdata/introduction/the-basic-syntax/.gitkeep create mode 100644 testing/web-platform/tests/microdata/introduction/typed-items/.gitkeep create mode 100644 testing/web-platform/tests/microdata/introduction/using-the-microdata-dom-api/.gitkeep create mode 100644 testing/web-platform/tests/microdata/terminology/.gitkeep delete mode 100644 testing/web-platform/tests/paint-timing/OWNERS delete mode 100644 testing/web-platform/tests/paint-timing/basetest.html delete mode 100644 testing/web-platform/tests/paint-timing/first-contentful-bg-image.html delete mode 100644 testing/web-platform/tests/paint-timing/first-contentful-canvas.html delete mode 100644 testing/web-platform/tests/paint-timing/first-contentful-image.html delete mode 100644 testing/web-platform/tests/paint-timing/first-contentful-paint.html delete mode 100644 testing/web-platform/tests/paint-timing/first-contentful-svg.html delete mode 100644 testing/web-platform/tests/paint-timing/first-paint-bg-color.html delete mode 100644 testing/web-platform/tests/paint-timing/first-paint-only.html delete mode 100644 testing/web-platform/tests/paint-timing/resources/circle.svg delete mode 100644 testing/web-platform/tests/paint-timing/resources/circles.png delete mode 100644 testing/web-platform/tests/payment-handler/OWNERS delete mode 100644 testing/web-platform/tests/payment-handler/interfaces.https.any.js delete mode 100644 testing/web-platform/tests/payment-request/PaymentRequestUpdateEvent/updateWith-duplicate-shipping-options-manual.https.html delete mode 100644 testing/web-platform/tests/payment-request/algorithms-manual.https.html delete mode 100644 testing/web-platform/tests/payment-request/change-shipping-option-manual.https.html rename testing/web-platform/tests/{feature-policy => payment-request}/payment-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html (100%) rename testing/web-platform/tests/{feature-policy => payment-request}/payment-allowed-by-feature-policy-attribute.https.sub.html (100%) rename testing/web-platform/tests/{feature-policy => payment-request}/payment-allowed-by-feature-policy.https.sub.html (100%) rename testing/web-platform/tests/{feature-policy => payment-request}/payment-allowed-by-feature-policy.https.sub.html.headers (100%) rename testing/web-platform/tests/{feature-policy => payment-request}/payment-default-feature-policy.https.sub.html (100%) rename testing/web-platform/tests/{feature-policy => payment-request}/payment-disabled-by-feature-policy.https.sub.html (100%) rename testing/web-platform/tests/{feature-policy => payment-request}/payment-disabled-by-feature-policy.https.sub.html.headers (100%) delete mode 100644 testing/web-platform/tests/payment-request/payment-request-shippingAddress-attribute.https.html delete mode 100644 testing/web-platform/tests/payment-request/payment-request-shippingOption-attribute.https.html rename testing/web-platform/tests/payment-request/{PaymentRequestUpdateEvent/constructor.http.html => payment-request-update-event-constructor.http.html} (100%) rename testing/web-platform/tests/payment-request/{PaymentRequestUpdateEvent/constructor.https.html => payment-request-update-event-constructor.https.html} (97%) rename testing/web-platform/tests/payment-request/{PaymentRequestUpdateEvent/updatewith-method.https.html => payment-request-update-event-updatewith-method.https.html} (100%) delete mode 100644 testing/web-platform/tests/payment-request/rejects_if_not_active.https.html delete mode 100644 testing/web-platform/tests/payment-request/resources/page1.html delete mode 100644 testing/web-platform/tests/payment-request/resources/page2.html delete mode 100644 testing/web-platform/tests/payment-request/shipping-address-changed-manual.https.html delete mode 100644 testing/web-platform/tests/payment-request/user-abort-algorithm-manual.https.html create mode 100644 testing/web-platform/tests/service-workers/service-worker/resources/registration-tests.js delete mode 100644 testing/web-platform/tests/streams/readable-byte-streams/brand-checks.dedicatedworker.html delete mode 100644 testing/web-platform/tests/streams/readable-byte-streams/brand-checks.html delete mode 100644 testing/web-platform/tests/streams/readable-byte-streams/brand-checks.js delete mode 100644 testing/web-platform/tests/streams/readable-byte-streams/brand-checks.serviceworker.https.html delete mode 100644 testing/web-platform/tests/streams/readable-byte-streams/brand-checks.sharedworker.html delete mode 100644 testing/web-platform/tests/tools/wptrunner/wptrunner/font.py delete mode 100644 testing/web-platform/tests/viewport/viewport-attribute-event-handlers-manual.html delete mode 100644 testing/web-platform/tests/workers/worker-performance.worker.js diff --git a/testing/web-platform/meta/MANIFEST.json b/testing/web-platform/meta/MANIFEST.json index 3d4940886517..fc5d4a2e52c3 100644 --- a/testing/web-platform/meta/MANIFEST.json +++ b/testing/web-platform/meta/MANIFEST.json @@ -307,1038 +307,6 @@ {} ] ], - "core-aam/alert-manual.html": [ - [ - "/core-aam/alert-manual.html", - {} - ] - ], - "core-aam/alertdialog-manual.html": [ - [ - "/core-aam/alertdialog-manual.html", - {} - ] - ], - "core-aam/application-manual.html": [ - [ - "/core-aam/application-manual.html", - {} - ] - ], - "core-aam/aria-atomic_false-manual.html": [ - [ - "/core-aam/aria-atomic_false-manual.html", - {} - ] - ], - "core-aam/aria-atomic_true-manual.html": [ - [ - "/core-aam/aria-atomic_true-manual.html", - {} - ] - ], - "core-aam/aria-autocomplete_both_new-manual.html": [ - [ - "/core-aam/aria-autocomplete_both_new-manual.html", - {} - ] - ], - "core-aam/aria-autocomplete_inline_new-manual.html": [ - [ - "/core-aam/aria-autocomplete_inline_new-manual.html", - {} - ] - ], - "core-aam/aria-autocomplete_list_new-manual.html": [ - [ - "/core-aam/aria-autocomplete_list_new-manual.html", - {} - ] - ], - "core-aam/aria-busy_false-manual.html": [ - [ - "/core-aam/aria-busy_false-manual.html", - {} - ] - ], - "core-aam/aria-busy_true-manual.html": [ - [ - "/core-aam/aria-busy_true-manual.html", - {} - ] - ], - "core-aam/aria-checked_false_on_checkbox-manual.html": [ - [ - "/core-aam/aria-checked_false_on_checkbox-manual.html", - {} - ] - ], - "core-aam/aria-checked_false_on_menuitemradio-manual.html": [ - [ - "/core-aam/aria-checked_false_on_menuitemradio-manual.html", - {} - ] - ], - "core-aam/aria-checked_mixed-manual.html": [ - [ - "/core-aam/aria-checked_mixed-manual.html", - {} - ] - ], - "core-aam/aria-checked_true_on_checkbox-manual.html": [ - [ - "/core-aam/aria-checked_true_on_checkbox-manual.html", - {} - ] - ], - "core-aam/aria-checked_true_on_menuitemradio-manual.html": [ - [ - "/core-aam/aria-checked_true_on_menuitemradio-manual.html", - {} - ] - ], - "core-aam/aria-colcount_new-manual.html": [ - [ - "/core-aam/aria-colcount_new-manual.html", - {} - ] - ], - "core-aam/aria-colindex_new-manual.html": [ - [ - "/core-aam/aria-colindex_new-manual.html", - {} - ] - ], - "core-aam/aria-colspan_new-manual.html": [ - [ - "/core-aam/aria-colspan_new-manual.html", - {} - ] - ], - "core-aam/aria-controls-manual.html": [ - [ - "/core-aam/aria-controls-manual.html", - {} - ] - ], - "core-aam/aria-current_with_non-false_allowed_value_new-manual.html": [ - [ - "/core-aam/aria-current_with_non-false_allowed_value_new-manual.html", - {} - ] - ], - "core-aam/aria-current_with_unrecognized_value_new-manual.html": [ - [ - "/core-aam/aria-current_with_unrecognized_value_new-manual.html", - {} - ] - ], - "core-aam/aria-describedby-manual.html": [ - [ - "/core-aam/aria-describedby-manual.html", - {} - ] - ], - "core-aam/aria-details_new-manual.html": [ - [ - "/core-aam/aria-details_new-manual.html", - {} - ] - ], - "core-aam/aria-disabled_false-manual.html": [ - [ - "/core-aam/aria-disabled_false-manual.html", - {} - ] - ], - "core-aam/aria-disabled_true-manual.html": [ - [ - "/core-aam/aria-disabled_true-manual.html", - {} - ] - ], - "core-aam/aria-dropeffect_copy-manual.html": [ - [ - "/core-aam/aria-dropeffect_copy-manual.html", - {} - ] - ], - "core-aam/aria-dropeffect_execute-manual.html": [ - [ - "/core-aam/aria-dropeffect_execute-manual.html", - {} - ] - ], - "core-aam/aria-dropeffect_link-manual.html": [ - [ - "/core-aam/aria-dropeffect_link-manual.html", - {} - ] - ], - "core-aam/aria-dropeffect_move-manual.html": [ - [ - "/core-aam/aria-dropeffect_move-manual.html", - {} - ] - ], - "core-aam/aria-dropeffect_none-manual.html": [ - [ - "/core-aam/aria-dropeffect_none-manual.html", - {} - ] - ], - "core-aam/aria-dropeffect_popup-manual.html": [ - [ - "/core-aam/aria-dropeffect_popup-manual.html", - {} - ] - ], - "core-aam/aria-errormessage-manual.html": [ - [ - "/core-aam/aria-errormessage-manual.html", - {} - ] - ], - "core-aam/aria-expanded_false-manual.html": [ - [ - "/core-aam/aria-expanded_false-manual.html", - {} - ] - ], - "core-aam/aria-expanded_true-manual.html": [ - [ - "/core-aam/aria-expanded_true-manual.html", - {} - ] - ], - "core-aam/aria-flowto-manual.html": [ - [ - "/core-aam/aria-flowto-manual.html", - {} - ] - ], - "core-aam/aria-grabbed_false-manual.html": [ - [ - "/core-aam/aria-grabbed_false-manual.html", - {} - ] - ], - "core-aam/aria-grabbed_true-manual.html": [ - [ - "/core-aam/aria-grabbed_true-manual.html", - {} - ] - ], - "core-aam/aria-haspopup_dialog_new-manual.html": [ - [ - "/core-aam/aria-haspopup_dialog_new-manual.html", - {} - ] - ], - "core-aam/aria-haspopup_false-manual.html": [ - [ - "/core-aam/aria-haspopup_false-manual.html", - {} - ] - ], - "core-aam/aria-haspopup_listbox_new-manual.html": [ - [ - "/core-aam/aria-haspopup_listbox_new-manual.html", - {} - ] - ], - "core-aam/aria-haspopup_menu_new-manual.html": [ - [ - "/core-aam/aria-haspopup_menu_new-manual.html", - {} - ] - ], - "core-aam/aria-haspopup_tree_new-manual.html": [ - [ - "/core-aam/aria-haspopup_tree_new-manual.html", - {} - ] - ], - "core-aam/aria-haspopup_true-manual.html": [ - [ - "/core-aam/aria-haspopup_true-manual.html", - {} - ] - ], - "core-aam/aria-hidden_true-manual.html": [ - [ - "/core-aam/aria-hidden_true-manual.html", - {} - ] - ], - "core-aam/aria-invalid_false-manual.html": [ - [ - "/core-aam/aria-invalid_false-manual.html", - {} - ] - ], - "core-aam/aria-invalid_grammar-manual.html": [ - [ - "/core-aam/aria-invalid_grammar-manual.html", - {} - ] - ], - "core-aam/aria-invalid_spelling-manual.html": [ - [ - "/core-aam/aria-invalid_spelling-manual.html", - {} - ] - ], - "core-aam/aria-invalid_true-manual.html": [ - [ - "/core-aam/aria-invalid_true-manual.html", - {} - ] - ], - "core-aam/aria-invalid_with_unrecognized_value-manual.html": [ - [ - "/core-aam/aria-invalid_with_unrecognized_value-manual.html", - {} - ] - ], - "core-aam/aria-keyshortcuts_new-manual.html": [ - [ - "/core-aam/aria-keyshortcuts_new-manual.html", - {} - ] - ], - "core-aam/aria-label-manual.html": [ - [ - "/core-aam/aria-label-manual.html", - {} - ] - ], - "core-aam/aria-labelledby-manual.html": [ - [ - "/core-aam/aria-labelledby-manual.html", - {} - ] - ], - "core-aam/aria-level_on_heading_new-manual.html": [ - [ - "/core-aam/aria-level_on_heading_new-manual.html", - {} - ] - ], - "core-aam/aria-level_on_non-heading-manual.html": [ - [ - "/core-aam/aria-level_on_non-heading-manual.html", - {} - ] - ], - "core-aam/aria-live_assertive-manual.html": [ - [ - "/core-aam/aria-live_assertive-manual.html", - {} - ] - ], - "core-aam/aria-live_off-manual.html": [ - [ - "/core-aam/aria-live_off-manual.html", - {} - ] - ], - "core-aam/aria-live_polite-manual.html": [ - [ - "/core-aam/aria-live_polite-manual.html", - {} - ] - ], - "core-aam/aria-modal_false_new-manual.html": [ - [ - "/core-aam/aria-modal_false_new-manual.html", - {} - ] - ], - "core-aam/aria-modal_true_new-manual.html": [ - [ - "/core-aam/aria-modal_true_new-manual.html", - {} - ] - ], - "core-aam/aria-multiline_false-manual.html": [ - [ - "/core-aam/aria-multiline_false-manual.html", - {} - ] - ], - "core-aam/aria-multiline_true-manual.html": [ - [ - "/core-aam/aria-multiline_true-manual.html", - {} - ] - ], - "core-aam/aria-multiselectable_false-manual.html": [ - [ - "/core-aam/aria-multiselectable_false-manual.html", - {} - ] - ], - "core-aam/aria-multiselectable_true-manual.html": [ - [ - "/core-aam/aria-multiselectable_true-manual.html", - {} - ] - ], - "core-aam/aria-orientation_horizontal-manual.html": [ - [ - "/core-aam/aria-orientation_horizontal-manual.html", - {} - ] - ], - "core-aam/aria-orientation_undefined_new-manual.html": [ - [ - "/core-aam/aria-orientation_undefined_new-manual.html", - {} - ] - ], - "core-aam/aria-orientation_vertical-manual.html": [ - [ - "/core-aam/aria-orientation_vertical-manual.html", - {} - ] - ], - "core-aam/aria-owns_may_need_manual_verification-manual.html": [ - [ - "/core-aam/aria-owns_may_need_manual_verification-manual.html", - {} - ] - ], - "core-aam/aria-placeholder_new-manual.html": [ - [ - "/core-aam/aria-placeholder_new-manual.html", - {} - ] - ], - "core-aam/aria-posinset-manual.html": [ - [ - "/core-aam/aria-posinset-manual.html", - {} - ] - ], - "core-aam/aria-pressed_false-manual.html": [ - [ - "/core-aam/aria-pressed_false-manual.html", - {} - ] - ], - "core-aam/aria-pressed_mixed-manual.html": [ - [ - "/core-aam/aria-pressed_mixed-manual.html", - {} - ] - ], - "core-aam/aria-pressed_true-manual.html": [ - [ - "/core-aam/aria-pressed_true-manual.html", - {} - ] - ], - "core-aam/aria-readonly_false-manual.html": [ - [ - "/core-aam/aria-readonly_false-manual.html", - {} - ] - ], - "core-aam/aria-readonly_is_unspecified_on_gridcell_new-manual.html": [ - [ - "/core-aam/aria-readonly_is_unspecified_on_gridcell_new-manual.html", - {} - ] - ], - "core-aam/aria-readonly_true_on_checkbox-manual.html": [ - [ - "/core-aam/aria-readonly_true_on_checkbox-manual.html", - {} - ] - ], - "core-aam/aria-readonly_true_on_radiogroup-manual.html": [ - [ - "/core-aam/aria-readonly_true_on_radiogroup-manual.html", - {} - ] - ], - "core-aam/aria-readonly_true_on_textbox-manual.html": [ - [ - "/core-aam/aria-readonly_true_on_textbox-manual.html", - {} - ] - ], - "core-aam/aria-relevant-manual.html": [ - [ - "/core-aam/aria-relevant-manual.html", - {} - ] - ], - "core-aam/aria-required_true-manual.html": [ - [ - "/core-aam/aria-required_true-manual.html", - {} - ] - ], - "core-aam/aria-roledescription_is_empty_or_whitespace_characters_new-manual.html": [ - [ - "/core-aam/aria-roledescription_is_empty_or_whitespace_characters_new-manual.html", - {} - ] - ], - "core-aam/aria-roledescription_new-manual.html": [ - [ - "/core-aam/aria-roledescription_new-manual.html", - {} - ] - ], - "core-aam/aria-rowcount_new-manual.html": [ - [ - "/core-aam/aria-rowcount_new-manual.html", - {} - ] - ], - "core-aam/aria-rowindex_new-manual.html": [ - [ - "/core-aam/aria-rowindex_new-manual.html", - {} - ] - ], - "core-aam/aria-rowspan_new-manual.html": [ - [ - "/core-aam/aria-rowspan_new-manual.html", - {} - ] - ], - "core-aam/aria-selected_false-manual.html": [ - [ - "/core-aam/aria-selected_false-manual.html", - {} - ] - ], - "core-aam/aria-selected_true-manual.html": [ - [ - "/core-aam/aria-selected_true-manual.html", - {} - ] - ], - "core-aam/aria-setsize_-1-manual.html": [ - [ - "/core-aam/aria-setsize_-1-manual.html", - {} - ] - ], - "core-aam/aria-setsize_3-manual.html": [ - [ - "/core-aam/aria-setsize_3-manual.html", - {} - ] - ], - "core-aam/aria-sort_ascending-manual.html": [ - [ - "/core-aam/aria-sort_ascending-manual.html", - {} - ] - ], - "core-aam/aria-sort_descending-manual.html": [ - [ - "/core-aam/aria-sort_descending-manual.html", - {} - ] - ], - "core-aam/aria-sort_none-manual.html": [ - [ - "/core-aam/aria-sort_none-manual.html", - {} - ] - ], - "core-aam/aria-sort_other-manual.html": [ - [ - "/core-aam/aria-sort_other-manual.html", - {} - ] - ], - "core-aam/aria-valuemax-manual.html": [ - [ - "/core-aam/aria-valuemax-manual.html", - {} - ] - ], - "core-aam/aria-valuemin-manual.html": [ - [ - "/core-aam/aria-valuemin-manual.html", - {} - ] - ], - "core-aam/aria-valuenow-manual.html": [ - [ - "/core-aam/aria-valuenow-manual.html", - {} - ] - ], - "core-aam/aria-valuetext-manual.html": [ - [ - "/core-aam/aria-valuetext-manual.html", - {} - ] - ], - "core-aam/article-manual.html": [ - [ - "/core-aam/article-manual.html", - {} - ] - ], - "core-aam/banner_new-manual.html": [ - [ - "/core-aam/banner_new-manual.html", - {} - ] - ], - "core-aam/button_with_aria-haspopup_dialog_new-manual.html": [ - [ - "/core-aam/button_with_aria-haspopup_dialog_new-manual.html", - {} - ] - ], - "core-aam/button_with_aria-haspopup_true_new-manual.html": [ - [ - "/core-aam/button_with_aria-haspopup_true_new-manual.html", - {} - ] - ], - "core-aam/button_with_default_values_for_aria-pressed_and_aria-haspopup-manual.html": [ - [ - "/core-aam/button_with_default_values_for_aria-pressed_and_aria-haspopup-manual.html", - {} - ] - ], - "core-aam/button_with_defined_value_for_aria-pressed-manual.html": [ - [ - "/core-aam/button_with_defined_value_for_aria-pressed-manual.html", - {} - ] - ], - "core-aam/cell_new-manual.html": [ - [ - "/core-aam/cell_new-manual.html", - {} - ] - ], - "core-aam/checkbox-manual.html": [ - [ - "/core-aam/checkbox-manual.html", - {} - ] - ], - "core-aam/columnheader-manual.html": [ - [ - "/core-aam/columnheader-manual.html", - {} - ] - ], - "core-aam/combobox-manual.html": [ - [ - "/core-aam/combobox-manual.html", - {} - ] - ], - "core-aam/complementary_new-manual.html": [ - [ - "/core-aam/complementary_new-manual.html", - {} - ] - ], - "core-aam/contentinfo_new-manual.html": [ - [ - "/core-aam/contentinfo_new-manual.html", - {} - ] - ], - "core-aam/definition-manual.html": [ - [ - "/core-aam/definition-manual.html", - {} - ] - ], - "core-aam/dialog-manual.html": [ - [ - "/core-aam/dialog-manual.html", - {} - ] - ], - "core-aam/directory-manual.html": [ - [ - "/core-aam/directory-manual.html", - {} - ] - ], - "core-aam/document-manual.html": [ - [ - "/core-aam/document-manual.html", - {} - ] - ], - "core-aam/feed_new-manual.html": [ - [ - "/core-aam/feed_new-manual.html", - {} - ] - ], - "core-aam/figure_new-manual.html": [ - [ - "/core-aam/figure_new-manual.html", - {} - ] - ], - "core-aam/form_new-manual.html": [ - [ - "/core-aam/form_new-manual.html", - {} - ] - ], - "core-aam/grid-manual.html": [ - [ - "/core-aam/grid-manual.html", - {} - ] - ], - "core-aam/gridcell-manual.html": [ - [ - "/core-aam/gridcell-manual.html", - {} - ] - ], - "core-aam/group-manual.html": [ - [ - "/core-aam/group-manual.html", - {} - ] - ], - "core-aam/heading-manual.html": [ - [ - "/core-aam/heading-manual.html", - {} - ] - ], - "core-aam/img-manual.html": [ - [ - "/core-aam/img-manual.html", - {} - ] - ], - "core-aam/link-manual.html": [ - [ - "/core-aam/link-manual.html", - {} - ] - ], - "core-aam/list-manual.html": [ - [ - "/core-aam/list-manual.html", - {} - ] - ], - "core-aam/listbox_not_owned_by_or_child_of_combobox-manual.html": [ - [ - "/core-aam/listbox_not_owned_by_or_child_of_combobox-manual.html", - {} - ] - ], - "core-aam/listbox_owned_by_or_child_of_combobox-manual.html": [ - [ - "/core-aam/listbox_owned_by_or_child_of_combobox-manual.html", - {} - ] - ], - "core-aam/listitem-manual.html": [ - [ - "/core-aam/listitem-manual.html", - {} - ] - ], - "core-aam/log-manual.html": [ - [ - "/core-aam/log-manual.html", - {} - ] - ], - "core-aam/main_new-manual.html": [ - [ - "/core-aam/main_new-manual.html", - {} - ] - ], - "core-aam/marquee-manual.html": [ - [ - "/core-aam/marquee-manual.html", - {} - ] - ], - "core-aam/math-manual.html": [ - [ - "/core-aam/math-manual.html", - {} - ] - ], - "core-aam/menu-manual.html": [ - [ - "/core-aam/menu-manual.html", - {} - ] - ], - "core-aam/menubar-manual.html": [ - [ - "/core-aam/menubar-manual.html", - {} - ] - ], - "core-aam/menuitem_not_owned_by_or_child_of_group-manual.html": [ - [ - "/core-aam/menuitem_not_owned_by_or_child_of_group-manual.html", - {} - ] - ], - "core-aam/menuitem_owned_by_or_child_of_group-manual.html": [ - [ - "/core-aam/menuitem_owned_by_or_child_of_group-manual.html", - {} - ] - ], - "core-aam/menuitemcheckbox-manual.html": [ - [ - "/core-aam/menuitemcheckbox-manual.html", - {} - ] - ], - "core-aam/menuitemradio-manual.html": [ - [ - "/core-aam/menuitemradio-manual.html", - {} - ] - ], - "core-aam/navigation_new-manual.html": [ - [ - "/core-aam/navigation_new-manual.html", - {} - ] - ], - "core-aam/none_new-manual.html": [ - [ - "/core-aam/none_new-manual.html", - {} - ] - ], - "core-aam/note-manual.html": [ - [ - "/core-aam/note-manual.html", - {} - ] - ], - "core-aam/option_inside_combobox-manual.html": [ - [ - "/core-aam/option_inside_combobox-manual.html", - {} - ] - ], - "core-aam/option_not_inside_combobox-manual.html": [ - [ - "/core-aam/option_not_inside_combobox-manual.html", - {} - ] - ], - "core-aam/presentation-manual.html": [ - [ - "/core-aam/presentation-manual.html", - {} - ] - ], - "core-aam/progressbar-manual.html": [ - [ - "/core-aam/progressbar-manual.html", - {} - ] - ], - "core-aam/radio-manual.html": [ - [ - "/core-aam/radio-manual.html", - {} - ] - ], - "core-aam/radiogroup-manual.html": [ - [ - "/core-aam/radiogroup-manual.html", - {} - ] - ], - "core-aam/region_with_an_accessible_name_new-manual.html": [ - [ - "/core-aam/region_with_an_accessible_name_new-manual.html", - {} - ] - ], - "core-aam/region_without_an_accessible_name_new-manual.html": [ - [ - "/core-aam/region_without_an_accessible_name_new-manual.html", - {} - ] - ], - "core-aam/row_inside_treegrid-manual.html": [ - [ - "/core-aam/row_inside_treegrid-manual.html", - {} - ] - ], - "core-aam/row_not_inside_treegrid-manual.html": [ - [ - "/core-aam/row_not_inside_treegrid-manual.html", - {} - ] - ], - "core-aam/rowgroup-manual.html": [ - [ - "/core-aam/rowgroup-manual.html", - {} - ] - ], - "core-aam/rowheader-manual.html": [ - [ - "/core-aam/rowheader-manual.html", - {} - ] - ], - "core-aam/scrollbar-manual.html": [ - [ - "/core-aam/scrollbar-manual.html", - {} - ] - ], - "core-aam/search_new-manual.html": [ - [ - "/core-aam/search_new-manual.html", - {} - ] - ], - "core-aam/searchbox_new-manual.html": [ - [ - "/core-aam/searchbox_new-manual.html", - {} - ] - ], - "core-aam/separator_focusable_new-manual.html": [ - [ - "/core-aam/separator_focusable_new-manual.html", - {} - ] - ], - "core-aam/separator_non-focusable-manual.html": [ - [ - "/core-aam/separator_non-focusable-manual.html", - {} - ] - ], - "core-aam/slider-manual.html": [ - [ - "/core-aam/slider-manual.html", - {} - ] - ], - "core-aam/spinbutton-manual.html": [ - [ - "/core-aam/spinbutton-manual.html", - {} - ] - ], - "core-aam/status-manual.html": [ - [ - "/core-aam/status-manual.html", - {} - ] - ], - "core-aam/switch_new-manual.html": [ - [ - "/core-aam/switch_new-manual.html", - {} - ] - ], - "core-aam/tab-manual.html": [ - [ - "/core-aam/tab-manual.html", - {} - ] - ], - "core-aam/table_new-manual.html": [ - [ - "/core-aam/table_new-manual.html", - {} - ] - ], - "core-aam/tablist-manual.html": [ - [ - "/core-aam/tablist-manual.html", - {} - ] - ], - "core-aam/tabpanel-manual.html": [ - [ - "/core-aam/tabpanel-manual.html", - {} - ] - ], - "core-aam/term_new-manual.html": [ - [ - "/core-aam/term_new-manual.html", - {} - ] - ], - "core-aam/textbox_when_aria-multiline_is_false-manual.html": [ - [ - "/core-aam/textbox_when_aria-multiline_is_false-manual.html", - {} - ] - ], - "core-aam/textbox_when_aria-multiline_is_true-manual.html": [ - [ - "/core-aam/textbox_when_aria-multiline_is_true-manual.html", - {} - ] - ], - "core-aam/timer-manual.html": [ - [ - "/core-aam/timer-manual.html", - {} - ] - ], - "core-aam/toolbar-manual.html": [ - [ - "/core-aam/toolbar-manual.html", - {} - ] - ], - "core-aam/tooltip-manual.html": [ - [ - "/core-aam/tooltip-manual.html", - {} - ] - ], - "core-aam/tree-manual.html": [ - [ - "/core-aam/tree-manual.html", - {} - ] - ], - "core-aam/treegrid-manual.html": [ - [ - "/core-aam/treegrid-manual.html", - {} - ] - ], - "core-aam/treeitem-manual.html": [ - [ - "/core-aam/treeitem-manual.html", - {} - ] - ], "css/CSS2/backgrounds/background-012.xht": [ [ "/css/CSS2/backgrounds/background-012.xht", @@ -11311,12 +10279,6 @@ {} ] ], - "cssom-view/scrollBoundaryBehavior-manual.html": [ - [ - "/cssom-view/scrollBoundaryBehavior-manual.html", - {} - ] - ], "dpub-aam/doc-abstract-manual.html": [ [ "/dpub-aam/doc-abstract-manual.html", @@ -13003,21 +11965,9 @@ {} ] ], - "input-events/input-events-cut-paste-manual.html": [ + "input-events/input-events-typing-data-manual.html": [ [ - "/input-events/input-events-cut-paste-manual.html", - {} - ] - ], - "input-events/input-events-get-target-ranges-manual.html": [ - [ - "/input-events/input-events-get-target-ranges-manual.html", - {} - ] - ], - "input-events/input-events-typing-manual.html": [ - [ - "/input-events/input-events-typing-manual.html", + "/input-events/input-events-typing-data-manual.html", {} ] ], @@ -13423,24 +12373,6 @@ {} ] ], - "payment-request/PaymentRequestUpdateEvent/updateWith-duplicate-shipping-options-manual.https.html": [ - [ - "/payment-request/PaymentRequestUpdateEvent/updateWith-duplicate-shipping-options-manual.https.html", - {} - ] - ], - "payment-request/algorithms-manual.https.html": [ - [ - "/payment-request/algorithms-manual.https.html", - {} - ] - ], - "payment-request/change-shipping-option-manual.https.html": [ - [ - "/payment-request/change-shipping-option-manual.https.html", - {} - ] - ], "payment-request/payment-response/complete-method-manual.https.html": [ [ "/payment-request/payment-response/complete-method-manual.https.html", @@ -13489,24 +12421,12 @@ {} ] ], - "payment-request/shipping-address-changed-manual.https.html": [ - [ - "/payment-request/shipping-address-changed-manual.https.html", - {} - ] - ], "payment-request/updateWith-method-pmi-handling-manual.https.html": [ [ "/payment-request/updateWith-method-pmi-handling-manual.https.html", {} ] ], - "payment-request/user-abort-algorithm-manual.https.html": [ - [ - "/payment-request/user-abort-algorithm-manual.https.html", - {} - ] - ], "pointerevents/compat/pointerevent_touch-action_two-finger_interaction-manual.html": [ [ "/pointerevents/compat/pointerevent_touch-action_two-finger_interaction-manual.html", @@ -17461,12 +16381,6 @@ {} ] ], - "viewport/viewport-attribute-event-handlers-manual.html": [ - [ - "/viewport/viewport-attribute-event-handlers-manual.html", - {} - ] - ], "viewport/viewport-dimensions-custom-scrollbars-manual.html": [ [ "/viewport/viewport-dimensions-custom-scrollbars-manual.html", @@ -19761,12 +18675,12 @@ {} ] ], - "css-fonts/font-display/font-display.html": [ + "css-font-display/font-display.html": [ [ - "/css-fonts/font-display/font-display.html", + "/css-font-display/font-display.html", [ [ - "/css-fonts/font-display/font-display-ref.html", + "/css-font-display/font-display-ref.html", "==" ] ], @@ -20421,54 +19335,6 @@ {} ] ], - "css-paint-api/parse-input-arguments-019.html": [ - [ - "/css-paint-api/parse-input-arguments-019.html", - [ - [ - "/css-paint-api/parse-input-arguments-ref.html", - "==" - ] - ], - {} - ] - ], - "css-paint-api/parse-input-arguments-020.html": [ - [ - "/css-paint-api/parse-input-arguments-020.html", - [ - [ - "/css-paint-api/parse-input-arguments-ref.html", - "==" - ] - ], - {} - ] - ], - "css-paint-api/parse-input-arguments-021.html": [ - [ - "/css-paint-api/parse-input-arguments-021.html", - [ - [ - "/css-paint-api/parse-input-arguments-ref.html", - "==" - ] - ], - {} - ] - ], - "css-paint-api/parse-input-arguments-022.html": [ - [ - "/css-paint-api/parse-input-arguments-022.html", - [ - [ - "/css-paint-api/parse-input-arguments-ref.html", - "==" - ] - ], - {} - ] - ], "css-paint-api/registered-properties-in-custom-paint.html": [ [ "/css-paint-api/registered-properties-in-custom-paint.html", @@ -112329,12 +111195,12 @@ {} ] ], - "css/css-logical-1/cascading-001.html": [ + "css/css-logical-props-1/cascading-001.html": [ [ - "/css/css-logical-1/cascading-001.html", + "/css/css-logical-props-1/cascading-001.html", [ [ - "/css/css-logical-1/cascading-001-ref.html", + "/css/css-logical-props-1/cascading-001-ref.html", "==" ] ], @@ -127885,342 +126751,6 @@ {} ] ], - "css/css-text-3/white-space/pre-wrap-001.html": [ - [ - "/css/css-text-3/white-space/pre-wrap-001.html", - [ - [ - "/css/css-text-3/white-space/reference/pre-wrap-001-ref.html", - "==" - ] - ], - {} - ] - ], - "css/css-text-3/white-space/pre-wrap-002.html": [ - [ - "/css/css-text-3/white-space/pre-wrap-002.html", - [ - [ - "/css/css-text-3/white-space/reference/pre-wrap-001-ref.html", - "==" - ] - ], - {} - ] - ], - "css/css-text-3/white-space/pre-wrap-003.html": [ - [ - "/css/css-text-3/white-space/pre-wrap-003.html", - [ - [ - "/css/css-text-3/white-space/reference/pre-wrap-001-ref.html", - "==" - ] - ], - {} - ] - ], - "css/css-text-3/white-space/pre-wrap-004.html": [ - [ - "/css/css-text-3/white-space/pre-wrap-004.html", - [ - [ - "/css/css-text-3/white-space/reference/pre-wrap-001-ref.html", - "==" - ] - ], - {} - ] - ], - "css/css-text-3/white-space/pre-wrap-005.html": [ - [ - "/css/css-text-3/white-space/pre-wrap-005.html", - [ - [ - "/css/css-text-3/white-space/reference/pre-wrap-001-ref.html", - "==" - ] - ], - {} - ] - ], - "css/css-text-3/white-space/pre-wrap-006.html": [ - [ - "/css/css-text-3/white-space/pre-wrap-006.html", - [ - [ - "/css/css-text-3/white-space/reference/pre-wrap-001-ref.html", - "==" - ] - ], - {} - ] - ], - "css/css-text-3/white-space/pre-wrap-007.html": [ - [ - "/css/css-text-3/white-space/pre-wrap-007.html", - [ - [ - "/css/css-text-3/white-space/reference/pre-wrap-001-ref.html", - "==" - ] - ], - {} - ] - ], - "css/css-text-3/white-space/pre-wrap-008.html": [ - [ - "/css/css-text-3/white-space/pre-wrap-008.html", - [ - [ - "/css/css-text-3/white-space/reference/pre-wrap-001-ref.html", - "==" - ] - ], - {} - ] - ], - "css/css-text-3/white-space/pre-wrap-009.html": [ - [ - "/css/css-text-3/white-space/pre-wrap-009.html", - [ - [ - "/css/css-text-3/white-space/reference/pre-wrap-001-ref.html", - "==" - ] - ], - {} - ] - ], - "css/css-text-3/white-space/pre-wrap-010.html": [ - [ - "/css/css-text-3/white-space/pre-wrap-010.html", - [ - [ - "/css/css-text-3/white-space/reference/pre-wrap-001-ref.html", - "==" - ] - ], - {} - ] - ], - "css/css-text-3/white-space/pre-wrap-011.html": [ - [ - "/css/css-text-3/white-space/pre-wrap-011.html", - [ - [ - "/css/css-text-3/white-space/reference/pre-wrap-001-ref.html", - "==" - ] - ], - {} - ] - ], - "css/css-text-3/white-space/pre-wrap-012.html": [ - [ - "/css/css-text-3/white-space/pre-wrap-012.html", - [ - [ - "/css/css-text-3/white-space/reference/pre-wrap-001-ref.html", - "==" - ] - ], - {} - ] - ], - "css/css-text-3/white-space/pre-wrap-013.html": [ - [ - "/css/css-text-3/white-space/pre-wrap-013.html", - [ - [ - "/css/css-text-3/white-space/reference/pre-wrap-001-ref.html", - "==" - ] - ], - {} - ] - ], - "css/css-text-3/white-space/pre-wrap-014.html": [ - [ - "/css/css-text-3/white-space/pre-wrap-014.html", - [ - [ - "/css/css-text-3/white-space/reference/pre-wrap-001-ref.html", - "==" - ] - ], - {} - ] - ], - "css/css-text-3/white-space/textarea-pre-wrap-001.html": [ - [ - "/css/css-text-3/white-space/textarea-pre-wrap-001.html", - [ - [ - "/css/css-text-3/white-space/reference/textarea-pre-wrap-001-ref.html", - "==" - ] - ], - {} - ] - ], - "css/css-text-3/white-space/textarea-pre-wrap-002.html": [ - [ - "/css/css-text-3/white-space/textarea-pre-wrap-002.html", - [ - [ - "/css/css-text-3/white-space/reference/textarea-pre-wrap-001-ref.html", - "==" - ] - ], - {} - ] - ], - "css/css-text-3/white-space/textarea-pre-wrap-003.html": [ - [ - "/css/css-text-3/white-space/textarea-pre-wrap-003.html", - [ - [ - "/css/css-text-3/white-space/reference/textarea-pre-wrap-001-ref.html", - "==" - ] - ], - {} - ] - ], - "css/css-text-3/white-space/textarea-pre-wrap-004.html": [ - [ - "/css/css-text-3/white-space/textarea-pre-wrap-004.html", - [ - [ - "/css/css-text-3/white-space/reference/textarea-pre-wrap-001-ref.html", - "==" - ] - ], - {} - ] - ], - "css/css-text-3/white-space/textarea-pre-wrap-005.html": [ - [ - "/css/css-text-3/white-space/textarea-pre-wrap-005.html", - [ - [ - "/css/css-text-3/white-space/reference/textarea-pre-wrap-001-ref.html", - "==" - ] - ], - {} - ] - ], - "css/css-text-3/white-space/textarea-pre-wrap-006.html": [ - [ - "/css/css-text-3/white-space/textarea-pre-wrap-006.html", - [ - [ - "/css/css-text-3/white-space/reference/textarea-pre-wrap-001-ref.html", - "==" - ] - ], - {} - ] - ], - "css/css-text-3/white-space/textarea-pre-wrap-007.html": [ - [ - "/css/css-text-3/white-space/textarea-pre-wrap-007.html", - [ - [ - "/css/css-text-3/white-space/reference/textarea-pre-wrap-001-ref.html", - "==" - ] - ], - {} - ] - ], - "css/css-text-3/white-space/textarea-pre-wrap-008.html": [ - [ - "/css/css-text-3/white-space/textarea-pre-wrap-008.html", - [ - [ - "/css/css-text-3/white-space/reference/textarea-pre-wrap-001-ref.html", - "==" - ] - ], - {} - ] - ], - "css/css-text-3/white-space/textarea-pre-wrap-009.html": [ - [ - "/css/css-text-3/white-space/textarea-pre-wrap-009.html", - [ - [ - "/css/css-text-3/white-space/reference/textarea-pre-wrap-001-ref.html", - "==" - ] - ], - {} - ] - ], - "css/css-text-3/white-space/textarea-pre-wrap-010.html": [ - [ - "/css/css-text-3/white-space/textarea-pre-wrap-010.html", - [ - [ - "/css/css-text-3/white-space/reference/textarea-pre-wrap-001-ref.html", - "==" - ] - ], - {} - ] - ], - "css/css-text-3/white-space/textarea-pre-wrap-011.html": [ - [ - "/css/css-text-3/white-space/textarea-pre-wrap-011.html", - [ - [ - "/css/css-text-3/white-space/reference/textarea-pre-wrap-001-ref.html", - "==" - ] - ], - {} - ] - ], - "css/css-text-3/white-space/textarea-pre-wrap-012.html": [ - [ - "/css/css-text-3/white-space/textarea-pre-wrap-012.html", - [ - [ - "/css/css-text-3/white-space/reference/textarea-pre-wrap-001-ref.html", - "==" - ] - ], - {} - ] - ], - "css/css-text-3/white-space/textarea-pre-wrap-013.html": [ - [ - "/css/css-text-3/white-space/textarea-pre-wrap-013.html", - [ - [ - "/css/css-text-3/white-space/reference/textarea-pre-wrap-001-ref.html", - "==" - ] - ], - {} - ] - ], - "css/css-text-3/white-space/textarea-pre-wrap-014.html": [ - [ - "/css/css-text-3/white-space/textarea-pre-wrap-014.html", - [ - [ - "/css/css-text-3/white-space/reference/textarea-pre-wrap-001-ref.html", - "==" - ] - ], - {} - ] - ], "css/css-text-3/white-space/white-space-collapsing-discard-001.xht": [ [ "/css/css-text-3/white-space/white-space-collapsing-discard-001.xht", @@ -179134,11 +177664,6 @@ {} ] ], - "XMLHttpRequest/resources/access-control-allow-with-body.py": [ - [ - {} - ] - ], "XMLHttpRequest/resources/access-control-auth-basic.py": [ [ {} @@ -179159,11 +177684,6 @@ {} ] ], - "XMLHttpRequest/resources/access-control-basic-cors-safelisted-request-headers.py": [ - [ - {} - ] - ], "XMLHttpRequest/resources/access-control-basic-denied.py": [ [ {} @@ -179194,16 +177714,6 @@ {} ] ], - "XMLHttpRequest/resources/access-control-basic-whitelist-response-headers.py": [ - [ - {} - ] - ], - "XMLHttpRequest/resources/access-control-cookie.py": [ - [ - {} - ] - ], "XMLHttpRequest/resources/access-control-origin-header.py": [ [ {} @@ -179219,31 +177729,11 @@ {} ] ], - "XMLHttpRequest/resources/access-control-preflight-request-header-sorted.py": [ - [ - {} - ] - ], - "XMLHttpRequest/resources/access-control-preflight-request-headers-origin.py": [ - [ - {} - ] - ], "XMLHttpRequest/resources/access-control-preflight-request-invalid-status.py": [ [ {} ] ], - "XMLHttpRequest/resources/access-control-preflight-request-must-not-contain-cookie.py": [ - [ - {} - ] - ], - "XMLHttpRequest/resources/access-control-sandboxed-iframe.html": [ - [ - {} - ] - ], "XMLHttpRequest/resources/auth1/auth.py": [ [ {} @@ -182084,6 +180574,11 @@ {} ] ], + "auxclick/OWNERS": [ + [ + {} + ] + ], "background-fetch/OWNERS": [ [ {} @@ -182094,16 +180589,6 @@ {} ] ], - "background-fetch/resources/sw.js": [ - [ - {} - ] - ], - "background-fetch/resources/utils.js": [ - [ - {} - ] - ], "battery-status/OWNERS": [ [ {} @@ -182179,7 +180664,7 @@ {} ] ], - "clipboard-apis/OWNERS": [ + "clipboard/OWNERS": [ [ {} ] @@ -205019,6 +203504,26 @@ {} ] ], + "content-security-policy/blink-contrib/object-src-applet-archive-codebase.sub.html.sub.headers": [ + [ + {} + ] + ], + "content-security-policy/blink-contrib/object-src-applet-archive.sub.html.sub.headers": [ + [ + {} + ] + ], + "content-security-policy/blink-contrib/object-src-applet-code-codebase.sub.html.sub.headers": [ + [ + {} + ] + ], + "content-security-policy/blink-contrib/object-src-applet-code.sub.html.sub.headers": [ + [ + {} + ] + ], "content-security-policy/blink-contrib/object-src-no-url-allowed.sub.html.sub.headers": [ [ {} @@ -206114,16 +204619,6 @@ {} ] ], - "core-aam/OWNERS": [ - [ - {} - ] - ], - "core-aam/README.md": [ - [ - {} - ] - ], "cors/OWNERS": [ [ {} @@ -206204,12 +204699,12 @@ {} ] ], - "css-fonts/font-display/font-display-ref.html": [ + "css-font-display/font-display-ref.html": [ [ {} ] ], - "css-fonts/font-display/resources/slow-ahem-loading.py": [ + "css-font-display/resources/slow-ahem-loading.py": [ [ {} ] @@ -238744,12 +237239,12 @@ {} ] ], - "css/css-grid-1/grid-items/support/200x200-green.png": [ + "css/css-grid-1/grid-items/support/100x50-green.png": [ [ {} ] ], - "css/css-grid-1/grid-items/support/25x50-green.png": [ + "css/css-grid-1/grid-items/support/200x200-green.png": [ [ {} ] @@ -238759,7 +237254,7 @@ {} ] ], - "css/css-grid-1/grid-items/support/50x25-green.png": [ + "css/css-grid-1/grid-items/support/50x100-green.png": [ [ {} ] @@ -238849,11 +237344,6 @@ {} ] ], - "css/css-grid-1/support/style-change.js": [ - [ - {} - ] - ], "css/css-grid-1/test-plan/index.html": [ [ {} @@ -239104,17 +237594,17 @@ {} ] ], - "css/css-logical-1/OWNERS": [ + "css/css-logical-properties-1/OWNERS": [ [ {} ] ], - "css/css-logical-1/cascading-001-ref.html": [ + "css/css-logical-properties-1/resources/style-check.js": [ [ {} ] ], - "css/css-logical-1/resources/style-check.js": [ + "css/css-logical-props-1/cascading-001-ref.html": [ [ {} ] @@ -242509,11 +240999,6 @@ {} ] ], - "css/css-tables-3/support/check-layout-th.js": [ - [ - {} - ] - ], "css/css-tables-3/visibility-collapse-colspan-003-ref.html": [ [ {} @@ -245719,16 +244204,6 @@ {} ] ], - "css/css-text-3/white-space/reference/pre-wrap-001-ref.html": [ - [ - {} - ] - ], - "css/css-text-3/white-space/reference/textarea-pre-wrap-001-ref.html": [ - [ - {} - ] - ], "css/css-text-3/white-space/reference/white-space-collapsing-discard-001-ref.xht": [ [ {} @@ -285919,11 +284394,6 @@ {} ] ], - "cssom/support/xmlss-pi.xhtml": [ - [ - {} - ] - ], "custom-elements/OWNERS": [ [ {} @@ -288314,26 +286784,11 @@ {} ] ], - "feature-policy/OWNERS": [ - [ - {} - ] - ], "feature-policy/README.md": [ [ {} ] ], - "feature-policy/payment-allowed-by-feature-policy.https.sub.html.headers": [ - [ - {} - ] - ], - "feature-policy/payment-disabled-by-feature-policy.https.sub.html.headers": [ - [ - {} - ] - ], "feature-policy/resources/feature-policy-payment.html": [ [ {} @@ -300454,11 +298909,6 @@ {} ] ], - "interfaces/cssom-view.idl": [ - [ - {} - ] - ], "interfaces/cssom.idl": [ [ {} @@ -300494,16 +298944,6 @@ {} ] ], - "interfaces/payment-handler.idl": [ - [ - {} - ] - ], - "interfaces/payment-request.idl": [ - [ - {} - ] - ], "interfaces/remoteplayback.idl": [ [ {} @@ -300584,11 +299024,6 @@ {} ] ], - "longtask-timing/OWNERS": [ - [ - {} - ] - ], "longtask-timing/resources/makelongtask.js": [ [ {} @@ -301244,6 +299679,111 @@ {} ] ], + "microdata/conformance-requirements/.gitkeep": [ + [ + {} + ] + ], + "microdata/converting-html-to-other-formats/.gitkeep": [ + [ + {} + ] + ], + "microdata/converting-html-to-other-formats/json/.gitkeep": [ + [ + {} + ] + ], + "microdata/dependencies/.gitkeep": [ + [ + {} + ] + ], + "microdata/encoding-microdata/.gitkeep": [ + [ + {} + ] + ], + "microdata/encoding-microdata/associating-names-with-items/.gitkeep": [ + [ + {} + ] + ], + "microdata/encoding-microdata/items/.gitkeep": [ + [ + {} + ] + ], + "microdata/encoding-microdata/microdata-and-other-namespaces/.gitkeep": [ + [ + {} + ] + ], + "microdata/encoding-microdata/names-the-itemprop-attribute/.gitkeep": [ + [ + {} + ] + ], + "microdata/encoding-microdata/names-the-itemprop-attribute/original-id.json": [ + [ + {} + ] + ], + "microdata/encoding-microdata/the-microdata-model/.gitkeep": [ + [ + {} + ] + ], + "microdata/encoding-microdata/values/.gitkeep": [ + [ + {} + ] + ], + "microdata/iana/.gitkeep": [ + [ + {} + ] + ], + "microdata/introduction/.gitkeep": [ + [ + {} + ] + ], + "microdata/introduction/global-identifiers-for-items/.gitkeep": [ + [ + {} + ] + ], + "microdata/introduction/overview/.gitkeep": [ + [ + {} + ] + ], + "microdata/introduction/selecting-names-when-defining-vocabularies/.gitkeep": [ + [ + {} + ] + ], + "microdata/introduction/the-basic-syntax/.gitkeep": [ + [ + {} + ] + ], + "microdata/introduction/typed-items/.gitkeep": [ + [ + {} + ] + ], + "microdata/introduction/using-the-microdata-dom-api/.gitkeep": [ + [ + {} + ] + ], + "microdata/terminology/.gitkeep": [ + [ + {} + ] + ], "mixed-content/OWNERS": [ [ {} @@ -303179,26 +301719,6 @@ {} ] ], - "paint-timing/OWNERS": [ - [ - {} - ] - ], - "paint-timing/resources/circle.svg": [ - [ - {} - ] - ], - "paint-timing/resources/circles.png": [ - [ - {} - ] - ], - "payment-handler/OWNERS": [ - [ - {} - ] - ], "payment-method-basic-card/OWNERS": [ [ {} @@ -303229,6 +301749,16 @@ {} ] ], + "payment-request/payment-allowed-by-feature-policy.https.sub.html.headers": [ + [ + {} + ] + ], + "payment-request/payment-disabled-by-feature-policy.https.sub.html.headers": [ + [ + {} + ] + ], "payment-request/payment-request-response-id.html": [ [ {} @@ -303239,16 +301769,6 @@ {} ] ], - "payment-request/resources/page1.html": [ - [ - {} - ] - ], - "payment-request/resources/page2.html": [ - [ - {} - ] - ], "performance-timeline/OWNERS": [ [ {} @@ -307684,6 +306204,11 @@ {} ] ], + "service-workers/service-worker/resources/registration-tests.js": [ + [ + {} + ] + ], "service-workers/service-worker/resources/registration-worker.js": [ [ {} @@ -308069,11 +306594,6 @@ {} ] ], - "streams/readable-byte-streams/brand-checks.js": [ - [ - {} - ] - ], "streams/readable-byte-streams/general.js": [ [ {} @@ -328789,30 +327309,12 @@ {} ] ], - "XMLHttpRequest/access-control-basic-cors-safelisted-request-headers.htm": [ - [ - "/XMLHttpRequest/access-control-basic-cors-safelisted-request-headers.htm", - {} - ] - ], - "XMLHttpRequest/access-control-basic-cors-safelisted-response-headers.htm": [ - [ - "/XMLHttpRequest/access-control-basic-cors-safelisted-response-headers.htm", - {} - ] - ], "XMLHttpRequest/access-control-basic-denied.htm": [ [ "/XMLHttpRequest/access-control-basic-denied.htm", {} ] ], - "XMLHttpRequest/access-control-basic-get-fail-non-simple.htm": [ - [ - "/XMLHttpRequest/access-control-basic-get-fail-non-simple.htm", - {} - ] - ], "XMLHttpRequest/access-control-basic-non-cors-safelisted-content-type.htm": [ [ "/XMLHttpRequest/access-control-basic-non-cors-safelisted-content-type.htm", @@ -328843,18 +327345,6 @@ {} ] ], - "XMLHttpRequest/access-control-preflight-async-method-denied.htm": [ - [ - "/XMLHttpRequest/access-control-preflight-async-method-denied.htm", - {} - ] - ], - "XMLHttpRequest/access-control-preflight-async-not-supported.htm": [ - [ - "/XMLHttpRequest/access-control-preflight-async-not-supported.htm", - {} - ] - ], "XMLHttpRequest/access-control-preflight-credential-async.htm": [ [ "/XMLHttpRequest/access-control-preflight-credential-async.htm", @@ -328867,12 +327357,6 @@ {} ] ], - "XMLHttpRequest/access-control-preflight-headers-async.htm": [ - [ - "/XMLHttpRequest/access-control-preflight-headers-async.htm", - {} - ] - ], "XMLHttpRequest/access-control-preflight-headers-sync.htm": [ [ "/XMLHttpRequest/access-control-preflight-headers-sync.htm", @@ -328885,108 +327369,18 @@ {} ] ], - "XMLHttpRequest/access-control-preflight-request-header-sorted.htm": [ - [ - "/XMLHttpRequest/access-control-preflight-request-header-sorted.htm", - {} - ] - ], - "XMLHttpRequest/access-control-preflight-request-headers-origin.htm": [ - [ - "/XMLHttpRequest/access-control-preflight-request-headers-origin.htm", - {} - ] - ], "XMLHttpRequest/access-control-preflight-request-invalid-status-301.htm": [ [ "/XMLHttpRequest/access-control-preflight-request-invalid-status-301.htm", {} ] ], - "XMLHttpRequest/access-control-preflight-request-invalid-status-400.htm": [ - [ - "/XMLHttpRequest/access-control-preflight-request-invalid-status-400.htm", - {} - ] - ], "XMLHttpRequest/access-control-preflight-request-invalid-status-501.htm": [ [ "/XMLHttpRequest/access-control-preflight-request-invalid-status-501.htm", {} ] ], - "XMLHttpRequest/access-control-preflight-request-must-not-contain-cookie.htm": [ - [ - "/XMLHttpRequest/access-control-preflight-request-must-not-contain-cookie.htm", - {} - ] - ], - "XMLHttpRequest/access-control-preflight-sync-header-denied.htm": [ - [ - "/XMLHttpRequest/access-control-preflight-sync-header-denied.htm", - {} - ] - ], - "XMLHttpRequest/access-control-preflight-sync-method-denied.htm": [ - [ - "/XMLHttpRequest/access-control-preflight-sync-method-denied.htm", - {} - ] - ], - "XMLHttpRequest/access-control-preflight-sync-not-supported.htm": [ - [ - "/XMLHttpRequest/access-control-preflight-sync-not-supported.htm", - {} - ] - ], - "XMLHttpRequest/access-control-recursive-failed-request.htm": [ - [ - "/XMLHttpRequest/access-control-recursive-failed-request.htm", - {} - ] - ], - "XMLHttpRequest/access-control-response-with-body-sync.htm": [ - [ - "/XMLHttpRequest/access-control-response-with-body-sync.htm", - {} - ] - ], - "XMLHttpRequest/access-control-response-with-body.htm": [ - [ - "/XMLHttpRequest/access-control-response-with-body.htm", - {} - ] - ], - "XMLHttpRequest/access-control-response-with-exposed-headers.htm": [ - [ - "/XMLHttpRequest/access-control-response-with-exposed-headers.htm", - {} - ] - ], - "XMLHttpRequest/access-control-sandboxed-iframe-allow-origin-null.htm": [ - [ - "/XMLHttpRequest/access-control-sandboxed-iframe-allow-origin-null.htm", - {} - ] - ], - "XMLHttpRequest/access-control-sandboxed-iframe-allow.htm": [ - [ - "/XMLHttpRequest/access-control-sandboxed-iframe-allow.htm", - {} - ] - ], - "XMLHttpRequest/access-control-sandboxed-iframe-denied-without-wildcard.htm": [ - [ - "/XMLHttpRequest/access-control-sandboxed-iframe-denied-without-wildcard.htm", - {} - ] - ], - "XMLHttpRequest/access-control-sandboxed-iframe-denied.htm": [ - [ - "/XMLHttpRequest/access-control-sandboxed-iframe-denied.htm", - {} - ] - ], "XMLHttpRequest/allow-lists-starting-with-comma.htm": [ [ "/XMLHttpRequest/allow-lists-starting-with-comma.htm", @@ -330295,24 +328689,6 @@ {} ] ], - "background-fetch/content-security-policy.https.window.js": [ - [ - "/background-fetch/content-security-policy.https.window.html", - {} - ] - ], - "background-fetch/credentials-in-url.https.window.js": [ - [ - "/background-fetch/credentials-in-url.https.window.html", - {} - ] - ], - "background-fetch/dangling-markup.https.window.js": [ - [ - "/background-fetch/dangling-markup.https.window.html", - {} - ] - ], "background-fetch/interfaces-worker.https.html": [ [ "/background-fetch/interfaces-worker.https.html", @@ -330331,18 +328707,6 @@ {} ] ], - "background-fetch/mixed-content-and-allowed-schemes.https.window.js": [ - [ - "/background-fetch/mixed-content-and-allowed-schemes.https.window.html", - {} - ] - ], - "background-fetch/port-blocking.https.window.js": [ - [ - "/background-fetch/port-blocking.https.window.html", - {} - ] - ], "battery-status/battery-iframe.https.html": [ [ "/battery-status/battery-iframe.https.html", @@ -331133,6 +329497,30 @@ {} ] ], + "content-security-policy/blink-contrib/object-src-applet-archive-codebase.sub.html": [ + [ + "/content-security-policy/blink-contrib/object-src-applet-archive-codebase.sub.html", + {} + ] + ], + "content-security-policy/blink-contrib/object-src-applet-archive.sub.html": [ + [ + "/content-security-policy/blink-contrib/object-src-applet-archive.sub.html", + {} + ] + ], + "content-security-policy/blink-contrib/object-src-applet-code-codebase.sub.html": [ + [ + "/content-security-policy/blink-contrib/object-src-applet-code-codebase.sub.html", + {} + ] + ], + "content-security-policy/blink-contrib/object-src-applet-code.sub.html": [ + [ + "/content-security-policy/blink-contrib/object-src-applet-code.sub.html", + {} + ] + ], "content-security-policy/blink-contrib/object-src-no-url-allowed.sub.html": [ [ "/content-security-policy/blink-contrib/object-src-no-url-allowed.sub.html", @@ -333511,222 +331899,6 @@ {} ] ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-001.html": [ - [ - "/css/css-grid-1/alignment/grid-alignment-implies-size-change-001.html", - {} - ] - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-002.html": [ - [ - "/css/css-grid-1/alignment/grid-alignment-implies-size-change-002.html", - {} - ] - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-003.html": [ - [ - "/css/css-grid-1/alignment/grid-alignment-implies-size-change-003.html", - {} - ] - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-004.html": [ - [ - "/css/css-grid-1/alignment/grid-alignment-implies-size-change-004.html", - {} - ] - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-005.html": [ - [ - "/css/css-grid-1/alignment/grid-alignment-implies-size-change-005.html", - {} - ] - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-006.html": [ - [ - "/css/css-grid-1/alignment/grid-alignment-implies-size-change-006.html", - {} - ] - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-007.html": [ - [ - "/css/css-grid-1/alignment/grid-alignment-implies-size-change-007.html", - {} - ] - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-008.html": [ - [ - "/css/css-grid-1/alignment/grid-alignment-implies-size-change-008.html", - {} - ] - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-009.html": [ - [ - "/css/css-grid-1/alignment/grid-alignment-implies-size-change-009.html", - {} - ] - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-010.html": [ - [ - "/css/css-grid-1/alignment/grid-alignment-implies-size-change-010.html", - {} - ] - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-011.html": [ - [ - "/css/css-grid-1/alignment/grid-alignment-implies-size-change-011.html", - {} - ] - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-012.html": [ - [ - "/css/css-grid-1/alignment/grid-alignment-implies-size-change-012.html", - {} - ] - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-013.html": [ - [ - "/css/css-grid-1/alignment/grid-alignment-implies-size-change-013.html", - {} - ] - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-014.html": [ - [ - "/css/css-grid-1/alignment/grid-alignment-implies-size-change-014.html", - {} - ] - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-015.html": [ - [ - "/css/css-grid-1/alignment/grid-alignment-implies-size-change-015.html", - {} - ] - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-016.html": [ - [ - "/css/css-grid-1/alignment/grid-alignment-implies-size-change-016.html", - {} - ] - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-017.html": [ - [ - "/css/css-grid-1/alignment/grid-alignment-implies-size-change-017.html", - {} - ] - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-018.html": [ - [ - "/css/css-grid-1/alignment/grid-alignment-implies-size-change-018.html", - {} - ] - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-019.html": [ - [ - "/css/css-grid-1/alignment/grid-alignment-implies-size-change-019.html", - {} - ] - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-020.html": [ - [ - "/css/css-grid-1/alignment/grid-alignment-implies-size-change-020.html", - {} - ] - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-021.html": [ - [ - "/css/css-grid-1/alignment/grid-alignment-implies-size-change-021.html", - {} - ] - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-022.html": [ - [ - "/css/css-grid-1/alignment/grid-alignment-implies-size-change-022.html", - {} - ] - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-023.html": [ - [ - "/css/css-grid-1/alignment/grid-alignment-implies-size-change-023.html", - {} - ] - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-024.html": [ - [ - "/css/css-grid-1/alignment/grid-alignment-implies-size-change-024.html", - {} - ] - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-025.html": [ - [ - "/css/css-grid-1/alignment/grid-alignment-implies-size-change-025.html", - {} - ] - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-026.html": [ - [ - "/css/css-grid-1/alignment/grid-alignment-implies-size-change-026.html", - {} - ] - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-027.html": [ - [ - "/css/css-grid-1/alignment/grid-alignment-implies-size-change-027.html", - {} - ] - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-028.html": [ - [ - "/css/css-grid-1/alignment/grid-alignment-implies-size-change-028.html", - {} - ] - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-029.html": [ - [ - "/css/css-grid-1/alignment/grid-alignment-implies-size-change-029.html", - {} - ] - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-030.html": [ - [ - "/css/css-grid-1/alignment/grid-alignment-implies-size-change-030.html", - {} - ] - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-031.html": [ - [ - "/css/css-grid-1/alignment/grid-alignment-implies-size-change-031.html", - {} - ] - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-032.html": [ - [ - "/css/css-grid-1/alignment/grid-alignment-implies-size-change-032.html", - {} - ] - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-033.html": [ - [ - "/css/css-grid-1/alignment/grid-alignment-implies-size-change-033.html", - {} - ] - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-034.html": [ - [ - "/css/css-grid-1/alignment/grid-alignment-implies-size-change-034.html", - {} - ] - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-035.html": [ - [ - "/css/css-grid-1/alignment/grid-alignment-implies-size-change-035.html", - {} - ] - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-036.html": [ - [ - "/css/css-grid-1/alignment/grid-alignment-implies-size-change-036.html", - {} - ] - ], "css/css-grid-1/alignment/grid-self-alignment-stretch-001.html": [ [ "/css/css-grid-1/alignment/grid-self-alignment-stretch-001.html", @@ -334051,12 +332223,6 @@ {} ] ], - "css/css-grid-1/grid-definition/grid-shorthand-001.html": [ - [ - "/css/css-grid-1/grid-definition/grid-shorthand-001.html", - {} - ] - ], "css/css-grid-1/grid-definition/grid-support-flexible-lengths-001.html": [ [ "/css/css-grid-1/grid-definition/grid-support-flexible-lengths-001.html", @@ -334117,33 +332283,33 @@ {} ] ], - "css/css-logical-1/logicalprops-block-size-vlr.html": [ + "css/css-logical-properties-1/logicalprops-block-size-vlr.html": [ [ - "/css/css-logical-1/logicalprops-block-size-vlr.html", + "/css/css-logical-properties-1/logicalprops-block-size-vlr.html", {} ] ], - "css/css-logical-1/logicalprops-block-size.html": [ + "css/css-logical-properties-1/logicalprops-block-size.html": [ [ - "/css/css-logical-1/logicalprops-block-size.html", + "/css/css-logical-properties-1/logicalprops-block-size.html", {} ] ], - "css/css-logical-1/logicalprops-inline-size-vlr.html": [ + "css/css-logical-properties-1/logicalprops-inline-size-vlr.html": [ [ - "/css/css-logical-1/logicalprops-inline-size-vlr.html", + "/css/css-logical-properties-1/logicalprops-inline-size-vlr.html", {} ] ], - "css/css-logical-1/logicalprops-inline-size.html": [ + "css/css-logical-properties-1/logicalprops-inline-size.html": [ [ - "/css/css-logical-1/logicalprops-inline-size.html", + "/css/css-logical-properties-1/logicalprops-inline-size.html", {} ] ], - "css/css-logical-1/logicalprops-quirklength.html": [ + "css/css-logical-properties-1/logicalprops-quirklength.html": [ [ - "/css/css-logical-1/logicalprops-quirklength.html", + "/css/css-logical-properties-1/logicalprops-quirklength.html", {} ] ], @@ -334879,18 +333045,6 @@ {} ] ], - "css/css-tables-3/fixed-layout-calc-width-001.html": [ - [ - "/css/css-tables-3/fixed-layout-calc-width-001.html", - {} - ] - ], - "css/css-tables-3/fixed-layout-excess-width-distribution-001.html": [ - [ - "/css/css-tables-3/fixed-layout-excess-width-distribution-001.html", - {} - ] - ], "css/css-tables-3/visibility-collapse-col-001.html": [ [ "/css/css-tables-3/visibility-collapse-col-001.html", @@ -336223,18 +334377,6 @@ {} ] ], - "css/css-ui-3/text-overflow-023.html": [ - [ - "/css/css-ui-3/text-overflow-023.html", - {} - ] - ], - "css/css-values-3/absolute-length-units-001.html": [ - [ - "/css/css-values-3/absolute-length-units-001.html", - {} - ] - ], "css/css-values-3/calc-unit-analysis.html": [ [ "/css/css-values-3/calc-unit-analysis.html", @@ -337249,12 +335391,6 @@ {} ] ], - "css/geometry-1/spec-examples.html": [ - [ - "/css/geometry-1/spec-examples.html", - {} - ] - ], "css/geometry-1/structured-serialization.html": [ [ "/css/geometry-1/structured-serialization.html", @@ -337561,12 +335697,6 @@ {} ] ], - "cssom-view/interfaces.html": [ - [ - "/cssom-view/interfaces.html", - {} - ] - ], "cssom-view/matchMedia.xht": [ [ "/cssom-view/matchMedia.xht", @@ -337645,18 +335775,18 @@ {} ] ], - "cssom-view/scrollintoview.html": [ - [ - "/cssom-view/scrollintoview.html", - {} - ] - ], "cssom-view/ttwf-js-cssomview-getclientrects-length.html": [ [ "/cssom-view/ttwf-js-cssomview-getclientrects-length.html", {} ] ], + "cssom-view/ttwf-scrollintoview.html": [ + [ + "/cssom-view/ttwf-scrollintoview.html", + {} + ] + ], "cssom-view/window-screen-height-immutable.html": [ [ "/cssom-view/window-screen-height-immutable.html", @@ -341889,12 +340019,6 @@ } ] ], - "encrypted-media/encrypted-media-default-feature-policy.https.sub.html": [ - [ - "/encrypted-media/encrypted-media-default-feature-policy.https.sub.html", - {} - ] - ], "encrypted-media/idlharness.html": [ [ "/encrypted-media/idlharness.html", @@ -342279,36 +340403,6 @@ {} ] ], - "feature-policy/payment-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html": [ - [ - "/feature-policy/payment-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html", - {} - ] - ], - "feature-policy/payment-allowed-by-feature-policy-attribute.https.sub.html": [ - [ - "/feature-policy/payment-allowed-by-feature-policy-attribute.https.sub.html", - {} - ] - ], - "feature-policy/payment-allowed-by-feature-policy.https.sub.html": [ - [ - "/feature-policy/payment-allowed-by-feature-policy.https.sub.html", - {} - ] - ], - "feature-policy/payment-default-feature-policy.https.sub.html": [ - [ - "/feature-policy/payment-default-feature-policy.https.sub.html", - {} - ] - ], - "feature-policy/payment-disabled-by-feature-policy.https.sub.html": [ - [ - "/feature-policy/payment-disabled-by-feature-policy.https.sub.html", - {} - ] - ], "fetch/api/abort/cache.https.html": [ [ "/fetch/api/abort/cache.https.html", @@ -343393,9 +341487,9 @@ {} ] ], - "generic-sensor/idlharness.https.html": [ + "generic-sensor/idlharness.html": [ [ - "/generic-sensor/idlharness.https.html", + "/generic-sensor/idlharness.html", {} ] ], @@ -343515,9 +341609,9 @@ {} ] ], - "hr-time/window-worker-timeOrigin.window.js": [ + "hr-time/window-worker-time-origin.html": [ [ - "/hr-time/window-worker-timeOrigin.window.html", + "/hr-time/window-worker-time-origin.html", {} ] ], @@ -346343,12 +344437,6 @@ {} ] ], - "html/dom/historical.html": [ - [ - "/html/dom/historical.html", - {} - ] - ], "html/dom/interfaces.html": [ [ "/html/dom/interfaces.html", @@ -347179,18 +345267,6 @@ {} ] ], - "html/semantics/document-metadata/the-style-element/style_type.html": [ - [ - "/html/semantics/document-metadata/the-style-element/style_type.html", - {} - ] - ], - "html/semantics/document-metadata/the-style-element/style_type_change.html": [ - [ - "/html/semantics/document-metadata/the-style-element/style_type_change.html", - {} - ] - ], "html/semantics/document-metadata/the-title-element/title.text-01.html": [ [ "/html/semantics/document-metadata/the-title-element/title.text-01.html", @@ -348321,12 +346397,6 @@ {} ] ], - "html/semantics/embedded-content/media-elements/track/track-element/track-cue-order.html": [ - [ - "/html/semantics/embedded-content/media-elements/track/track-element/track-cue-order.html", - {} - ] - ], "html/semantics/embedded-content/media-elements/track/track-element/track-data-url.html": [ [ "/html/semantics/embedded-content/media-elements/track/track-element/track-data-url.html", @@ -350979,6 +349049,24 @@ {} ] ], + "html/semantics/scripting-1/the-script-element/script-language-type.html": [ + [ + "/html/semantics/scripting-1/the-script-element/script-language-type.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/script-languages-01.html": [ + [ + "/html/semantics/scripting-1/the-script-element/script-languages-01.html", + {} + ] + ], + "html/semantics/scripting-1/the-script-element/script-languages-02.html": [ + [ + "/html/semantics/scripting-1/the-script-element/script-languages-02.html", + {} + ] + ], "html/semantics/scripting-1/the-script-element/script-noembed-noframes-iframe.xhtml": [ [ "/html/semantics/scripting-1/the-script-element/script-noembed-noframes-iframe.xhtml", @@ -351033,24 +349121,6 @@ {} ] ], - "html/semantics/scripting-1/the-script-element/script-type-and-language-empty.html": [ - [ - "/html/semantics/scripting-1/the-script-element/script-type-and-language-empty.html", - {} - ] - ], - "html/semantics/scripting-1/the-script-element/script-type-and-language-js.html": [ - [ - "/html/semantics/scripting-1/the-script-element/script-type-and-language-js.html", - {} - ] - ], - "html/semantics/scripting-1/the-script-element/script-type-and-language-with-params.html": [ - [ - "/html/semantics/scripting-1/the-script-element/script-type-and-language-with-params.html", - {} - ] - ], "html/semantics/scripting-1/the-script-element/scripting-enabled.html": [ [ "/html/semantics/scripting-1/the-script-element/scripting-enabled.html", @@ -351171,12 +349241,6 @@ {} ] ], - "html/semantics/selectors/pseudo-classes/checked-type-change.html": [ - [ - "/html/semantics/selectors/pseudo-classes/checked-type-change.html", - {} - ] - ], "html/semantics/selectors/pseudo-classes/checked.html": [ [ "/html/semantics/selectors/pseudo-classes/checked.html", @@ -351231,24 +349295,12 @@ {} ] ], - "html/semantics/selectors/pseudo-classes/indeterminate-type-change.html": [ - [ - "/html/semantics/selectors/pseudo-classes/indeterminate-type-change.html", - {} - ] - ], "html/semantics/selectors/pseudo-classes/indeterminate.html": [ [ "/html/semantics/selectors/pseudo-classes/indeterminate.html", {} ] ], - "html/semantics/selectors/pseudo-classes/inrange-outofrange-type-change.html": [ - [ - "/html/semantics/selectors/pseudo-classes/inrange-outofrange-type-change.html", - {} - ] - ], "html/semantics/selectors/pseudo-classes/inrange-outofrange.html": [ [ "/html/semantics/selectors/pseudo-classes/inrange-outofrange.html", @@ -353523,9 +351575,45 @@ {} ] ], - "html/webappapis/system-state-and-capabilities/the-navigator-object/historical.window.js": [ + "html/webappapis/system-state-and-capabilities/the-navigator-object/content.html": [ [ - "/html/webappapis/system-state-and-capabilities/the-navigator-object/historical.window.html", + "/html/webappapis/system-state-and-capabilities/the-navigator-object/content.html", + {} + ] + ], + "html/webappapis/system-state-and-capabilities/the-navigator-object/content/001.xhtml": [ + [ + "/html/webappapis/system-state-and-capabilities/the-navigator-object/content/001.xhtml", + {} + ] + ], + "html/webappapis/system-state-and-capabilities/the-navigator-object/content/002.xhtml": [ + [ + "/html/webappapis/system-state-and-capabilities/the-navigator-object/content/002.xhtml", + {} + ] + ], + "html/webappapis/system-state-and-capabilities/the-navigator-object/content/003.xhtml": [ + [ + "/html/webappapis/system-state-and-capabilities/the-navigator-object/content/003.xhtml", + {} + ] + ], + "html/webappapis/system-state-and-capabilities/the-navigator-object/content/004.xhtml": [ + [ + "/html/webappapis/system-state-and-capabilities/the-navigator-object/content/004.xhtml", + {} + ] + ], + "html/webappapis/system-state-and-capabilities/the-navigator-object/content/005.xhtml": [ + [ + "/html/webappapis/system-state-and-capabilities/the-navigator-object/content/005.xhtml", + {} + ] + ], + "html/webappapis/system-state-and-capabilities/the-navigator-object/content/006.xhtml": [ + [ + "/html/webappapis/system-state-and-capabilities/the-navigator-object/content/006.xhtml", {} ] ], @@ -353563,6 +351651,42 @@ {} ] ], + "html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/001.xhtml": [ + [ + "/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/001.xhtml", + {} + ] + ], + "html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/002.xhtml": [ + [ + "/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/002.xhtml", + {} + ] + ], + "html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/003.xhtml": [ + [ + "/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/003.xhtml", + {} + ] + ], + "html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/004.xhtml": [ + [ + "/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/004.xhtml", + {} + ] + ], + "html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/005.xhtml": [ + [ + "/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/005.xhtml", + {} + ] + ], + "html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/006.xhtml": [ + [ + "/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/006.xhtml", + {} + ] + ], "html/webappapis/the-windoworworkerglobalscope-mixin/Worker_Self_Origin.html": [ [ "/html/webappapis/the-windoworworkerglobalscope-mixin/Worker_Self_Origin.html", @@ -353681,12 +351805,6 @@ {} ] ], - "input-events/input-events-exec-command.html": [ - [ - "/input-events/input-events-exec-command.html", - {} - ] - ], "intersection-observer/bounding-box.html": [ [ "/intersection-observer/bounding-box.html", @@ -354653,12 +352771,6 @@ {} ] ], - "mediacapture-streams/MediaStream-default-feature-policy.https.sub.html": [ - [ - "/mediacapture-streams/MediaStream-default-feature-policy.https.sub.html", - {} - ] - ], "mediacapture-streams/MediaStream-finished-add.https.html": [ [ "/mediacapture-streams/MediaStream-finished-add.https.html", @@ -366727,82 +364839,6 @@ {} ] ], - "paint-timing/basetest.html": [ - [ - "/paint-timing/basetest.html", - {} - ] - ], - "paint-timing/first-contentful-bg-image.html": [ - [ - "/paint-timing/first-contentful-bg-image.html", - {} - ] - ], - "paint-timing/first-contentful-canvas.html": [ - [ - "/paint-timing/first-contentful-canvas.html", - {} - ] - ], - "paint-timing/first-contentful-image.html": [ - [ - "/paint-timing/first-contentful-image.html", - {} - ] - ], - "paint-timing/first-contentful-paint.html": [ - [ - "/paint-timing/first-contentful-paint.html", - {} - ] - ], - "paint-timing/first-contentful-svg.html": [ - [ - "/paint-timing/first-contentful-svg.html", - {} - ] - ], - "paint-timing/first-paint-bg-color.html": [ - [ - "/paint-timing/first-paint-bg-color.html", - {} - ] - ], - "paint-timing/first-paint-only.html": [ - [ - "/paint-timing/first-paint-only.html", - {} - ] - ], - "payment-handler/interfaces.https.any.js": [ - [ - "/payment-handler/interfaces.https.any.html", - {} - ], - [ - "/payment-handler/interfaces.https.any.worker.html", - {} - ] - ], - "payment-request/PaymentRequestUpdateEvent/constructor.http.html": [ - [ - "/payment-request/PaymentRequestUpdateEvent/constructor.http.html", - {} - ] - ], - "payment-request/PaymentRequestUpdateEvent/constructor.https.html": [ - [ - "/payment-request/PaymentRequestUpdateEvent/constructor.https.html", - {} - ] - ], - "payment-request/PaymentRequestUpdateEvent/updatewith-method.https.html": [ - [ - "/payment-request/PaymentRequestUpdateEvent/updatewith-method.https.html", - {} - ] - ], "payment-request/allowpaymentrequest/active-document-cross-origin.https.sub.html": [ [ "/payment-request/allowpaymentrequest/active-document-cross-origin.https.sub.html", @@ -366875,6 +364911,36 @@ {} ] ], + "payment-request/payment-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html": [ + [ + "/payment-request/payment-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html", + {} + ] + ], + "payment-request/payment-allowed-by-feature-policy-attribute.https.sub.html": [ + [ + "/payment-request/payment-allowed-by-feature-policy-attribute.https.sub.html", + {} + ] + ], + "payment-request/payment-allowed-by-feature-policy.https.sub.html": [ + [ + "/payment-request/payment-allowed-by-feature-policy.https.sub.html", + {} + ] + ], + "payment-request/payment-default-feature-policy.https.sub.html": [ + [ + "/payment-request/payment-default-feature-policy.https.sub.html", + {} + ] + ], + "payment-request/payment-disabled-by-feature-policy.https.sub.html": [ + [ + "/payment-request/payment-disabled-by-feature-policy.https.sub.html", + {} + ] + ], "payment-request/payment-request-abort-method.https.html": [ [ "/payment-request/payment-request-abort-method.https.html", @@ -366931,18 +364997,6 @@ {} ] ], - "payment-request/payment-request-shippingAddress-attribute.https.html": [ - [ - "/payment-request/payment-request-shippingAddress-attribute.https.html", - {} - ] - ], - "payment-request/payment-request-shippingOption-attribute.https.html": [ - [ - "/payment-request/payment-request-shippingOption-attribute.https.html", - {} - ] - ], "payment-request/payment-request-shippingType-attribute.https.html": [ [ "/payment-request/payment-request-shippingType-attribute.https.html", @@ -366955,9 +365009,21 @@ {} ] ], - "payment-request/rejects_if_not_active.https.html": [ + "payment-request/payment-request-update-event-constructor.http.html": [ [ - "/payment-request/rejects_if_not_active.https.html", + "/payment-request/payment-request-update-event-constructor.http.html", + {} + ] + ], + "payment-request/payment-request-update-event-constructor.https.html": [ + [ + "/payment-request/payment-request-update-event-constructor.https.html", + {} + ] + ], + "payment-request/payment-request-update-event-updatewith-method.https.html": [ + [ + "/payment-request/payment-request-update-event-updatewith-method.https.html", {} ] ], @@ -378159,30 +376225,6 @@ {} ] ], - "streams/readable-byte-streams/brand-checks.dedicatedworker.html": [ - [ - "/streams/readable-byte-streams/brand-checks.dedicatedworker.html", - {} - ] - ], - "streams/readable-byte-streams/brand-checks.html": [ - [ - "/streams/readable-byte-streams/brand-checks.html", - {} - ] - ], - "streams/readable-byte-streams/brand-checks.serviceworker.https.html": [ - [ - "/streams/readable-byte-streams/brand-checks.serviceworker.https.html", - {} - ] - ], - "streams/readable-byte-streams/brand-checks.sharedworker.html": [ - [ - "/streams/readable-byte-streams/brand-checks.sharedworker.html", - {} - ] - ], "streams/readable-byte-streams/general.dedicatedworker.html": [ [ "/streams/readable-byte-streams/general.dedicatedworker.html", @@ -388789,12 +386831,6 @@ {} ] ], - "workers/worker-performance.worker.js": [ - [ - "/workers/worker-performance.worker.html", - {} - ] - ], "x-frame-options/deny.sub.html": [ [ "/x-frame-options/deny.sub.html", @@ -409347,7 +407383,7 @@ "support" ], "./README.md": [ - "fa83617dc51fcc6f69732e43be203bc94de05ec1", + "c81600cf81c43a2abef1bea9eaa09380412d4b03", "support" ], "./check_stability.ini": [ @@ -409359,7 +407395,7 @@ "support" ], "./lint.whitelist": [ - "85909de8994c7339bd86c969094a072de473a6de", + "223804666e64dde8a7e22ee394baa50d77e0cff0", "support" ], "./serve.py": [ @@ -413575,7 +411611,7 @@ "support" ], "2dcontext/tools/current-work-canvas.xhtml": [ - "c712cdec9ced8da63eb6b8dfce17906a4210883e", + "891246c4dfe34f9b43b5e642b058072c4d664817", "support" ], "2dcontext/tools/gentest.py": [ @@ -413583,19 +411619,19 @@ "support" ], "2dcontext/tools/gentestutils.py": [ - "d7862903e270295fd11e2d98c5c4dbcde4ae0717", + "f613a789c0e231a3600070583661ba3b1842fed3", "support" ], "2dcontext/tools/name2dir.yaml": [ - "3a852f1cc85eae2a17e67d56ce0c9bb5e4e69b41", + "1333578a501fec686bc7ed22edf4cc8e7203ae13", "support" ], "2dcontext/tools/spec.yaml": [ - "4692cedcc0d1d5af9ac917fa19d3979e2129a933", + "4405a99f9fa29069670a1fb8aaef5e1c89ac33d0", "support" ], "2dcontext/tools/specextract.py": [ - "5c656f7f4859ec0eb0559b1b1dfe6e085032d7c8", + "c6c58223012640480eb1e7d0b9ce4c343cafdb7c", "support" ], "2dcontext/tools/templates.yaml": [ @@ -413771,7 +411807,7 @@ "testharness" ], "FileAPI/OWNERS": [ - "f1d0cf569f445712d986e9a85f3cbc717137d7fe", + "5e749f9ec12704ea48e99cf4c31e703e5325d419", "support" ], "FileAPI/blob/Blob-XHR-revoke.html": [ @@ -416478,22 +414514,10 @@ "8c2f2df46c8086f657806f763e68d775e1294bd0", "testharness" ], - "XMLHttpRequest/access-control-basic-cors-safelisted-request-headers.htm": [ - "29b6638f3de85cc39b77b86353dc49865e1fdc39", - "testharness" - ], - "XMLHttpRequest/access-control-basic-cors-safelisted-response-headers.htm": [ - "43748883f8bf38fe34e0c0f568dec6e1cc7c9b28", - "testharness" - ], "XMLHttpRequest/access-control-basic-denied.htm": [ "890170b5b2857a6e837ea3ed0dc4692e206a864a", "testharness" ], - "XMLHttpRequest/access-control-basic-get-fail-non-simple.htm": [ - "4641b3a58df7f1eeea460e995692418cfd63f507", - "testharness" - ], "XMLHttpRequest/access-control-basic-non-cors-safelisted-content-type.htm": [ "b6e15129e3e0917bb35f5b021ba7849b924d6945", "testharness" @@ -416503,7 +414527,7 @@ "testharness" ], "XMLHttpRequest/access-control-basic-post-with-non-cors-safelisted-content-type.htm": [ - "d7877dca1a16e5c3f52881558f9951e4a5f78ba8", + "4db804485282525ce98ef71c2824ade7fdb0f357", "testharness" ], "XMLHttpRequest/access-control-basic-preflight-denied.htm": [ @@ -416514,14 +414538,6 @@ "f69a2fdd41df78f29187bfa848e88c5c39b60736", "testharness" ], - "XMLHttpRequest/access-control-preflight-async-method-denied.htm": [ - "29bb39b957742d739bb0d54464b48a53533206fe", - "testharness" - ], - "XMLHttpRequest/access-control-preflight-async-not-supported.htm": [ - "7520098b97455ca0795304751cef93197be469f6", - "testharness" - ], "XMLHttpRequest/access-control-preflight-credential-async.htm": [ "ae93b44faf45f95927a1ee82052a414273333e61", "testharness" @@ -416530,10 +414546,6 @@ "fa393dd9f33c2c7f151f00f034ae0f23a5bbf74a", "testharness" ], - "XMLHttpRequest/access-control-preflight-headers-async.htm": [ - "bd10420c088f4e871d1377bf1b7e45d30c1458c9", - "testharness" - ], "XMLHttpRequest/access-control-preflight-headers-sync.htm": [ "8dcf3427076b048f2a38890a15427d703c36728f", "testharness" @@ -416542,76 +414554,16 @@ "1f3beb7047a0f4828d44f67664a977469af75263", "testharness" ], - "XMLHttpRequest/access-control-preflight-request-header-sorted.htm": [ - "45f904c2322ee7b14cc78075f99243bbad7ecd96", - "testharness" - ], - "XMLHttpRequest/access-control-preflight-request-headers-origin.htm": [ - "7928f916ba92a1c7c13bb2c099ec08fc5f14429e", - "testharness" - ], "XMLHttpRequest/access-control-preflight-request-invalid-status-301.htm": [ "e59e2de75149869531b056b53501b92302fdee04", "testharness" ], - "XMLHttpRequest/access-control-preflight-request-invalid-status-400.htm": [ - "48fbbfd1a516469058e7559969eb1f36f02c3f14", - "testharness" - ], "XMLHttpRequest/access-control-preflight-request-invalid-status-501.htm": [ "a59b9c8f77991992faade11e955061078b9d9623", "testharness" ], - "XMLHttpRequest/access-control-preflight-request-must-not-contain-cookie.htm": [ - "78f95f6f962f1696a1ff37a6a3216fba4e741f56", - "testharness" - ], - "XMLHttpRequest/access-control-preflight-sync-header-denied.htm": [ - "98e89f8ddccbba846b6f21f1d77b6a64554bcb52", - "testharness" - ], - "XMLHttpRequest/access-control-preflight-sync-method-denied.htm": [ - "536deb1a3322c4ef45e259849e659d1fa4bea7c7", - "testharness" - ], - "XMLHttpRequest/access-control-preflight-sync-not-supported.htm": [ - "997d43197782650b479ccdef1cc43d8bde7e31e4", - "testharness" - ], - "XMLHttpRequest/access-control-recursive-failed-request.htm": [ - "03650f5362e483a6e29a05554723385ab601495f", - "testharness" - ], - "XMLHttpRequest/access-control-response-with-body-sync.htm": [ - "ae7e24c4b3b3295caa7e76555ac8a21d9062556a", - "testharness" - ], - "XMLHttpRequest/access-control-response-with-body.htm": [ - "e5b2ae207a2ae58bd20a4d6903991cff5e27b5a7", - "testharness" - ], - "XMLHttpRequest/access-control-response-with-exposed-headers.htm": [ - "9c4a5cf99e43f1315dfd73f543450e4056dcef36", - "testharness" - ], - "XMLHttpRequest/access-control-sandboxed-iframe-allow-origin-null.htm": [ - "2b507239c3e3fa6602068d6d92897c5d042a7a0d", - "testharness" - ], - "XMLHttpRequest/access-control-sandboxed-iframe-allow.htm": [ - "b1140eacc383af590578319b25ee803ba50c3fee", - "testharness" - ], - "XMLHttpRequest/access-control-sandboxed-iframe-denied-without-wildcard.htm": [ - "a476086f22c912c13d4ac175af95c80f8e226c25", - "testharness" - ], - "XMLHttpRequest/access-control-sandboxed-iframe-denied.htm": [ - "32fcbfa28e93aad6e0040b5b1c9478ce76e7e06e", - "testharness" - ], "XMLHttpRequest/allow-lists-starting-with-comma.htm": [ - "34a8d82f397f35902c73d9ced2f3cf900d04ae53", + "5e7870a6d66c475c2f96fd64a146ea751b08f4b1", "testharness" ], "XMLHttpRequest/anonymous-mode-unsupported.htm": [ @@ -416955,11 +414907,7 @@ "support" ], "XMLHttpRequest/resources/access-control-allow-lists.py": [ - "941a26e0b85d608bb2617362df74263564b5981d", - "support" - ], - "XMLHttpRequest/resources/access-control-allow-with-body.py": [ - "fbd35be708e601c7c3fb625ce28b9f43de784e13", + "72914699c33449255e47adb9668983e1bef8da14", "support" ], "XMLHttpRequest/resources/access-control-auth-basic.py": [ @@ -416978,10 +414926,6 @@ "b7351f59af91646549075b6b732eeb6c750e3faf", "support" ], - "XMLHttpRequest/resources/access-control-basic-cors-safelisted-request-headers.py": [ - "19a0b1d88765fa152c17c7f684651be8c4bae3da", - "support" - ], "XMLHttpRequest/resources/access-control-basic-denied.py": [ "35e7b6c552caf55e8ea7d34ec51d354c8eb2bc6e", "support" @@ -417006,14 +414950,6 @@ "eda02da8e1d89f28ff0e07442539b7eca4ca556f", "support" ], - "XMLHttpRequest/resources/access-control-basic-whitelist-response-headers.py": [ - "c530b8431372e0511c91b150c5f1015d504ae374", - "support" - ], - "XMLHttpRequest/resources/access-control-cookie.py": [ - "0551a6a4284fcae2ed5314d5d02767a4da1ad981", - "support" - ], "XMLHttpRequest/resources/access-control-origin-header.py": [ "529883eed380c4505c1ddbc87ae5885254756626", "support" @@ -417026,26 +414962,10 @@ "3f39f2f6bdda8c167df09525b8d23d04c16b2462", "support" ], - "XMLHttpRequest/resources/access-control-preflight-request-header-sorted.py": [ - "357dbf2f01ab59c8689af632c1116d2053f3829d", - "support" - ], - "XMLHttpRequest/resources/access-control-preflight-request-headers-origin.py": [ - "abc6b25627e019ae67b90beebad42164143321d0", - "support" - ], "XMLHttpRequest/resources/access-control-preflight-request-invalid-status.py": [ "c572b1e3d79f66df0a40766e6e4c3cc785458d0e", "support" ], - "XMLHttpRequest/resources/access-control-preflight-request-must-not-contain-cookie.py": [ - "1343bfee18c64bfbb625591bc65117e5b692c487", - "support" - ], - "XMLHttpRequest/resources/access-control-sandboxed-iframe.html": [ - "3aa5a903afc03e167a88322db44c29b287509f47", - "support" - ], "XMLHttpRequest/resources/auth1/auth.py": [ "cbe9305740f7e0a9e8c7be9dbfcb606f8abb2758", "support" @@ -417839,7 +415759,7 @@ "support" ], "accelerometer/idlharness.https.html": [ - "a4b5c164268d6742e7da504d15d6b9eeb4cfc6ce", + "ac421649ad01868af57e06d322515b4fa36a2dda", "testharness" ], "ambient-light/AmbientLightSensor.https.html": [ @@ -417859,7 +415779,7 @@ "support" ], "ambient-light/idlharness.https.html": [ - "f48a58b450fa15e820bef6d9c6f5dac834d8d6fb", + "2c0c24a7d0f4cc0026264641a64234a8c0e7ac5a", "testharness" ], "annotation-model/.editorconfig": [ @@ -419938,22 +417858,14 @@ "556ab735b0461aab4dbbb02d277da6ea07106469", "testharness" ], + "auxclick/OWNERS": [ + "314d421a5544db277664bb55bd04b87e9ed2fdba", + "support" + ], "background-fetch/OWNERS": [ "0c4e22b970a92b2d77b0f50cc27c2d46aad0b43b", "support" ], - "background-fetch/content-security-policy.https.window.js": [ - "1675b0665319efe5ce8423230f839b20e3b6a63b", - "testharness" - ], - "background-fetch/credentials-in-url.https.window.js": [ - "6fa8d069c6f17da908078ac1a3770b2bd730426c", - "testharness" - ], - "background-fetch/dangling-markup.https.window.js": [ - "fd9efe16c485c6fa6cc4b587b492eb24bf9ccac2", - "testharness" - ], "background-fetch/interfaces-worker.https.html": [ "3bdcb55c864d99da109cdc0abe56c06aaf3e3d1e", "testharness" @@ -419970,22 +417882,6 @@ "0c959d5fa41c3db70c326b83e064b8261a6f90b4", "testharness" ], - "background-fetch/mixed-content-and-allowed-schemes.https.window.js": [ - "13873d861416a40d831026a88f864f13a9447c7f", - "testharness" - ], - "background-fetch/port-blocking.https.window.js": [ - "6e06b6e9b9cd8713ff5a8ca405c1b54fe15c559c", - "testharness" - ], - "background-fetch/resources/sw.js": [ - "9b4fbabe0209a5367186e8c5717be88f32530027", - "support" - ], - "background-fetch/resources/utils.js": [ - "1109faf95d0b0d09f2eb9a486638d68af55cb52c", - "support" - ], "battery-status/OWNERS": [ "c08081d13e4029cf4fffb48c15d323d8b15a581b", "support" @@ -420190,10 +418086,6 @@ "10f5f9d409ef513edb129e0e8522aa5f74d51ce8", "support" ], - "clipboard-apis/OWNERS": [ - "bae753666bda85e9805a5e2fad80ba71459b8aba", - "support" - ], "clipboard-apis/async-interfaces.https.html": [ "68a1ea255a72e54e6a2147797d4213914a79aece", "testharness" @@ -420218,6 +418110,10 @@ "e69933ca4cdc42105d469b7ffb105aa60a8e0875", "manual" ], + "clipboard/OWNERS": [ + "bae753666bda85e9805a5e2fad80ba71459b8aba", + "support" + ], "common/OWNERS": [ "13fbb201f77b9929d7f5693b70855c9b68abc70b", "support" @@ -438914,6 +436810,38 @@ "368845671fc996d39fd6f85c113a26cdaa98ee3e", "support" ], + "content-security-policy/blink-contrib/object-src-applet-archive-codebase.sub.html": [ + "7f81f0fe6a5ed984e6084250672e598a2fe2c707", + "testharness" + ], + "content-security-policy/blink-contrib/object-src-applet-archive-codebase.sub.html.sub.headers": [ + "37429d7e5523b4fa092f319e0348abf62f1fe95e", + "support" + ], + "content-security-policy/blink-contrib/object-src-applet-archive.sub.html": [ + "9d07979a968cea9958c237e465b3562fac0d6e65", + "testharness" + ], + "content-security-policy/blink-contrib/object-src-applet-archive.sub.html.sub.headers": [ + "0e9b0159e148542c330eeb1c9501911e2e0473c0", + "support" + ], + "content-security-policy/blink-contrib/object-src-applet-code-codebase.sub.html": [ + "5b0ef3d19498af074fbd2ca00b6af16774b1b4cc", + "testharness" + ], + "content-security-policy/blink-contrib/object-src-applet-code-codebase.sub.html.sub.headers": [ + "eac4a0d1aecb5475bb88b223deec64209f98b25c", + "support" + ], + "content-security-policy/blink-contrib/object-src-applet-code.sub.html": [ + "5827478d16c8bf8f473daae756eaeabaafdee879", + "testharness" + ], + "content-security-policy/blink-contrib/object-src-applet-code.sub.html.sub.headers": [ + "8d1f3d53e9702d62946969231a45c79f26e6e287", + "support" + ], "content-security-policy/blink-contrib/object-src-no-url-allowed.sub.html": [ "e4cd8d8e7a3150626eea1d6ca7beed13feb6a76c", "testharness" @@ -440722,702 +438650,6 @@ "31461ac108fe717b074a41e14c12d9b83c064f85", "testharness" ], - "core-aam/OWNERS": [ - "3a6002295ea2893ba74763e46965bd2d1291d55b", - "support" - ], - "core-aam/README.md": [ - "a910a51a7869305635992eb784b0ddfe70d8f8ae", - "support" - ], - "core-aam/alert-manual.html": [ - "d42332d1f0c644ce2b1fedacdfb0a12ea05e4357", - "manual" - ], - "core-aam/alertdialog-manual.html": [ - "84ab9f273e1ede0209d8c394278fc082da9cae8d", - "manual" - ], - "core-aam/application-manual.html": [ - "964f6da30719c6384df52e29ad87d1f58e0cc609", - "manual" - ], - "core-aam/aria-atomic_false-manual.html": [ - "489457cac27ce80189341e416f2f0f1694890cd9", - "manual" - ], - "core-aam/aria-atomic_true-manual.html": [ - "0fa10bed96154a734e66bd46dc0d69450e4d9c25", - "manual" - ], - "core-aam/aria-autocomplete_both_new-manual.html": [ - "e91ce8ab8b283235d7f26290b3b82f6db82216e6", - "manual" - ], - "core-aam/aria-autocomplete_inline_new-manual.html": [ - "bc4b69bdff2e3b4a8c93d11838c2e35043ab66f0", - "manual" - ], - "core-aam/aria-autocomplete_list_new-manual.html": [ - "718d69f40b4ffa4205fdcbf4d3b9e7b8fcbd83bd", - "manual" - ], - "core-aam/aria-busy_false-manual.html": [ - "196d40f611124d06960fcf2635795c35e0996218", - "manual" - ], - "core-aam/aria-busy_true-manual.html": [ - "c47a4a1f5267e34c534beff3039edff75b559478", - "manual" - ], - "core-aam/aria-checked_false_on_checkbox-manual.html": [ - "5e699c8f425a153be30d7bcffab3c7ac4e9fd182", - "manual" - ], - "core-aam/aria-checked_false_on_menuitemradio-manual.html": [ - "1564ead59e7aacb66f411dcb7c046849f0eccf5e", - "manual" - ], - "core-aam/aria-checked_mixed-manual.html": [ - "93c2d638955729f994e1ef3075399e66c4741a71", - "manual" - ], - "core-aam/aria-checked_true_on_checkbox-manual.html": [ - "03765646df203d1e65f533d3ece48c4834921eb8", - "manual" - ], - "core-aam/aria-checked_true_on_menuitemradio-manual.html": [ - "22ac9848616b98974f16cc0a6d3e1ea49ca45e90", - "manual" - ], - "core-aam/aria-colcount_new-manual.html": [ - "7613cc5436b2a716259e0cc9db7961fe5963d205", - "manual" - ], - "core-aam/aria-colindex_new-manual.html": [ - "420c066fde04092b86ba2877cb39048bf258b78a", - "manual" - ], - "core-aam/aria-colspan_new-manual.html": [ - "19dc7dd49b40fc9d94e68158e936a92603c6eeda", - "manual" - ], - "core-aam/aria-controls-manual.html": [ - "1ee9282c1802333d8e7d9f5fabba31f872ed689e", - "manual" - ], - "core-aam/aria-current_with_non-false_allowed_value_new-manual.html": [ - "2830b1eecdd82134942db90d47ede5e180dae8d4", - "manual" - ], - "core-aam/aria-current_with_unrecognized_value_new-manual.html": [ - "22e8ab095e4c7065a60c892427ce158850afe5a6", - "manual" - ], - "core-aam/aria-describedby-manual.html": [ - "494c5a53797b0d2d1257507b529587fcc892a16b", - "manual" - ], - "core-aam/aria-details_new-manual.html": [ - "d912f5dab5ac4ecf572389b5495285cd49f0e8e9", - "manual" - ], - "core-aam/aria-disabled_false-manual.html": [ - "ab4570557f36e74cbbb65089c13da90b81fb8ce0", - "manual" - ], - "core-aam/aria-disabled_true-manual.html": [ - "b6d35f2afbd12143d570b4e449798ec09e8a0e43", - "manual" - ], - "core-aam/aria-dropeffect_copy-manual.html": [ - "a087d4af0835ed9a80870bb43e09c72b7a739e4c", - "manual" - ], - "core-aam/aria-dropeffect_execute-manual.html": [ - "a1b1de19f749f69b11dcab73ee18899cdfac6514", - "manual" - ], - "core-aam/aria-dropeffect_link-manual.html": [ - "417e5b9398d90dfbaf4892bc7eae662674683cb7", - "manual" - ], - "core-aam/aria-dropeffect_move-manual.html": [ - "97e89dd1af2006340374b1928ecc5893e2ecc0d2", - "manual" - ], - "core-aam/aria-dropeffect_none-manual.html": [ - "2f3fad02efb9328cea92ee015ab06ecbafc9b14f", - "manual" - ], - "core-aam/aria-dropeffect_popup-manual.html": [ - "3e7723d80a5666ff1e5ffccb7ac564de712d6153", - "manual" - ], - "core-aam/aria-errormessage-manual.html": [ - "5d6be02752f6a6a243b38fba4ecf5c5ef42c3261", - "manual" - ], - "core-aam/aria-expanded_false-manual.html": [ - "ef72441e78e7464399ce9b8da19a04420d727735", - "manual" - ], - "core-aam/aria-expanded_true-manual.html": [ - "e57f606a01fffc57ede231fda6e093b9759afc9c", - "manual" - ], - "core-aam/aria-flowto-manual.html": [ - "23db7629412cb0f8fb2a7abe97e9ec2c69a9f512", - "manual" - ], - "core-aam/aria-grabbed_false-manual.html": [ - "5fd4816c4c8b1800d4a102d66568bd9d2cfcb976", - "manual" - ], - "core-aam/aria-grabbed_true-manual.html": [ - "4b3e3afad5525901db5d467a8416511b4af55cf3", - "manual" - ], - "core-aam/aria-haspopup_dialog_new-manual.html": [ - "3cdd2fe1bd4bb0115d8d92a38f7b4822e62e58fa", - "manual" - ], - "core-aam/aria-haspopup_false-manual.html": [ - "9a1821475c5f1b331326d3f32b5b2a3670780b91", - "manual" - ], - "core-aam/aria-haspopup_listbox_new-manual.html": [ - "dfade194716c8d54d5aad762ed16edfc9eb52e44", - "manual" - ], - "core-aam/aria-haspopup_menu_new-manual.html": [ - "51aafc7d69b65f3f40c1a8d0c8adf7c8857a60d9", - "manual" - ], - "core-aam/aria-haspopup_tree_new-manual.html": [ - "000a7add26a7805a53ddda772780986692b21e49", - "manual" - ], - "core-aam/aria-haspopup_true-manual.html": [ - "617282c525855c68236395af33780c8a4644ce2f", - "manual" - ], - "core-aam/aria-hidden_true-manual.html": [ - "769a8e4ac26d8d23e2cef46b6d3895613b51700c", - "manual" - ], - "core-aam/aria-invalid_false-manual.html": [ - "8aa99436e751a7dd29cc6158d2a5cfa2dadc14e9", - "manual" - ], - "core-aam/aria-invalid_grammar-manual.html": [ - "378f3fab4fd15d967045a4d8176d23cd33a74928", - "manual" - ], - "core-aam/aria-invalid_spelling-manual.html": [ - "aec08e95facefecff84e413f4a9bdd419f60bfcb", - "manual" - ], - "core-aam/aria-invalid_true-manual.html": [ - "7f2511c328d79e14ef5422659bf30ec7e0fc6e85", - "manual" - ], - "core-aam/aria-invalid_with_unrecognized_value-manual.html": [ - "e73ce45d034570958a1a0b94375c996c8f480645", - "manual" - ], - "core-aam/aria-keyshortcuts_new-manual.html": [ - "fb13fd6035b517631f765aa68da0a0e774b87edb", - "manual" - ], - "core-aam/aria-label-manual.html": [ - "b4ed56e8ee499fa519bb1dc0ac962654ae4420f3", - "manual" - ], - "core-aam/aria-labelledby-manual.html": [ - "33feb7b4ae809ab5633063fcb5ade3fbba47726c", - "manual" - ], - "core-aam/aria-level_on_heading_new-manual.html": [ - "73922a74bc22596de087bc987fc0f04b0f991fd5", - "manual" - ], - "core-aam/aria-level_on_non-heading-manual.html": [ - "b980f7c3d410a90faf90750bc147c3d6ff38a54c", - "manual" - ], - "core-aam/aria-live_assertive-manual.html": [ - "f8feebe3c3f00322028226083d687e3bdf1fa147", - "manual" - ], - "core-aam/aria-live_off-manual.html": [ - "4b0d41a00835bbf7c389f770e131ad116a53619f", - "manual" - ], - "core-aam/aria-live_polite-manual.html": [ - "054cf669d56af6dbacf1b9b4b2d0e93abc5ade7f", - "manual" - ], - "core-aam/aria-modal_false_new-manual.html": [ - "89dc63db15a5fe70dabe4dc853d9ece0b34739d0", - "manual" - ], - "core-aam/aria-modal_true_new-manual.html": [ - "9cf751b1150bd94c3f7521beed0aa457d5185e5d", - "manual" - ], - "core-aam/aria-multiline_false-manual.html": [ - "ed39d9373be306c9d8e0bfae33201e004e599114", - "manual" - ], - "core-aam/aria-multiline_true-manual.html": [ - "82a17b7a1e9c2fc5cb12d37df4e3c671e28d7af4", - "manual" - ], - "core-aam/aria-multiselectable_false-manual.html": [ - "f0a416187c0633f964a1c77c4df56b52d53846a7", - "manual" - ], - "core-aam/aria-multiselectable_true-manual.html": [ - "6176397e7942c884647ed1fc8dd9cddb82d10149", - "manual" - ], - "core-aam/aria-orientation_horizontal-manual.html": [ - "9f5294b95ab6e620c125b74844f7ead1e4279f56", - "manual" - ], - "core-aam/aria-orientation_undefined_new-manual.html": [ - "c5a1b4f4b53dda1bc19f83cdeb5d6c97f468fc24", - "manual" - ], - "core-aam/aria-orientation_vertical-manual.html": [ - "b256c78602ef52ff80d6fedfdc4dbe1680c789f9", - "manual" - ], - "core-aam/aria-owns_may_need_manual_verification-manual.html": [ - "36e568e0da8ebfe722fd9f52e35929ea1426cf91", - "manual" - ], - "core-aam/aria-placeholder_new-manual.html": [ - "0911902afabf27f9bac77e5d3b14e54c965b36fe", - "manual" - ], - "core-aam/aria-posinset-manual.html": [ - "9152c29dac926f6ed946e04bbd6241389943dce3", - "manual" - ], - "core-aam/aria-pressed_false-manual.html": [ - "ee3ed7c1db0b094addf65162c51cee6565794b33", - "manual" - ], - "core-aam/aria-pressed_mixed-manual.html": [ - "acca0901bb55e4e14f56e42aa7072cd1f0b664c8", - "manual" - ], - "core-aam/aria-pressed_true-manual.html": [ - "9fd08731864c1097b8900f9465be17e440fb6658", - "manual" - ], - "core-aam/aria-readonly_false-manual.html": [ - "c04cdb4d072e4fd758cac204db1ed71fd9da7366", - "manual" - ], - "core-aam/aria-readonly_is_unspecified_on_gridcell_new-manual.html": [ - "df49945ad25fa8f87d80444392fa56469edb199a", - "manual" - ], - "core-aam/aria-readonly_true_on_checkbox-manual.html": [ - "c983178ece56e6553c43efe744f668f6bab72b99", - "manual" - ], - "core-aam/aria-readonly_true_on_radiogroup-manual.html": [ - "dedf2204aac86268b5103e1f742ef610155749f1", - "manual" - ], - "core-aam/aria-readonly_true_on_textbox-manual.html": [ - "a8d50b2a9d6358f8a2de2536f1f746d49ee3a6f4", - "manual" - ], - "core-aam/aria-relevant-manual.html": [ - "1ba191d621ce4dd1660c09f8e835c8294821aa37", - "manual" - ], - "core-aam/aria-required_true-manual.html": [ - "0c7016591a48bf1cf70eeba4eca818b8c4f675e5", - "manual" - ], - "core-aam/aria-roledescription_is_empty_or_whitespace_characters_new-manual.html": [ - "85e91ac1ef676772dae201a13d6420da8b9e2c93", - "manual" - ], - "core-aam/aria-roledescription_new-manual.html": [ - "9fe9d0b6ddf325c86f5e841f66b4a0dc64e2b1c9", - "manual" - ], - "core-aam/aria-rowcount_new-manual.html": [ - "3d0199ecc43bd7804657515689d78ae5fc78df40", - "manual" - ], - "core-aam/aria-rowindex_new-manual.html": [ - "c87845f54851850aaf1e7515527dd65c1b13c107", - "manual" - ], - "core-aam/aria-rowspan_new-manual.html": [ - "b18306b6cf3dcbde4637acd8b0b6cac524b29a2b", - "manual" - ], - "core-aam/aria-selected_false-manual.html": [ - "bacdc3819df22dc1bf058625601035b19f754d0f", - "manual" - ], - "core-aam/aria-selected_true-manual.html": [ - "333a7c9da14989487923dcf2268b583ecff1d36b", - "manual" - ], - "core-aam/aria-setsize_-1-manual.html": [ - "54f2be5a91f3742cb2c516b540728f3a9e47bdf6", - "manual" - ], - "core-aam/aria-setsize_3-manual.html": [ - "41e2f5f7963fb1e442628918a00c6725a79884b3", - "manual" - ], - "core-aam/aria-sort_ascending-manual.html": [ - "df75385bee7790243235d151f105cde9bcd1e1dd", - "manual" - ], - "core-aam/aria-sort_descending-manual.html": [ - "0c5a16b83902173128d3421229a0b043454d7390", - "manual" - ], - "core-aam/aria-sort_none-manual.html": [ - "17bd36d91b02923c47b3e768165d00bb661f64b3", - "manual" - ], - "core-aam/aria-sort_other-manual.html": [ - "ae0cf4fbe7406ed857c9f7f622cd40bc13ebc04d", - "manual" - ], - "core-aam/aria-valuemax-manual.html": [ - "95846c40b7f0b503e0308c11a01f24e1c7c655b2", - "manual" - ], - "core-aam/aria-valuemin-manual.html": [ - "2a7bb955418c4bb067c657c8339b95c0e56a81dc", - "manual" - ], - "core-aam/aria-valuenow-manual.html": [ - "c9907cef3fffa1abb886e8c40e2617f606ddaded", - "manual" - ], - "core-aam/aria-valuetext-manual.html": [ - "6478e624e5d3c200c21170017d0231637cdfbcb4", - "manual" - ], - "core-aam/article-manual.html": [ - "f8e5677917f2027b7bcda36ae9489658851f29cb", - "manual" - ], - "core-aam/banner_new-manual.html": [ - "c55cb00d6a2d1d67e0d6007a9b8445e32d8a2a74", - "manual" - ], - "core-aam/button_with_aria-haspopup_dialog_new-manual.html": [ - "80b2f3068a42c269602ac6afa6e0c42c2c8d24aa", - "manual" - ], - "core-aam/button_with_aria-haspopup_true_new-manual.html": [ - "d700439726c0a8c29865a5d7d9dd67bc059be242", - "manual" - ], - "core-aam/button_with_default_values_for_aria-pressed_and_aria-haspopup-manual.html": [ - "b9a71a7260271d95d1a90d40ab6bdf35f10de544", - "manual" - ], - "core-aam/button_with_defined_value_for_aria-pressed-manual.html": [ - "794289d0e18725c0409ffe552fa41cdb55da73db", - "manual" - ], - "core-aam/cell_new-manual.html": [ - "e2067a50a1c7b968a98953feaf0185e1e7fcc668", - "manual" - ], - "core-aam/checkbox-manual.html": [ - "bb72df585717aba95d0655f23964f1453b6d26b2", - "manual" - ], - "core-aam/columnheader-manual.html": [ - "176f72c047ed63f0ca590347511cfe0b65eaacd0", - "manual" - ], - "core-aam/combobox-manual.html": [ - "bdef56d59a2075e909deee62fa4e83033945e5dd", - "manual" - ], - "core-aam/complementary_new-manual.html": [ - "d96d9990a7974fe20a3a361dbfab249a292ddb69", - "manual" - ], - "core-aam/contentinfo_new-manual.html": [ - "a94c8e0080614473f65eb2f096a8fca4659473ed", - "manual" - ], - "core-aam/definition-manual.html": [ - "b242f6c3f03a77fc0185d0d87be79fb3d0909bb3", - "manual" - ], - "core-aam/dialog-manual.html": [ - "9eac774edaa43c88b33832c78b3c6c3b3b18ee3d", - "manual" - ], - "core-aam/directory-manual.html": [ - "7a83b021b400311c2f9298f1676b05c35d41dc05", - "manual" - ], - "core-aam/document-manual.html": [ - "6fba7d1f7ff31959935e785060f5d3c908e5a87f", - "manual" - ], - "core-aam/feed_new-manual.html": [ - "efa21e5b21974e5dd07755010be6296530675d66", - "manual" - ], - "core-aam/figure_new-manual.html": [ - "9a88af2fa13af4b2fd2cfdddee404df94df313df", - "manual" - ], - "core-aam/form_new-manual.html": [ - "9fba5ac3cc94db689059ecb7e40f1b5aa57ccd8f", - "manual" - ], - "core-aam/grid-manual.html": [ - "b1da9b11d5744e65acd54009324a6005a3f93b73", - "manual" - ], - "core-aam/gridcell-manual.html": [ - "182fc2e0dc0a34ca1046cce004d7c97bb43279bd", - "manual" - ], - "core-aam/group-manual.html": [ - "d7ed139cf93ed5031012b2ef3c5ba4ef1b11f517", - "manual" - ], - "core-aam/heading-manual.html": [ - "7826a67c3768f158e212b55cca69d8237c3f6c0e", - "manual" - ], - "core-aam/img-manual.html": [ - "2b85d7d4f99d06bdb12e50a65e8d39c75c60aa8c", - "manual" - ], - "core-aam/link-manual.html": [ - "8fb41f0d96179c1d901899eb82b89f86812962da", - "manual" - ], - "core-aam/list-manual.html": [ - "8f76369c4ada1718356206104eed1984e2d17046", - "manual" - ], - "core-aam/listbox_not_owned_by_or_child_of_combobox-manual.html": [ - "7f7e4e6109f3c1bf6d49a496b03b717207e60ec3", - "manual" - ], - "core-aam/listbox_owned_by_or_child_of_combobox-manual.html": [ - "4e3061058708f705419b21b767b6e65f2349f247", - "manual" - ], - "core-aam/listitem-manual.html": [ - "b867ef76a2ae9737fbad43d167b4c422c90530cc", - "manual" - ], - "core-aam/log-manual.html": [ - "6248ca898362834265c76f584d97031ec87da0ea", - "manual" - ], - "core-aam/main_new-manual.html": [ - "719ea5348c648c76ec6c49b48066d75669695d52", - "manual" - ], - "core-aam/marquee-manual.html": [ - "7ac90bc94c00b956294eeb80afd5f9f66cd5d3bc", - "manual" - ], - "core-aam/math-manual.html": [ - "e8b5acf5feec411a603522cebd570015b36001ca", - "manual" - ], - "core-aam/menu-manual.html": [ - "7c4d7ebda6a4bd823bbf5923ed3a56fb250250f3", - "manual" - ], - "core-aam/menubar-manual.html": [ - "f7b51bc3926dd680d2443c9a8844e270bee80941", - "manual" - ], - "core-aam/menuitem_not_owned_by_or_child_of_group-manual.html": [ - "457f50336677ac538f571bf8278c9c2341889217", - "manual" - ], - "core-aam/menuitem_owned_by_or_child_of_group-manual.html": [ - "458d7336a7d928017c69fb4727cd95698c355ad8", - "manual" - ], - "core-aam/menuitemcheckbox-manual.html": [ - "2e98e1076407242eeecaabe5889efad369cec98a", - "manual" - ], - "core-aam/menuitemradio-manual.html": [ - "61b7dc8e533e6cc1f48550b6829a057b0111e80d", - "manual" - ], - "core-aam/navigation_new-manual.html": [ - "9bf8da1d1596ee280a07fec3feeb57adecd1f28e", - "manual" - ], - "core-aam/none_new-manual.html": [ - "af2979bfd7b4571ba5fed156a7433e7e02c67e99", - "manual" - ], - "core-aam/note-manual.html": [ - "77290ed56f12fab7d52dd20324cfba1c8288c87b", - "manual" - ], - "core-aam/option_inside_combobox-manual.html": [ - "224a3ab52b06559452a999695208b08d5e1c5379", - "manual" - ], - "core-aam/option_not_inside_combobox-manual.html": [ - "ab4300eeae7db2a8cfb503e963ea7a76d0b333ef", - "manual" - ], - "core-aam/presentation-manual.html": [ - "085fabf6f64e30fdc0d5f000d6f7ee29f0758ce6", - "manual" - ], - "core-aam/progressbar-manual.html": [ - "a9b4aabf96dbe5d5bcb5e316a60e2b4547825e18", - "manual" - ], - "core-aam/radio-manual.html": [ - "00135d2f779f9a88b7b67a15e9485b7abf0dc310", - "manual" - ], - "core-aam/radiogroup-manual.html": [ - "11c9d95418cdce273ad6c6bcdb5fe72c321dc3d6", - "manual" - ], - "core-aam/region_with_an_accessible_name_new-manual.html": [ - "629494f6157ea303b37d09431bd1a122be8638bd", - "manual" - ], - "core-aam/region_without_an_accessible_name_new-manual.html": [ - "6b7161ebcb83c684b5b1f4fc6e01ade384eb5e2a", - "manual" - ], - "core-aam/row_inside_treegrid-manual.html": [ - "d6df3d3034ec2825ffd0bb1dad9e8da28d7c84ea", - "manual" - ], - "core-aam/row_not_inside_treegrid-manual.html": [ - "a6e823cb242c9501727068dcbcfa7c932da4f003", - "manual" - ], - "core-aam/rowgroup-manual.html": [ - "1792295bfbab4b89257c2d4ebe81ac3321a39ccd", - "manual" - ], - "core-aam/rowheader-manual.html": [ - "598476f9904e3aa6b642d731208c5c1e3b59ef91", - "manual" - ], - "core-aam/scrollbar-manual.html": [ - "976abf3cfdb51ed0744686e4c79336a0d855daaf", - "manual" - ], - "core-aam/search_new-manual.html": [ - "79677f75005dc785a7e87d90787b1c8c257d72e9", - "manual" - ], - "core-aam/searchbox_new-manual.html": [ - "cae60640123d4a2995a73730af7f8e12df598857", - "manual" - ], - "core-aam/separator_focusable_new-manual.html": [ - "a166e125bb64943e629693400abcda772cdcc40e", - "manual" - ], - "core-aam/separator_non-focusable-manual.html": [ - "eecb9fb266ed497ce745e49cb9ab02108bf93490", - "manual" - ], - "core-aam/slider-manual.html": [ - "7b3d0f4c4b7f1ce841d6c5e94e6cc3f12a26e34e", - "manual" - ], - "core-aam/spinbutton-manual.html": [ - "53786d793c51ad7482e0c374700c166ec3cd83da", - "manual" - ], - "core-aam/status-manual.html": [ - "b852a9cbb8032ac3af2004943fe8f9c87819b5d0", - "manual" - ], - "core-aam/switch_new-manual.html": [ - "28aeebd78b9bfdd61b5a03abe9f0d3005304f98d", - "manual" - ], - "core-aam/tab-manual.html": [ - "1743d0df97c5a6cde3cd5bfd2fe1dc44fdcec4a7", - "manual" - ], - "core-aam/table_new-manual.html": [ - "4befff0c1184d3e4b4c89e40cb72680b2615183d", - "manual" - ], - "core-aam/tablist-manual.html": [ - "5c956d06e956fa4cd07fbb933fcbc82103739dcc", - "manual" - ], - "core-aam/tabpanel-manual.html": [ - "08e8a711f80ebd09331154bc2e30683330e311f6", - "manual" - ], - "core-aam/term_new-manual.html": [ - "422a60e4f6a9cd96e42aa5c4e248875f117b574e", - "manual" - ], - "core-aam/textbox_when_aria-multiline_is_false-manual.html": [ - "f3f6c60b2029f22a09c9c476ae43f1243867759b", - "manual" - ], - "core-aam/textbox_when_aria-multiline_is_true-manual.html": [ - "5247a2001f7fc3b9c86e4190dead1fcfab4f96a2", - "manual" - ], - "core-aam/timer-manual.html": [ - "6be2a98ba2efa611e92bf3cfa94fb9432b5c8cd6", - "manual" - ], - "core-aam/toolbar-manual.html": [ - "0939e5fafa214ac133835d307f5b6e63f0cfba86", - "manual" - ], - "core-aam/tooltip-manual.html": [ - "e8710e8624cf36263e1444ada59cec2d8ef2816d", - "manual" - ], - "core-aam/tree-manual.html": [ - "116c2469589beed721b6a5d17d6f89fe933b1d20", - "manual" - ], - "core-aam/treegrid-manual.html": [ - "41ab52c5e0d75199de205e81a5f0d1fbbbffe7b9", - "manual" - ], - "core-aam/treeitem-manual.html": [ - "043e7914d378655e1d107881641b2434acc7465e", - "manual" - ], "cors/304.htm": [ "644c902be2861bed6dfa48ed12a12b08c6d9a2f5", "testharness" @@ -441582,22 +438814,22 @@ "67ecb845c4bcdacc8185b0f78d36856f9a408342", "testharness" ], - "css-font-loading/fontfacesetloadevent-constructor.html": [ - "ad355c3d5220c1b938182241a8e8abe030ace699", - "testharness" - ], - "css-fonts/font-display/font-display-ref.html": [ + "css-font-display/font-display-ref.html": [ "26fcc2758c649ce922397cd1c4aa862bdbf1e6a0", "support" ], - "css-fonts/font-display/font-display.html": [ + "css-font-display/font-display.html": [ "d83914326318602ce0eef5f248254a391b338df0", "reftest" ], - "css-fonts/font-display/resources/slow-ahem-loading.py": [ - "450ae01cb9fbd2c2cc436f1a8ace5386eb13442c", + "css-font-display/resources/slow-ahem-loading.py": [ + "aac16c1e618841ebdd28463adf5688ca837b9d57", "support" ], + "css-font-loading/fontfacesetloadevent-constructor.html": [ + "ad355c3d5220c1b938182241a8e8abe030ace699", + "testharness" + ], "css-fonts/matching/OWNERS": [ "2f711301297bd297b6bf5ccde958cd7a59c9e678", "support" @@ -441683,7 +438915,7 @@ "support" ], "css-paint-api/background-image-alpha.html": [ - "84acc5f998812497d344067d7095c7561dda13ee", + "2476286f8be52ae4f8ba22dd939b961d8e7ca379", "reftest" ], "css-paint-api/background-image-multiple-ref.html": [ @@ -441835,7 +439067,7 @@ "support" ], "css-paint-api/paint-arguments.html": [ - "7acf977d7e09bb85ada1b0df7fd9e4ea3a11ddfe", + "7e70944e4d1dd456cc91eb443f09bb2e28b812f4", "reftest" ], "css-paint-api/paint-function-arguments-ref.html": [ @@ -441843,7 +439075,7 @@ "support" ], "css-paint-api/paint-function-arguments.html": [ - "cc19f4bc39c7a2cc1d9ed35a6a5a50d3935830af", + "e4083cf39fca7ce4783d36e3235d4cfecf7d2db9", "reftest" ], "css-paint-api/paint2d-composite-ref.html": [ @@ -441979,11 +439211,11 @@ "reftest" ], "css-paint-api/parse-input-arguments-016.html": [ - "1c14dbe6c6bc0f218724731112c4c45888ede8b5", + "e06d4a98a350f1cd2ba3bacf132f1ada83f750c1", "reftest" ], "css-paint-api/parse-input-arguments-017.html": [ - "cba3754c5044665b2648fec05e25d7b6028c185f", + "6a16052f0435cc615447b548c598a6da5ce7d49b", "reftest" ], "css-paint-api/parse-input-arguments-018-ref.html": [ @@ -441994,22 +439226,6 @@ "b606bfff93300f114ea4efab85e489727e9821c7", "reftest" ], - "css-paint-api/parse-input-arguments-019.html": [ - "db11565957c3da1ca7a51b9ab36cd4a823386a55", - "reftest" - ], - "css-paint-api/parse-input-arguments-020.html": [ - "acbff610abd29a01574add30679b43d7a735c9bd", - "reftest" - ], - "css-paint-api/parse-input-arguments-021.html": [ - "6f567a29ed4ec26ad8c97277469783a614a5811b", - "reftest" - ], - "css-paint-api/parse-input-arguments-022.html": [ - "9f0efcee3e1412faa19fe50f475623fd5cf2852b", - "reftest" - ], "css-paint-api/parse-input-arguments-ref.html": [ "6133bd65ef569456f58f1e501d81e088256bdc0a", "support" @@ -478551,19 +475767,19 @@ "reftest" ], "css/CSS2/selectors/attribute-value-selector-001-ref.xht": [ - "6eb42b758e00b2d9bb41450530a710ccb1d8ae81", + "cc5ab97ad0b2bd2c9dc422c580bfd23bf731c304", "support" ], "css/CSS2/selectors/attribute-value-selector-001.xht": [ - "3c9b82d12fc6e93c50bd196b47ba8f4521dc2023", + "fa6e3b8b4a1f0590f5849d3486416d8b8fe1e3c0", "reftest" ], "css/CSS2/selectors/attribute-value-selector-002.xht": [ - "43cb55e259afd32bac61a315594651297b47e515", + "72dfda92fefb318f1729683957841664929ec359", "reftest" ], "css/CSS2/selectors/attribute-value-selector-003.xht": [ - "07904c2ee48717ace5cc920e0c508a87d2fd2b76", + "b52a459c432c60c7699161b21f3c1b747253064b", "reftest" ], "css/CSS2/selectors/attribute-value-selector-004.xht": [ @@ -483815,7 +481031,7 @@ "support" ], "css/CSS2/syntax/core-syntax-001.xht": [ - "c13c7398c669f4e4bdf781a75b5898803a06d58e", + "0d00dda2dbfd4fec65b86f8f3db0fd2c0ef7124f", "reftest" ], "css/CSS2/syntax/core-syntax-002-ref.xht": [ @@ -483823,15 +481039,15 @@ "support" ], "css/CSS2/syntax/core-syntax-002.xht": [ - "5112a461a9da6fd374ee75367b1241001a77fce3", + "baad1eef8de7d56df13bb8c77aa2d5b22060a80d", "reftest" ], "css/CSS2/syntax/core-syntax-003.xht": [ - "4e75ddf4bdda2aa673a5d988b2ba683e129afa19", + "a103e81effdbe66e4ab58133b4cc3fc8e48c8ebf", "reftest" ], "css/CSS2/syntax/core-syntax-004.xht": [ - "22b5b2e876cc4811921382bebd73b77be5e94ed2", + "5272eb4abedacec7754f9b2a9cb9f399fabc9258", "reftest" ], "css/CSS2/syntax/core-syntax-006-ref.xht": [ @@ -483839,7 +481055,7 @@ "support" ], "css/CSS2/syntax/core-syntax-006.xht": [ - "7a5e151afe0f313bf230a476e3d58a5a80e16cff", + "2bd96a86b802c1fb340592c72f083f258ed9e8ee", "reftest" ], "css/CSS2/syntax/core-syntax-007-ref.xht": [ @@ -483847,15 +481063,15 @@ "support" ], "css/CSS2/syntax/core-syntax-007.xht": [ - "db758c4019bdd277d89faf4ac1f39c06b9af4bc2", + "9906220e67a0b04623d8674f45fa2dd356da9f2f", "reftest" ], "css/CSS2/syntax/core-syntax-008.xht": [ - "a82132a4ce45d624bfb1ce4bcfef5b4bbb2d7932", + "539858614f1760b47bf8c210d9143ed64d3e89e8", "reftest" ], "css/CSS2/syntax/core-syntax-009.xht": [ - "8ec94eb1916558a7e8bfa9dd7b5a6675dd85b74a", + "0d14614584b32ad61c85a5240dcd72e9c4d936c5", "reftest" ], "css/CSS2/syntax/counters-001-ref.xht": [ @@ -516082,216 +513298,72 @@ "6e0f7a2262ec3476d8cf32ea562fe0f67ad5a7f1", "reftest" ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-001.html": [ - "19ae01ab31a15efc601d2857d3ca1dd879cb4e66", - "testharness" - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-002.html": [ - "abb8f221910dc58b87ff1d3f5b9f346994688a8d", - "testharness" - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-003.html": [ - "1dee7406f817681eaec5c1b5607b9762bc546329", - "testharness" - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-004.html": [ - "03da21bdcbb4fdb53f93c372da2af4a175fc0bc9", - "testharness" - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-005.html": [ - "c4e793351e05b74a9d859286407f30f019e581ee", - "testharness" - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-006.html": [ - "ab2604e1dd0396402ce6ab0acea3a340d107ad08", - "testharness" - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-007.html": [ - "17b0c72f106d9103af25c654e913ad00c2a5ee19", - "testharness" - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-008.html": [ - "32b50873af5b434817de9ca3fb5ea3b79808bdbc", - "testharness" - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-009.html": [ - "29551eeae983adc5cdd9b518b64a1d0c9560f062", - "testharness" - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-010.html": [ - "396afc15a311bb0a636ba2570b57366a52fbc770", - "testharness" - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-011.html": [ - "49109ff240399f0f1f60308850f805779dfc4b21", - "testharness" - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-012.html": [ - "45a9279c62d4052a150a6da13ae9c177a38f01a2", - "testharness" - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-013.html": [ - "29d4695a9ad8eb5eebcdf15b3693a714bc412779", - "testharness" - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-014.html": [ - "66d7b70d305869abb453caf2f0e51a274bd1a537", - "testharness" - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-015.html": [ - "874f6b55e6b204d6cfc41c73a2c00a5f4229d298", - "testharness" - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-016.html": [ - "51b59909bd41adefa471e9b8bf9ff75e9ed92259", - "testharness" - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-017.html": [ - "6423406f9bfaf43ac97fd4547a784c2bb8d19bc0", - "testharness" - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-018.html": [ - "123575acf3c090c6479e5e4fa064c75fcea56bda", - "testharness" - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-019.html": [ - "f611e34104ae873f1124032aa22621dfcf4fa128", - "testharness" - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-020.html": [ - "c0a3bf24655a77c05dce301b0173f18d0fa42234", - "testharness" - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-021.html": [ - "e39bd0c869b5c69f99ddb0e43ecd516c23e22051", - "testharness" - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-022.html": [ - "436855cb48c5de8f913f209ba8172644c0e97226", - "testharness" - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-023.html": [ - "07ea8b43529cc3abe597b5cbaf71b577c0e08a81", - "testharness" - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-024.html": [ - "4ef7fd0b4687fe9f08513cccff2707bb05d92a78", - "testharness" - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-025.html": [ - "4ecabe7266535153ce6e38e1bee6e4eba28c5260", - "testharness" - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-026.html": [ - "dc702a1d181ef4efcf4d5161ff1b10bbb8e08337", - "testharness" - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-027.html": [ - "a5646db94e62b9455c9ed44e9f1a86f1cda74153", - "testharness" - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-028.html": [ - "9940f6e83d28a45ad87a50b24afe5eca1c3ff596", - "testharness" - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-029.html": [ - "ed6197207c84d52614f2e4bda31aa0794ac244ce", - "testharness" - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-030.html": [ - "df920f26e14d9adb3e987771b74f3ca21d001b9d", - "testharness" - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-031.html": [ - "24cdde781a98046593d3f0a57906b756326c4d83", - "testharness" - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-032.html": [ - "489c89b0d82b3ad92e342db2b680b152e4bab404", - "testharness" - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-033.html": [ - "4905906bd110e7b9ef3ad1ca4e0b01417b0998c8", - "testharness" - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-034.html": [ - "c9ef480494c982efd2cc2b6801eb0c308de0a608", - "testharness" - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-035.html": [ - "f93f4f2a62aa2073676466dcfc5975556dd04739", - "testharness" - ], - "css/css-grid-1/alignment/grid-alignment-implies-size-change-036.html": [ - "748d617dac4b7c97592967c0df1ee82f6a43cc0a", - "testharness" - ], "css/css-grid-1/alignment/grid-content-distribution-001.html": [ - "5622a264eb2dbd6cf621ac97aa4a8ae5db82c6b3", + "71d678f48849879663d199ec57a5f19fb5e026b3", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-002.html": [ - "2c62d06a72062571ede87351e2538e386807e0b9", + "a20d044edc50199306349700b03522225841fc72", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-003.html": [ - "c07303851028f6421158fe307889a7a53d7f31e0", + "4ef0c09a8c51e4fd2979887fe7420a62eb783027", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-004.html": [ - "f8692678b09611f1bcb5f1a1446f4eaeeadb64ac", + "f1f2f65fad70478230f2456cbdf68ead9c6de7f6", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-005.html": [ - "7d0900472ae1237a92d1070ac434e7f56f537a52", + "cf1c4546b569bea0bea062736ccea0e9e4f934ac", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-006.html": [ - "ca8fea1a3e366d3dda1f939d6e119949a3774c48", + "f0f17f458563b57a39ff7b684996edfede82e510", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-007.html": [ - "01482b8fae411849e91dae8390d9bfe6e6ab9844", + "08db6086c6a30888fee6881d6646d42c509d218b", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-008.html": [ - "77bb5394d7628566d07047220a08aba58970cf6b", + "66d112eae6876a44c2246312719c2e6a3b93a5eb", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-009.html": [ - "b5ded29b361ee406736a514d00743915ee7588c5", + "a27003f50acf7ff550d99b14a4a4435f80e791c0", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-010.html": [ - "c0a3834676fa8bb146441bb7bc969560c667d1e0", + "1f59c3d1af79df13007d0ba29132917a6e075e54", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-011.html": [ - "f9be3a544d65dd63f8a718b0884fd87bcebc34a0", + "edaf37eff5ed1db1709729e669aee460457de3ec", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-012.html": [ - "ee86f5d97a3db4b22f3ea5e9cec5d1f603401d36", + "6ba269671145f1f8d5a32f6a1efe5927a695f693", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-013.html": [ - "ef01ff8ea9d9357382c59fca4832901e091b58b6", + "a2036358ed56a79580d675cccd820e40b82bb3d0", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-014.html": [ - "db95b9693a1e8986d81fb0fb42b045226ae87de2", + "9e20812f1655d4bbbde261694deee0c1d09ff214", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-015.html": [ - "818bb47cab93792162cd3effbb1ab4bbf4cafeb4", + "d49d3b8b7a92a7cae108d7baa9d40b95699149aa", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-016.html": [ - "c5a38881fd5302f7f87fc0a08048455c2f9c6d93", + "9ac8ed870190e63aa9e248cf41c81c41b4816442", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-017.html": [ - "4ad7a14d8e640963a7b19401e5805d20379da1ad", + "7295162365f4929cf68ebad634be1d3bd6f7227a", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-018.html": [ @@ -516299,367 +513371,367 @@ "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-019.html": [ - "4a72208bc09151b5b6b471582c7211d1c6e1abf9", + "5e97218c93c95bd57edd96219a520a894184b2b6", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-020.html": [ - "cb61983358d8df21f445c52e2b4672f036b92930", + "228cd6b2312f64f7ae7bb1421fb6b8c5e6bb4c22", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-021.html": [ - "9be4696e87426cb7d7bbfbd623012427e1211e15", + "a626f563a51ef70a0a6221dd397c4ea9dce74f2c", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-022.html": [ - "bc821e4fdc223b8f73c640f7dedc74c459cc6124", + "0699d18ff695b8920588304e9685f843fa006b4f", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-023.html": [ - "1cf05242c1918dfd94c8e3f429296696f1fbf2a5", + "788e76b9f562e1a2af800b8939d8cd6dccdaf991", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-024.html": [ - "ed4439dcc8fca88286db1b6fbbfb9130f37bf17d", + "d0f957e475c3c0934a3d84e64ea6552e47cfac7a", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-025.html": [ - "ada440cf035137bd6c5377d543de603802a10680", + "136e1a1999f3696a5742cb53a0d30e6411cfa6f4", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-001.html": [ - "a4fb6eded9c20195017f73aacf53d08fff0fe990", + "0681924a44ddc7c141a8c20203289c0862e7ec7c", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-002.html": [ - "a87a2c260aaa872ec9ea5699a0dcfa106e45bb2b", + "e7771a519139a375f641125ea2a0a90102d228c7", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-003.html": [ - "1ae67e7963212bf6afa678b929873d86cec025e1", + "7ff3085ec34b3fe9664ef0a9e02ebe862c42c22f", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-004.html": [ - "bc0978ff89ec6af691f88aa88e2b805f17012368", + "c474e6c83ca32385734a035fd36ef41e2e666f24", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-005.html": [ - "2b5a655c5a934b98c0d7fcb8553eb8efa35cb5af", + "c5a5d80b273add95223306d99471d3a030fb8be6", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-006.html": [ - "712436aec944f0e7163da66a62d8a629a1c7ce80", + "55d9f476640c87eb1663114599ddb6eafd91b7f0", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-007.html": [ - "fa284f5404d3e24cc395a37380291cf58440e447", + "d81f70fda4665e94cd32483127e069dec9b760cc", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-008.html": [ - "24253384b12c5c20ef44dd14d882ab35a7a411f2", + "d4f0fde36ff5b437ebda34698d199cce359f00fa", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-009.html": [ - "a89a85650c01a24a088b5b704805389ac487afc7", + "5a50c58f6b9ba8b4b51b020b93ee61d23bfb500f", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-010.html": [ - "a676ad7b1ad0dc6ad205d767a4e366d43b2d1600", + "fa5cc94c766ac0d455326bb117ae530df0ce6d4d", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-011.html": [ - "c53c339b5ac8ea5f9b021cca8eca56bbffa25ead", + "3f02b75738ac80f1875a3adc0ce07052841c6be4", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-012.html": [ - "d8746b969ea563cc8e683d00824a239cb9f45953", + "97dac1879d441e29c97743e9e63bb44f6a413f67", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-013.html": [ - "94aef014e0d0bb420a8d7421ebabb2a9699a14b4", + "99832804da447b3cc35db8bb60492781a03ffb62", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-014.html": [ - "1eec29a79380f6fb9e55f5e65f61f9fb906da192", + "2cc1f4a715b939a882d7394cb0d49d5ba4b127c7", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-015.html": [ - "c792926de9e4a1923b5f67c44095fc5609f03f79", + "8b1947a434ec968a5bd0170334e7e2c907e69f28", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-016.html": [ - "3cda565159049d2b6d715166d9835041cb4918df", + "998612427cda18f277c5edf484892fd3b313bffc", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-017.html": [ - "1d387c5780df35128eabaec4d431cb92c7f96d0f", + "080c87419291575847c9e94eadf5096f4a438bb3", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-018.html": [ - "dc470e6ad001ba3c32a264941a5a245a8241a91f", + "aec32266b3e66fb38f45888140bf773d537728c9", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-019.html": [ - "425356e77beca062326b6902b0dc0322bf081e72", + "6891c290c82adce07bb2409732789b627f07ded0", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-020.html": [ - "8bd9b585fe347a4be4ef2df571164ccd5a2163b5", + "0ea2837b789ce2289aa2ec1c514006899d13def7", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-021.html": [ - "f8127fd46686ae877b0ca01b26d0278a49fa898e", + "0e2a972619d21b4de097ddca6f39f2cae486cc5c", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-022.html": [ - "e8094181ef73d466757fef11a439efa1af839a06", + "fb73bdbdff8fda79519e4fe387127ca539506357", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-023.html": [ - "c62f2d4b7bc3e85cc51b46b97e7281a7030e39a6", + "c8b2681075b476b15221bcb1fe1ea6a4e0c40409", "reftest" ], "css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-024.html": [ - "046b9b3ebcc52c5ef1a5448ebef9ede1f0ed39f7", + "6446e5dede7383a43ac46b8083b6012b312a8124", "reftest" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-001.html": [ - "faa0a4a8e6660d8bb12cec2ccbe86e8e23bcc936", + "4ebbf6afe7452b5a61c9a475b7beb3958dd39ee5", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-002.html": [ - "735b425c34d147a32b97e60606a5d088389fecfc", + "a1b58d6358acae0e0a4d48ec2e896b5a86b296bf", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-003.html": [ - "7f5a41bc81b97bb4b62e55b69fa1ecfe241edaed", + "3d0b16a4ad5d537fa2728e630bf81d8a55303cd4", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-004.html": [ - "0e12bf8b99c417c9176100f7b945b9a83d53f69c", + "71f1966a0c3f899dd3b2601d225ec5683514e296", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-005.html": [ - "d28606de466e787ac8e4c1f742806c2bbf570a88", + "c95fbde16d02ff01eab5e39a1f9b66ab5d0ca88c", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-006.html": [ - "2ea3e018bf73940231af89dc72c2352fe2985732", + "3bf926a4638e8a7a36d255e3a54c2b33e978c850", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-007.html": [ - "d2ff7e0efbb1240bfa4b21b0d2e7eb0891950348", + "00a3a65a3028898decd5b33dc749d1d4b61c05f5", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-008.html": [ - "0ee2f7d1f4bed6383a762f86efa6dc2a8a27bf4b", + "f7058e3180965b0b85b83d66cc3623e4d6ed081c", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-009.html": [ - "d64052253097bade696ff9c8bee42bfa8cca9604", + "c56e42e2c7726204f112bc124adf6bf4e75e1c83", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-010.html": [ - "9523288742cb15e2451b41b85596ff868b6b4648", + "cbec5d103a8c29e5af97a54fe856c250ced3ee69", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-011.html": [ - "9929a38f502a2e82ae93b6a39910eacb04ee6e58", + "b2556efc42d96830190ef6bbe0fdeef7c939cd76", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-012.html": [ - "9a19df31cfded6c4270da40070c3e8390c8366b2", + "7700cff07f4930e4453c7dabef98ff41dd85f04b", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-013.html": [ - "a8cb352297f011b42b3740fd73f2f78f0bdca29d", + "64c4f341755b5bef5772cc164427033fbf3d44f3", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-014.html": [ - "11e3cb854d0c9fb7535a7408a56e9f372acf7b74", + "e7f19c6990b60e8d527089d600d0b5d585f37d42", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-015.html": [ - "7b145fe80d78b51f42f1a257e64b77f256324029", + "516f95b9ab855414499423cc0b6354b37735c428", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-016.html": [ - "3d7b17fa76b3f21ccd882072158f25c723698b24", + "4e6a1caea23ac6a54e2e6f5fd9585d574dd615aa", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-001.html": [ - "613da8787ea601c01cd79348e68d94cbdf4f6c12", + "ba37dd2cb887de2c6a577e7ad538f588f6c2a6b5", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-002.html": [ - "bfbfeef9485cd0a842729d72ae6a7d2978fed0ee", + "2a88930bce761a86b84bc39cbbb9c6c4fb1ade6f", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-003.html": [ - "47f8fa7e366a0928a1ef6ee30d3e97898d10b882", + "1a598d7e5c0a63aedb6fa83a81084707a97082bd", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-004.html": [ - "0277d86138e1e5aecea0fcde768a48a8b841046c", + "aba771e25d3801ea42786fd006e5e444605fed9e", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-005.html": [ - "b82ead09258f8746f6c7d4d9fd363b2bdfe2fe42", + "45aee24069e89a238c99b61ee905ab516fc1fe4e", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-006.html": [ - "290d852faea189b602457356f6abf8df51f4e306", + "481ed2e3a960f5e3da1dde22245d1da6f33cd344", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-007.html": [ - "f8418fe79ca641e453791ca1c202cdad50220b2e", + "62b193d96908b1950ad8d7ff994e7f0718b3a9f1", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-008.html": [ - "10e77671b9a37de05f4898e035aa29fde999f64c", + "55f131bf1a0566068b0882ec90cd37e257b9b28a", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-009.html": [ - "9f7f821d8fd60bf5ab47f5341a3a103afe94d3a8", + "d2ae2b5839c06f483740ee96fbd718110515d095", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-010.html": [ - "f5327de3394428415fed804e4e79efc0fe963817", + "90cbedb0e00ad7da4b3d9627804d668e160935eb", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-011.html": [ - "a7aac5da4c4e085b14c77a0088a4d608c637f9bc", + "53f3a18185535c7310df5ba9132e63cad8daa651", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-012.html": [ - "b35ad113f09d62cb40cf4a16ff6faca82d73de35", + "170a800b282312f4f4e35845b4d6009b3e491ca4", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-013.html": [ - "5e97e65254d39476e883cb847d421a54496c71a8", + "ec7e80425ea1e5df487f43d62d1bbf8e5774d294", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-014.html": [ - "cf7374a5f900e4d6a675dc32a9181cfd1653075d", + "66d1929467cee9b75c05c30f1be0b29969646b1d", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-015.html": [ - "1ebbfc6564b9c8350fa618bea97ecab3fb44eade", + "d22228744c0dfab1d541361812317680c8e6db34", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-lr-016.html": [ - "74711c54c4c2148895e75132d9cebc225a9128a2", + "6a5b4f1e3f8713ec386971b90c152844a1963153", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-001.html": [ - "a4d4dec0f3fb7f490c2e046d535d8f86a89ec519", + "f3839a8b379099186f499886a2687d879941e553", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-002.html": [ - "2ab21074fa42c487f294866c39859e06364715de", + "f2e48ba123603f1617302a842d13b41f8a134791", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-003.html": [ - "695ee5fa198c111a3f8dcee1520938878b003410", + "9cf06a6284b8ea46a451b750b634800edf0a263e", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-004.html": [ - "6625c4aa82c02c86075a49d0485160b24f5ed5b6", + "ee801dc782b31539787b108e2249163648fb9476", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-005.html": [ - "5c400ff43392287f0203102c100ae1d286286e94", + "595f81d3ca4465d53968b1a5e7d2c5ef9364e1d7", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-006.html": [ - "5c4f715f864ee0718a28cd56aef5bb63549042da", + "d824792aa48927230d5d79413d6b31ff9e6a9044", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-007.html": [ - "82b67b0f255a36275c9e2179f7c0a6c194b80881", + "7875a1c3f5bd7ed5f9bc6d57ee55a74eae70d08c", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-008.html": [ - "df9a693d3d6a7ecfb8767b1e53af0f71b54e4cac", + "a91f9d4cd8375f9a3843df68c1699be43464a519", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-009.html": [ - "9223ee50b9c22c737e42f113e67418c3b9f42312", + "b34bf92f1eb907ed1cae789ca5d0526180746a8d", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-010.html": [ - "065d965da5145e629517941de214c53a990e7d04", + "923c6fbd83ef1df81c92f3b818d5ed6bc8545eb8", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-011.html": [ - "819fb3899679610911df95110f051973ef4fcbb6", + "30701ba96fd590d43fa4d69e2393493812950a9e", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-012.html": [ - "52459738d7455d7ed97045aea124b2160d37643a", + "eb4d83cc9c0053fd305994ce7eeb7015a75a85d3", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-013.html": [ - "09be06f107f5ea97fc6db45b8bca150e10dc7296", + "3d1e1bd37812a4707305255afa4ff94433995771", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-014.html": [ - "0270a89bde2e54d3108d8ab8b8dbb3f64ae855af", + "746b1f48171561ad5aacc7ce282592fefbb2ab3e", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-015.html": [ - "f49ae99abd185af7bc9937c16bb7f4bb2044bdc6", + "a913de9564b2e44fec43b66177cc6b94cb174a08", "testharness" ], "css/css-grid-1/alignment/grid-self-alignment-stretch-vertical-rl-016.html": [ - "86d478dee444129ccd10f76aed6d80c75251ff13", + "749d78928a228bb67878b3c088d36bcfd010aa08", "testharness" ], "css/css-grid-1/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-001.html": [ - "e7250b61f6dc882945f73412ec73c0de7f139aad", + "afb6c282b7e952878c52c198579541ddca6afdb6", "reftest" ], "css/css-grid-1/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-002.html": [ - "083e1bed1a996e0a333456163df2610d94acd682", + "67a739c055f22f9de478d7d62a56bb9e65415cfb", "reftest" ], "css/css-grid-1/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-003.html": [ - "4ce945c003fe0ea32b6d92ace158f3975ec557bd", + "3ccf5136030949e11a305349d317af193fe4f0ff", "reftest" ], "css/css-grid-1/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-004.html": [ - "5d67cb17c0af2c67282c454b5dcc4b0eaf346220", + "30a0be3371587b0871bbc480aa7e7098c4bc51e6", "reftest" ], "css/css-grid-1/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-005.html": [ - "d12ea65c89b6df11bdc0e9cbfd92b72084fe9709", + "b4782cea1a8ec242087271555d55bae0f574fa91", "reftest" ], "css/css-grid-1/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-006.html": [ - "04c3d0b31ecdac7281680f551c3d2368985f7acd", + "c6a597f7e720491cd09ba3007cc50234639cdc33", "reftest" ], "css/css-grid-1/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-007.html": [ - "4163237401ba3f1e8e7bb8f4cd85c130aad85079", + "2593b5f169c3fd0778cda370821572057ae25f0d", "reftest" ], "css/css-grid-1/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-008.html": [ - "9322237dea7e159bdab91cf9e7964e81a19a6240", + "0eb8c0b70ff376de7608cb843838ea35556bef08", "reftest" ], "css/css-grid-1/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-009.html": [ - "7de044c48d604dda57553267f6247fa2926a2316", + "bc146287841851768ff6040e5fbc1d829677413e", "reftest" ], "css/css-grid-1/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-010.html": [ - "fc5cfbb40c6610126e402487cda944934c266a1b", + "2fe23a2f58c96b29b8741e35ca77b856431c5d19", "reftest" ], "css/css-grid-1/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-011.html": [ - "e7bd2ef62d02b104e0df649945ca59a5fca930bf", + "83b810467e538bb0b8982224e2008aef0f48e84a", "reftest" ], "css/css-grid-1/alignment/self-baseline/grid-self-baseline-changes-grid-area-size-012.html": [ - "dc9d15b18538afb38790de51e31095ce9f93e0a9", + "1b2f571a79fe01b247ade6d6ea8514c7b46e2fd6", "reftest" ], "css/css-grid-1/grid-definition/fr-unit-with-percentage.html": [ @@ -516706,10 +513778,6 @@ "e30c5d9b04eaf45a511b8df22a2c9719a03ecd92", "reftest" ], - "css/css-grid-1/grid-definition/grid-shorthand-001.html": [ - "31ef1f583e9d09e4d719a0ca5cb5531e8ce08b36", - "testharness" - ], "css/css-grid-1/grid-definition/grid-support-flexible-lengths-001.html": [ "f03efa4af7f9eb9decd60bfe44c7a3166947ba32", "testharness" @@ -516911,19 +513979,19 @@ "reftest" ], "css/css-grid-1/grid-items/grid-minimum-size-grid-items-006.html": [ - "df2f90f3fb83a670f78b6b63c096ef78fd14a6c2", + "a18e54cb5ba9b0f91c443e073084784778ebfa7b", "reftest" ], "css/css-grid-1/grid-items/grid-minimum-size-grid-items-007.html": [ - "1d2a78a5862a71a9b360bf568bcfb53c7f868f17", + "bf657a093b431c6c0f17f4c207a7b32ba0822045", "reftest" ], "css/css-grid-1/grid-items/grid-minimum-size-grid-items-008.html": [ - "5dbaa3254fa6c4235fc6fb56a1635fc27060c3a8", + "fc9ce48c25c9d446e1b6186469216a551aa67afa", "reftest" ], "css/css-grid-1/grid-items/grid-minimum-size-grid-items-009.html": [ - "70210c9a1706894f4a6a63ffa92b3c979998d2a3", + "c843c219820996931e54f2ae404cbb03bfea2e59", "reftest" ], "css/css-grid-1/grid-items/grid-minimum-size-grid-items-010.html": [ @@ -516971,7 +514039,7 @@ "reftest" ], "css/css-grid-1/grid-items/grid-minimum-size-grid-items-021.html": [ - "205f2292e788eee87490530488e2f1575e809ade", + "de9477d81656c85b0d41044b1ffb44634c78eb0e", "testharness" ], "css/css-grid-1/grid-items/grid-order-property-auto-placement-001.html": [ @@ -517066,20 +514134,20 @@ "ff6fda3a436fa54df17a321e2458204fd963dfb2", "support" ], - "css/css-grid-1/grid-items/support/200x200-green.png": [ - "4e0148e2484a2bb979af76a5015aa25db5e2cc6d", + "css/css-grid-1/grid-items/support/100x50-green.png": [ + "cd621ca154bb5b1f92d8f593a15ec8eba8ce8e38", "support" ], - "css/css-grid-1/grid-items/support/25x50-green.png": [ - "0891f51a69b099a3d04ec15bcc81ef5da2766c06", + "css/css-grid-1/grid-items/support/200x200-green.png": [ + "4e0148e2484a2bb979af76a5015aa25db5e2cc6d", "support" ], "css/css-grid-1/grid-items/support/500x500-green.png": [ "8d02cbc578a3704611aeacf28a534f3983851060", "support" ], - "css/css-grid-1/grid-items/support/50x25-green.png": [ - "7082f20d7a960faa3a3a2db3f78586997ebc17dd", + "css/css-grid-1/grid-items/support/50x100-green.png": [ + "2995c59ce9aad40a9303380fc9dcc644e38bdc68", "support" ], "css/css-grid-1/grid-items/support/50x50-green.png": [ @@ -517298,10 +514366,6 @@ "a9d8444db24ab38518f07a965a8a537cc6add437", "support" ], - "css/css-grid-1/support/style-change.js": [ - "a92e1d3f5be007d10fdf432bb198f87b00bdc35a", - "support" - ], "css/css-grid-1/test-plan/index.html": [ "e633dc7584fbc7bfe99177aa5dd9fbd107a2d3f5", "support" @@ -517546,42 +514610,42 @@ "8542b83ed433bfdda8f8bf4f92c8d2e993f9c968", "visual" ], - "css/css-logical-1/OWNERS": [ + "css/css-logical-properties-1/OWNERS": [ "4dd9aea6bf0ddc75d703b1ca3867fedbc27095e8", "support" ], - "css/css-logical-1/cascading-001-ref.html": [ - "b95cd62ce3592f653aaa54de0dbc27e16618064b", - "support" - ], - "css/css-logical-1/cascading-001.html": [ - "a94344f196774b463dff39c022a48a0cc5585c88", - "reftest" - ], - "css/css-logical-1/logicalprops-block-size-vlr.html": [ + "css/css-logical-properties-1/logicalprops-block-size-vlr.html": [ "68a86c5b34cf3769e4cda12ef4d23ecdb523734f", "testharness" ], - "css/css-logical-1/logicalprops-block-size.html": [ + "css/css-logical-properties-1/logicalprops-block-size.html": [ "e9597ce04c2b8be8128f9b411e7990bc85d3842a", "testharness" ], - "css/css-logical-1/logicalprops-inline-size-vlr.html": [ + "css/css-logical-properties-1/logicalprops-inline-size-vlr.html": [ "a0438d0713820ac5ab82f0165af7711f71d91ae6", "testharness" ], - "css/css-logical-1/logicalprops-inline-size.html": [ + "css/css-logical-properties-1/logicalprops-inline-size.html": [ "fea8f8205053e933de3dc4490c918c3db69a4a05", "testharness" ], - "css/css-logical-1/logicalprops-quirklength.html": [ - "3024bbd54e4cbe1ee55e59684188587e2a56fda6", + "css/css-logical-properties-1/logicalprops-quirklength.html": [ + "c2b3d06c377e8abae3691abb60f8bd84433ed384", "testharness" ], - "css/css-logical-1/resources/style-check.js": [ + "css/css-logical-properties-1/resources/style-check.js": [ "f6260209571bdd53be52c698f072c121e3702dd1", "support" ], + "css/css-logical-props-1/cascading-001-ref.html": [ + "b95cd62ce3592f653aaa54de0dbc27e16618064b", + "support" + ], + "css/css-logical-props-1/cascading-001.html": [ + "a94344f196774b463dff39c022a48a0cc5585c88", + "reftest" + ], "css/css-masking-1/OWNERS": [ "388433ab37e52bf8982700fad3ffd34b8ecae122", "support" @@ -524046,14 +521110,6 @@ "eccf10a7909e2358ac6425140e87c323ed786296", "support" ], - "css/css-tables-3/fixed-layout-calc-width-001.html": [ - "0b8262ca3abd6104e86c305d738a2c70f6cb1f87", - "testharness" - ], - "css/css-tables-3/fixed-layout-excess-width-distribution-001.html": [ - "36b7b7893dba1f3ddc2edf46fee323d75e5af49d", - "testharness" - ], "css/css-tables-3/floats/floats-wrap-bfc-006b-ref.xht": [ "22f5ec058d34dc57c010bca8a301eaa8f7901880", "support" @@ -524074,10 +521130,6 @@ "abe7468e88cad3aef32c7e59fa4a33a7930ef53b", "support" ], - "css/css-tables-3/support/check-layout-th.js": [ - "a9d8444db24ab38518f07a965a8a537cc6add437", - "support" - ], "css/css-tables-3/visibility-collapse-col-001.html": [ "3e3661a3b8b8d6d42cf5aaa982f6a75902803767", "testharness" @@ -529770,70 +526822,6 @@ "3a8b93dbbca1507311781081e33425e06a499a37", "reftest" ], - "css/css-text-3/white-space/pre-wrap-001.html": [ - "f93cc40a8d455d13fe110c3d7cc0284514d5ad8c", - "reftest" - ], - "css/css-text-3/white-space/pre-wrap-002.html": [ - "64d2ec262a5fd3e2442d91081b9982f6959a5dd1", - "reftest" - ], - "css/css-text-3/white-space/pre-wrap-003.html": [ - "3aea664385b6a065a30c1fc5e59ff799e67eba28", - "reftest" - ], - "css/css-text-3/white-space/pre-wrap-004.html": [ - "039737abdebd796d54ac18473e7fa0fdb2260a6b", - "reftest" - ], - "css/css-text-3/white-space/pre-wrap-005.html": [ - "52c66158b35fbc23e206ca058dd202315a56785d", - "reftest" - ], - "css/css-text-3/white-space/pre-wrap-006.html": [ - "026913263a924c13e5ae44e2b682520c58228d1b", - "reftest" - ], - "css/css-text-3/white-space/pre-wrap-007.html": [ - "9da32f0784c236fb42eb191196eeb879560cb9ba", - "reftest" - ], - "css/css-text-3/white-space/pre-wrap-008.html": [ - "a8899baab31c158f1c58f376a65aba6996c29efe", - "reftest" - ], - "css/css-text-3/white-space/pre-wrap-009.html": [ - "8ae0f2dc17e299fb5e9356c0b51f5ef203ace797", - "reftest" - ], - "css/css-text-3/white-space/pre-wrap-010.html": [ - "af0595c7e23d3c011f513fa3573db153e4a522f4", - "reftest" - ], - "css/css-text-3/white-space/pre-wrap-011.html": [ - "357ff8ef998ec147ea3ac7a5ecfd461391ba5f87", - "reftest" - ], - "css/css-text-3/white-space/pre-wrap-012.html": [ - "07466d5c4186519718c265cf95415c19a4177d44", - "reftest" - ], - "css/css-text-3/white-space/pre-wrap-013.html": [ - "a76f6a4042f4bd0579d495a5e94812303dab888e", - "reftest" - ], - "css/css-text-3/white-space/pre-wrap-014.html": [ - "aaa1e079c44e86250c6f12841d4c7635db74ad76", - "reftest" - ], - "css/css-text-3/white-space/reference/pre-wrap-001-ref.html": [ - "bba318097b9c85f6c15dc7f69bfcdc39514278e8", - "support" - ], - "css/css-text-3/white-space/reference/textarea-pre-wrap-001-ref.html": [ - "0d9b285072f9db8f337b743a8040e3d69bc97a2f", - "support" - ], "css/css-text-3/white-space/reference/white-space-collapsing-discard-001-ref.xht": [ "a67bc4fe47ec809cea74476ccab6b0cebc1fdfb3", "support" @@ -529914,62 +526902,6 @@ "94f7655139fc8059856e3b92129b09a4a62509ec", "testharness" ], - "css/css-text-3/white-space/textarea-pre-wrap-001.html": [ - "e5aa5ae1cccf994eb821039ff9726ab41591dae2", - "reftest" - ], - "css/css-text-3/white-space/textarea-pre-wrap-002.html": [ - "242cdc5e31096f99fe05f816898e69f29669dacf", - "reftest" - ], - "css/css-text-3/white-space/textarea-pre-wrap-003.html": [ - "52eb65dfa1f0a2e415e6770908101eb75cb543e3", - "reftest" - ], - "css/css-text-3/white-space/textarea-pre-wrap-004.html": [ - "d47ff3de33fb1c73eeb734d0d75dcd082e9ebec0", - "reftest" - ], - "css/css-text-3/white-space/textarea-pre-wrap-005.html": [ - "f0aa2fc03ab62dd6099571636d6e882decd45b64", - "reftest" - ], - "css/css-text-3/white-space/textarea-pre-wrap-006.html": [ - "a11429b9e29eb1fb6780ae4778da5990b154a634", - "reftest" - ], - "css/css-text-3/white-space/textarea-pre-wrap-007.html": [ - "22b1d2bba518e4bb08225dcf908f083291e9e843", - "reftest" - ], - "css/css-text-3/white-space/textarea-pre-wrap-008.html": [ - "b044f1f9774eb64ec3a47a5f145fb0540994ccee", - "reftest" - ], - "css/css-text-3/white-space/textarea-pre-wrap-009.html": [ - "ab5bf5af5a528b388ff6968c6cfced9b3c1d12c7", - "reftest" - ], - "css/css-text-3/white-space/textarea-pre-wrap-010.html": [ - "87f7f79bfb3cfa7493c5c805d3cd889835689799", - "reftest" - ], - "css/css-text-3/white-space/textarea-pre-wrap-011.html": [ - "700bd41635bd14683d5efeead256ab70e00f3619", - "reftest" - ], - "css/css-text-3/white-space/textarea-pre-wrap-012.html": [ - "ac711d5740bfd7244442f957bd5df6ed9f8d1633", - "reftest" - ], - "css/css-text-3/white-space/textarea-pre-wrap-013.html": [ - "46a942378c02a6b856a7f29038683f4ada91f2b2", - "reftest" - ], - "css/css-text-3/white-space/textarea-pre-wrap-014.html": [ - "8e8b3768bac0b8bb8a5a93f8d2afecf4fad1e819", - "reftest" - ], "css/css-text-3/white-space/white-space-collapse-000.html": [ "311f61dd93bf7b39b07f14aacad5d4bd77639cb2", "testharness" @@ -535799,31 +532731,31 @@ "testharness" ], "css/css-transitions-1/events-001.html": [ - "30eb9732ba5c1d5325cb95a1d21e34f06251c613", + "abffac2d61bc91e8b3277b402f9b624bac35936b", "testharness" ], "css/css-transitions-1/events-002.html": [ - "5fb98d8366418a6d6c72e1885bf0ea0f428e42be", + "52374e677c313f03551994597d8b83dc0f8f1490", "testharness" ], "css/css-transitions-1/events-003.html": [ - "cb4147b4b9e43b3ec6fc70c7887621790e00c0ea", + "3e490116ffa0850bc849c2731dfa43c42ce78a17", "testharness" ], "css/css-transitions-1/events-004.html": [ - "ba0027ef26edfde941ab3c2f0072e10f0c6248a4", + "26295080416d83dcb6ccdc6d3158d2e84b29e32b", "testharness" ], "css/css-transitions-1/events-005.html": [ - "fb8c4dd32adcb9b264f2990ab4e962986561f5ed", + "d5a001057e76b24a9614a1e6eb0c79e6ecb86186", "testharness" ], "css/css-transitions-1/events-006.html": [ - "2e957a34c69ca94037f4b8af9c3e87fc94a63a46", + "0e3dd5bdfd7f0d4cb3324bf8315f2a1748df04c2", "testharness" ], "css/css-transitions-1/events-007.html": [ - "f92ae90b2f7a88f32f141b3136ff833fb7ba6a2b", + "3848e7aa9b6023144fd2dd8bde568a664a564d02", "testharness" ], "css/css-transitions-1/hidden-container-001.html": [ @@ -535931,7 +532863,7 @@ "support" ], "css/css-transitions-1/support/helper.js": [ - "73bb1ba1862facb0d8a3e3dcd78611a79f458025", + "b286f9cb99db632a2e95707119e7cb6e0a0f3aab", "support" ], "css/css-transitions-1/support/import-green.css": [ @@ -536543,7 +533475,7 @@ "testharness" ], "css/css-ui-3/caret-color-020.html": [ - "46c6575138d57250aa385e2ee5fa4a8453da644e", + "ccb5ab72ef95d82eba7504f26170a88a98178edd", "testharness" ], "css/css-ui-3/caret-color-021.html": [ @@ -538115,7 +535047,7 @@ "reftest" ], "css/css-ui-3/text-overflow-006.html": [ - "f1cf60e25fd70476597cd86cd81ebeea6a5586a3", + "f52b6fb409dac90a71fa71c201d0b8c08d805fbd", "reftest" ], "css/css-ui-3/text-overflow-007.html": [ @@ -538182,10 +535114,6 @@ "095f78700529b34397887722b57b56dd7dd97861", "reftest" ], - "css/css-ui-3/text-overflow-023.html": [ - "4fd38a517e41851216d12db8c6b732d96f76e325", - "testharness" - ], "css/css-ui-3/text-overflow-ref.html": [ "db55b0b95a7406e9c4f00081b3e2cbe6b07363f7", "support" @@ -538634,10 +535562,6 @@ "857b8aadc90a4073e122c667a554669a93886785", "support" ], - "css/css-values-3/absolute-length-units-001.html": [ - "d21dfd079ff6ac225e5f36c25e34bd994a713fa2", - "testharness" - ], "css/css-values-3/absolute_length_units.html": [ "64ea61f181e9e6c1c801ff7e10c75122beab45c2", "visual" @@ -538763,11 +535687,11 @@ "support" ], "css/css-values-3/reference/vh_not_refreshing_on_chrome-ref.html": [ - "affece13e73e451198a986146abde869b90c64cb", + "214ac04a1caed95fff6854c18a7fae9ffdca1b76", "support" ], "css/css-values-3/reference/vh_not_refreshing_on_chrome_iframe-ref.html": [ - "81474dbdd159353cc30131e37d54556e422e3f5a", + "ad8d37ad73e28b91af8b469eac6eab2bc0bdb9ef", "support" ], "css/css-values-3/support/1x1-green.png": [ @@ -538947,7 +535871,7 @@ "support" ], "css/css-values-3/support/vh_not_refreshing_on_chrome_iframe.html": [ - "95f9582bf94c0bc60ddee79415b763af8762faf0", + "bdb7025d19780a35e031e5b4df92a0e3b2ec815d", "support" ], "css/css-values-3/unset-value-storage.html": [ @@ -539007,7 +535931,7 @@ "support" ], "css/css-values-3/vh_not_refreshing_on_chrome.html": [ - "b95d1e9054aaaa9c9a780fd4852307ed3604d46a", + "50f44774467976bc31f0d05df882bc971375991d", "reftest" ], "css/css-values-3/viewport-relative-lengths-scaled-viewport.html": [ @@ -548379,7 +545303,7 @@ "testharness" ], "css/geometry-1/OWNERS": [ - "173dd21a142b526b7447cc24e93a800e84f70bbc", + "4b2b22591c272446136118ce3d174d1b66200743", "support" ], "css/geometry-1/WebKitCSSMatrix.html": [ @@ -548402,10 +545326,6 @@ "22348a0aaeec8dcd677b8f60486f2e043b8f8a86", "testharness" ], - "css/geometry-1/spec-examples.html": [ - "9cf446202e4527e26d113e36d2e7427ab32ce2f0", - "testharness" - ], "css/geometry-1/structured-serialization.html": [ "1cc9f91deb2cf68704f0f5cda77a3288f45d5c5a", "testharness" @@ -575607,7 +572527,7 @@ "support" ], "css/work-in-progress/opera/OWNERS": [ - "adc83b19e793491b1c6ea0fd8b46cd9f32e592fc", + "3a52efa37cb05c353bb8ce78146c42db6a238b74", "support" ], "css/work-in-progress/opera/animations/0_as_keyframe_selector.html": [ @@ -578343,7 +575263,7 @@ "testharness" ], "cssom-view/OWNERS": [ - "cf93c0eefa7ac990a83355eddb8b22fa4baddf53", + "083538f652edfeea9bde3d5d9f56667bc3773f6a", "support" ], "cssom-view/Screen-pixelDepth-Screen-colorDepth001.html": [ @@ -578399,7 +575319,7 @@ "testharness" ], "cssom-view/elementFromPosition.html": [ - "2bb07e21ddfbc24dabc39fa261c720a36f56a933", + "d90dff8b15ec2977f341a7add9c7d627b62d9d0f", "testharness" ], "cssom-view/elementScroll.html": [ @@ -578446,10 +575366,6 @@ "81c8e70138fc30d0954d9de692ee396310586c7f", "support" ], - "cssom-view/interfaces.html": [ - "d74bbaf34040d130444915b4432c529a73d9604c", - "testharness" - ], "cssom-view/matchMedia.xht": [ "3330cf1603555d50d097cdc584cf1c193c8b32d3", "testharness" @@ -578482,10 +575398,6 @@ "0a8784c474ccdd4a3e76cb936855a8ef59566217", "support" ], - "cssom-view/scrollBoundaryBehavior-manual.html": [ - "987051cdbad355cbb1bbb8ea1030a3b17e533f09", - "manual" - ], "cssom-view/scrollIntoView-empty-args.html": [ "57e22136750f54145c37722674389590b7f340b6", "testharness" @@ -578534,10 +575446,6 @@ "e3bc7ab9a646c1275e5dab9394df97d72ef8a42e", "testharness" ], - "cssom-view/scrollintoview.html": [ - "6ff3bd8afc87c9f678115e18d3ff8b5331f81c00", - "testharness" - ], "cssom-view/support/1x1-green.png": [ "51e7b6974a09eda6cb31337717c5eaeb9c44b443", "support" @@ -578718,6 +575626,10 @@ "7f3440e65abbe692e3c28f1f1d04671054ecc815", "testharness" ], + "cssom-view/ttwf-scrollintoview.html": [ + "55d874f53db3c8ed03fff063584eecbcda10d2ce", + "testharness" + ], "cssom-view/window-screen-height-immutable.html": [ "3193a200624217a260e17660006e9ce31a52814c", "testharness" @@ -578775,7 +575687,7 @@ "testharness" ], "cssom/OWNERS": [ - "f468e2cf28cba133432cae56fd5b71e69188c7a3", + "504fa320d984433da43ab370215ecc2ee29ef66d", "support" ], "cssom/StyleSheetList.html": [ @@ -578871,7 +575783,7 @@ "testharness" ], "cssom/interfaces.html": [ - "c1dfd96239986c9c57d7b07caebbd1fc9654e0b9", + "5876c88acd95d18166fdd049bdb3f09cdde4eb3f", "testharness" ], "cssom/medialist-interfaces-001.html": [ @@ -579114,10 +576026,6 @@ "078e1dd6dd61d36cec239ed75d02051f61fe60a5", "support" ], - "cssom/support/xmlss-pi.xhtml": [ - "d25c88a9ce946cf0e2fde88062b7438b2df9c678", - "support" - ], "cssom/ttwf-cssom-doc-ext-load-count.html": [ "800db5cd4f7342d8c4e5309d4035182ce42f7251", "testharness" @@ -579359,7 +576267,7 @@ "support" ], "docs/OWNERS": [ - "8b8fcd1bcd07619951c92029a3f5cad01fa75d44", + "f44b20b9ca4ae973a8a1da3a8d37e4c9dbb0dfdb", "support" ], "docs/_appendix/github-intro.md": [ @@ -579563,11 +576471,11 @@ "support" ], "docs/introduction.md": [ - "b877d57dfe88a167dd7ff229d3bdf9fd22c76e8f", + "6c7c15823a502b51b84bde1da8be9bcfb3012cdd", "support" ], "dom/OWNERS": [ - "2bfae729fb0eab4081f06e51ae5640b49e012b8e", + "9b55eeb7739453218526eab2d6d00aedc475303a", "support" ], "dom/abort/event.any.js": [ @@ -580551,7 +577459,7 @@ "testharness" ], "dom/nodes/Node-cloneNode.html": [ - "d4ab5a700e36fa6b8c26ffc6703d2a9020b5336e", + "f2f37f4ad272aef9f5ee46f8b44a668ff394d6c8", "testharness" ], "dom/nodes/Node-compareDocumentPosition.html": [ @@ -583290,10 +580198,6 @@ "85124d35b37f14c143e1fcb2965f131a8f2a3391", "testharness" ], - "encrypted-media/encrypted-media-default-feature-policy.https.sub.html": [ - "aa376680149e53e4839dc48b45291264fa5d6960", - "testharness" - ], "encrypted-media/idlharness.html": [ "69456d56a5485b04465f4f6ee4abc80388703fd9", "testharness" @@ -583866,40 +580770,8 @@ "eb60703976142de7a5565928a25d875ef142da0a", "support" ], - "feature-policy/OWNERS": [ - "51fd9c99d8f327e033d8bb1a2500b5143d333287", - "support" - ], "feature-policy/README.md": [ - "711c323f1690b0dbe780461241ad825cdd3cf274", - "support" - ], - "feature-policy/payment-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html": [ - "8595732f7794f10107ef234fe6e37cc12c80eeaa", - "testharness" - ], - "feature-policy/payment-allowed-by-feature-policy-attribute.https.sub.html": [ - "7f00979fb8e60e938bfa816786705c95e611d2f3", - "testharness" - ], - "feature-policy/payment-allowed-by-feature-policy.https.sub.html": [ - "762f4d517150b10438fca8571204caae79e00278", - "testharness" - ], - "feature-policy/payment-allowed-by-feature-policy.https.sub.html.headers": [ - "038c90f26cb5c16047c294aa35a0b0251324dbc6", - "support" - ], - "feature-policy/payment-default-feature-policy.https.sub.html": [ - "6980a706cca09eaeb2d63d6780a5e0a89ff52fa5", - "testharness" - ], - "feature-policy/payment-disabled-by-feature-policy.https.sub.html": [ - "942104579b3710532d35bab01f9f387d5ed04fe0", - "testharness" - ], - "feature-policy/payment-disabled-by-feature-policy.https.sub.html.headers": [ - "09f612159dc367bad5febc8e0a724f0a284517d5", + "b74968d23db1beb35015cb6d8934f92d60cd3a5b", "support" ], "feature-policy/resources/feature-policy-payment.html": [ @@ -583915,7 +580787,7 @@ "support" ], "feature-policy/resources/featurepolicy.js": [ - "c8fac11b41aa98314aeca32d88e3027ba6aa92d1", + "99eeea227030740ce1aac7b4bf7c970dde9a0bea", "support" ], "feature-policy/resources/redirect-on-load.html": [ @@ -583923,7 +580795,7 @@ "support" ], "fetch/OWNERS": [ - "41230bc6bb795469b2d6534b00db50477637e1ee", + "e62831c5bfccaebe49384f42c515ece1b65244bb", "support" ], "fetch/README.md": [ @@ -584095,7 +580967,7 @@ "testharness" ], "fetch/api/cors/cors-expose-star.js": [ - "2403a7d229377d03230f32383e71960e32a84271", + "393131f216961ca07a225d61a5b51726d8b02c51", "support" ], "fetch/api/cors/cors-filtering-worker.html": [ @@ -584143,7 +581015,7 @@ "testharness" ], "fetch/api/cors/cors-preflight-star.any.js": [ - "fd336bff06ef9d08b9a728592c9e7bf0c43496db", + "5516bbb914b5d2a847d800d5c0f49a6da23b88e7", "testharness" ], "fetch/api/cors/cors-preflight-status.any.js": [ @@ -584635,7 +581507,7 @@ "testharness" ], "fetch/api/response/response-cancel-stream.html": [ - "453323c2a0f9a908966df3cb53211c0b0a1fa19d", + "3269c6c337a392f95e852d4f6904c51a90e7f652", "testharness" ], "fetch/api/response/response-clone.html": [ @@ -585327,11 +582199,11 @@ "manual" ], "gamepad/idlharness-manual.html": [ - "b7feb12fc02bc656eb41f406999481d204293c08", + "7098d436c90bb7242a3fa4aace2c85017fae5d56", "manual" ], "gamepad/idlharness.html": [ - "c9d8668d614404f24a8bf15d803e07e2ff6debd4", + "9bbceffc0b80b990f6f72e1e77a9fa451536bbbc", "testharness" ], "gamepad/timestamp-manual.html": [ @@ -585346,8 +582218,8 @@ "0b89e14eadd32fd23202977471c9913f5213dce4", "support" ], - "generic-sensor/idlharness.https.html": [ - "fdb816b5036bae53a60672d3b6910ddb06dd9d51", + "generic-sensor/idlharness.html": [ + "f968f5a81d25796f79cd22987810ec6832fa120d", "testharness" ], "geolocation-API/OWNERS": [ @@ -585427,7 +582299,7 @@ "support" ], "gyroscope/idlharness.https.html": [ - "2aedb883f553cae594afb7c5ef59222c0ee3fefb", + "69699b3b533c8fd4047a3b5e80f95f8cdc82d24d", "testharness" ], "hr-time/OWNERS": [ @@ -585455,15 +582327,15 @@ "testharness" ], "hr-time/timeOrigin.html": [ - "f2258619e00dd12ee38958bf251c72acab60baa2", + "f07da265bb9d1036589ff116b14ea1370abc4194", "testharness" ], "hr-time/timing-attack.html": [ "1d3d88e71fb886374b50c6dc2c1141a80c8c0a06", "testharness" ], - "hr-time/window-worker-timeOrigin.window.js": [ - "51267d21c761c3ccaee34bc4d5e533e69d739bc5", + "hr-time/window-worker-time-origin.html": [ + "556079c9d81c55df55c69738384991d31cad2c77", "testharness" ], "html-imports/OWNERS": [ @@ -585723,7 +582595,7 @@ "support" ], "html/OWNERS": [ - "29a1a9d837b3231ac7d1663c0ea8e41e8ce9d525", + "0a32a8fdeb92636cbd5e751c4bd44458d7274abf", "support" ], "html/README.md": [ @@ -587787,7 +584659,7 @@ "support" ], "html/browsers/the-window-object/named-access-on-the-window-object/named-objects.html": [ - "8738c9e53e1c71b6b15ea0c3f2f0f9b0e4522144", + "b4aed70f7618d5d5e29350f19b4c1d45c045f9cb", "testharness" ], "html/browsers/the-window-object/named-access-on-the-window-object/test.html": [ @@ -588379,7 +585251,7 @@ "testharness" ], "html/dom/documents/dom-tree-accessors/nameditem-03.html": [ - "0887edcb756daa6447497510ea7c8a3967ae8c2f", + "6692f5b790960145e7a94b25227682237cbb4862", "testharness" ], "html/dom/documents/dom-tree-accessors/nameditem-04.html": [ @@ -588399,7 +585271,7 @@ "testharness" ], "html/dom/documents/dom-tree-accessors/nameditem-08.html": [ - "ffb7fbed3b9e0f2a73907358234136d5a62b6943", + "5ae6d9718f6568cf9c42a7ebdf2cbae767c68852", "testharness" ], "html/dom/documents/loading-xml-documents/.gitkeep": [ @@ -589818,16 +586690,12 @@ "a4f99553c0cdf1c1efab08c85b9e3211b42d5412", "support" ], - "html/dom/historical.html": [ - "75fd4e5379337af2ebcb3cd7d62dbf3d726c4036", - "testharness" - ], "html/dom/interactions-with-xpath-and-xslt/.gitkeep": [ "da39a3ee5e6b4b0d3255bfef95601890afd80709", "support" ], "html/dom/interfaces.html": [ - "54e9b9fdae41f484fbd84ebdb03514c147d216bf", + "4c0db96824033d94b98123954254930fb742d7e3", "testharness" ], "html/dom/interfaces.worker.js": [ @@ -594023,7 +590891,7 @@ "testharness" ], "html/infrastructure/common-dom-interfaces/collections/htmlallcollection.html": [ - "5d3dd32c513cf4b04260c4acff4f1406bb168a07", + "eeb932d95184b11190af6a2e8be2adccc5a84601", "testharness" ], "html/infrastructure/common-dom-interfaces/collections/htmlformcontrolscollection.html": [ @@ -595694,14 +592562,6 @@ "cdcd861169c580a2ddae38b61cbbcd6efe1c5064", "testharness" ], - "html/semantics/document-metadata/the-style-element/style_type.html": [ - "bbef3695e7fd32fb92abd9d1d6a59a9380d0d361", - "testharness" - ], - "html/semantics/document-metadata/the-style-element/style_type_change.html": [ - "867064126601c92dce8a61d6f3e8237153a0a583", - "testharness" - ], "html/semantics/document-metadata/the-title-element/.gitkeep": [ "da39a3ee5e6b4b0d3255bfef95601890afd80709", "support" @@ -596259,7 +593119,7 @@ "testharness" ], "html/semantics/embedded-content/media-elements/mime-types/canPlayType.html": [ - "960d7daccac83f48f553edb4d32f1b5919f67dcc", + "3ea30a20d18f5c8839ccfaa183627702db38ed4b", "testharness" ], "html/semantics/embedded-content/media-elements/networkState_during_loadstart.html": [ @@ -596586,10 +593446,6 @@ "f7576ff332cac04a4e2b663b6fdd40aef154b6b5", "testharness" ], - "html/semantics/embedded-content/media-elements/track/track-element/track-cue-order.html": [ - "eeab6b02e728aea21878cf72664929766be057b7", - "testharness" - ], "html/semantics/embedded-content/media-elements/track/track-element/track-data-url.html": [ "e9c8849350512b1247543939ee0e529947e47c2d", "testharness" @@ -599079,7 +595935,7 @@ "testharness" ], "html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html": [ - "c00ac5b6d038b45b1a7cfbef94a4527757fa74e6", + "10dd870ad796a59bef26d18917bf91374f475f93", "testharness" ], "html/semantics/interactive-elements/the-menu-element/.gitkeep": [ @@ -599099,7 +595955,7 @@ "testharness" ], "html/semantics/interfaces.js": [ - "a9ac58b56b1a0f69f4e47365cb0ada55f31958e3", + "b63c7402601bbf801f65dff9bef38797cdaf9eae", "support" ], "html/semantics/links/.gitkeep": [ @@ -599902,6 +596758,18 @@ "458423e7b86ccaa89ffc0dc9f2c6b5b5bcea02cb", "testharness" ], + "html/semantics/scripting-1/the-script-element/script-language-type.html": [ + "6f8f694290991475df6df99996e8f39b610b58c5", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/script-languages-01.html": [ + "586f48daa539249c83dc93688dc7920e94326825", + "testharness" + ], + "html/semantics/scripting-1/the-script-element/script-languages-02.html": [ + "9d287c52a5b9b3a392ba78c285a41861a2cfff24", + "testharness" + ], "html/semantics/scripting-1/the-script-element/script-noembed-noframes-iframe.xhtml": [ "9023542ad8ef8efb989675d9afa189289aa77f85", "testharness" @@ -599954,18 +596822,6 @@ "773d82ec904b3bc9565fb94813af228e7833cf87", "testharness" ], - "html/semantics/scripting-1/the-script-element/script-type-and-language-empty.html": [ - "c26ddd7838ccbb36cc2216ba8236ea6ebf67e2c5", - "testharness" - ], - "html/semantics/scripting-1/the-script-element/script-type-and-language-js.html": [ - "2ff44c86f93aef83c837fb9cb4fc2116bbf60e12", - "testharness" - ], - "html/semantics/scripting-1/the-script-element/script-type-and-language-with-params.html": [ - "7520d0e13774dc4243e902f0aceae943893c52cd", - "testharness" - ], "html/semantics/scripting-1/the-script-element/scripting-enabled.html": [ "4a1324770dec284d6a8432a1ae94ff27f4fe5322", "testharness" @@ -600246,10 +597102,6 @@ "6be1e4a40962036b4fc0a300e8b13a082b391713", "manual" ], - "html/semantics/selectors/pseudo-classes/checked-type-change.html": [ - "3ac87c477fd16cfc944b19c7e843fe0a61c84c20", - "testharness" - ], "html/semantics/selectors/pseudo-classes/checked.html": [ "b5790716eff3f91ac04f78e669bfacac4ede5642", "testharness" @@ -600290,18 +597142,10 @@ "e20ded9d68245b887923a0cc14f6d46bc34fd809", "testharness" ], - "html/semantics/selectors/pseudo-classes/indeterminate-type-change.html": [ - "490ebd95eca88e917baf5550015af18ab8de5c34", - "testharness" - ], "html/semantics/selectors/pseudo-classes/indeterminate.html": [ "d4a60c5c7e3a3fbf16e87d347856b27a731a8820", "testharness" ], - "html/semantics/selectors/pseudo-classes/inrange-outofrange-type-change.html": [ - "ef8776ed618df10937a704b154a1adfea351ac76", - "testharness" - ], "html/semantics/selectors/pseudo-classes/inrange-outofrange.html": [ "8bcc8d0d7997c2bd55d66e816741ec4a9651dec7", "testharness" @@ -601599,7 +598443,7 @@ "testharness" ], "html/webappapis/idle-callbacks/callback-suspended.html": [ - "8dc29d1e08fe94919d019ae84bfb4c997662b287", + "f3f9eeda9e2d47825c77eaf278be6e976a8e1715", "testharness" ], "html/webappapis/idle-callbacks/callback-timeout-with-raf.html": [ @@ -602070,20 +598914,44 @@ "2c41fa08c5296f814d286d8b459424c5c488e3e1", "support" ], + "html/webappapis/system-state-and-capabilities/the-navigator-object/content.html": [ + "5a9a9f9452e113cc458fda86528a0240d33bd092", + "testharness" + ], + "html/webappapis/system-state-and-capabilities/the-navigator-object/content/001.xhtml": [ + "421d04eab9a840fbe22b090996e8d145a055449d", + "testharness" + ], + "html/webappapis/system-state-and-capabilities/the-navigator-object/content/002.xhtml": [ + "b3cb232ea7347baada581c3221dfcc0a5fb20aed", + "testharness" + ], + "html/webappapis/system-state-and-capabilities/the-navigator-object/content/003.xhtml": [ + "62feedab0f34fddae585c18ba25dbb1a113a49ec", + "testharness" + ], + "html/webappapis/system-state-and-capabilities/the-navigator-object/content/004.xhtml": [ + "7a32f6ff9f251674430f2133fdf35610b879733d", + "testharness" + ], + "html/webappapis/system-state-and-capabilities/the-navigator-object/content/005.xhtml": [ + "40c238fbc46063b619b079de9c042c5b2f55a3b7", + "testharness" + ], + "html/webappapis/system-state-and-capabilities/the-navigator-object/content/006.xhtml": [ + "a160f3bdac64c538b1f801f5a6f4a067338eb1ad", + "testharness" + ], "html/webappapis/system-state-and-capabilities/the-navigator-object/get-navigatorlanguage-manual.html": [ "d487c6dac121b518886c5f9c3389e54a6238a81f", "manual" ], - "html/webappapis/system-state-and-capabilities/the-navigator-object/historical.window.js": [ - "2a13612466333815c1ee890ff8ef68163ad5fbca", - "testharness" - ], "html/webappapis/system-state-and-capabilities/the-navigator-object/navigator-indexed.html": [ "3a478a2d6f508242244308641a2d57d4eb00798b", "testharness" ], "html/webappapis/system-state-and-capabilities/the-navigator-object/navigator-pluginarray.html": [ - "dc5ba1cb0f402f0fb0243bb2fa1b9da0c610341d", + "f1907fd820e2f6a195400a9bca96f3dae45fc308", "testharness" ], "html/webappapis/system-state-and-capabilities/the-navigator-object/navigator.any.js": [ @@ -602098,6 +598966,30 @@ "9ab91396894612ad2a71643cd5253fcc8572983a", "testharness" ], + "html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/001.xhtml": [ + "d7418838994fc0f6916e89a1b79d2a9c8536d7c7", + "testharness" + ], + "html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/002.xhtml": [ + "3bdec81bc84240cba8f5dbd24b8c6f5ae035f9c0", + "testharness" + ], + "html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/003.xhtml": [ + "02eeb4a40996b0c0fc44da1b14e0ecf3c58b3cd0", + "testharness" + ], + "html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/004.xhtml": [ + "29522f446c7df762eac96c7b7d05d96a49a2558e", + "testharness" + ], + "html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/005.xhtml": [ + "d99c6f077b63017d4a5782b751a6d288b55fd92d", + "testharness" + ], + "html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/006.xhtml": [ + "8efe37cac0d5dd0004bf0743c702eba27690058f", + "testharness" + ], "html/webappapis/the-windoworworkerglobalscope-mixin/Worker_Self_Origin.html": [ "9b895ac9dba41e20e341114eac7ab383cd8b08fb", "testharness" @@ -602399,7 +599291,7 @@ "reftest" ], "innerText/getter-tests.js": [ - "e5ec1c1fd4777a1a1c25720047a955ec04c0d014", + "08171e0a781c05d91841e483d7e18c670c82c827", "support" ], "innerText/getter.html": [ @@ -602422,20 +599314,8 @@ "cd25518dd402033694667ccd1982fd3b85faa412", "testharness" ], - "input-events/input-events-cut-paste-manual.html": [ - "442b82811d9fabc1cd4b398ac28cac58d4f2f78b", - "manual" - ], - "input-events/input-events-exec-command.html": [ - "233270068ad21c786fed0603a522d286c2419d56", - "testharness" - ], - "input-events/input-events-get-target-ranges-manual.html": [ - "1c8c1e8d43593ac85807f22fc221d72de0d792a2", - "manual" - ], - "input-events/input-events-typing-manual.html": [ - "f585014db144083ee2f70f6fd65f78bf2e289093", + "input-events/input-events-typing-data-manual.html": [ + "196d4a35b474ef3ad25a56a22a58cf421555903f", "manual" ], "interfaces/OWNERS": [ @@ -602446,12 +599326,8 @@ "5af2846c7f9ff93f2f4f13780d0356cdac6a0d4f", "support" ], - "interfaces/cssom-view.idl": [ - "1bcfadd098734fc82c0cf791d4c0d35d69423ce2", - "support" - ], "interfaces/cssom.idl": [ - "fbd624297dbfaa5e0fc2144b701c38eda41537ac", + "bb17bbe93776dbeb33f061a7a90889e922e3138e", "support" ], "interfaces/dedicated-workers.idl": [ @@ -602467,25 +599343,17 @@ "support" ], "interfaces/geometry.idl": [ - "dea55d151bd19d342f9b28bb2f11e5108ab970ff", + "07228bf101502d80f045a61ce046394b5932011e", "support" ], "interfaces/html.idl": [ - "5e6afa54c3b4c41f31e24e6fbb55f0e77259c09f", + "87f655b3ce658da0ad146ccfa5d24b1232ad83f8", "support" ], "interfaces/mediacapture-main.idl": [ "3d59aebd6219a0312ade8c543bb389030d670d82", "support" ], - "interfaces/payment-handler.idl": [ - "d1d50028218427ecb20ddd67061c9726fddcce3a", - "support" - ], - "interfaces/payment-request.idl": [ - "3a5f9a4e768409532916c751e7169c35ec0e23a8", - "support" - ], "interfaces/remoteplayback.idl": [ "f7c100f4275f2e32fbca3bb8d9c4900df879ffe4", "support" @@ -602718,10 +599586,6 @@ "6f8091035f4aa18131c548a81cbe80ba328169c9", "testharness" ], - "longtask-timing/OWNERS": [ - "30a9c29ba53bac131c0cca801c01dddb4779824e", - "support" - ], "longtask-timing/longtask-attributes.html": [ "247359327818f59871be00d22942f6ecde5281a7", "testharness" @@ -602787,7 +599651,7 @@ "support" ], "magnetometer/idlharness.https.html": [ - "a72e1c3443feae9bf9d19385c0ba96e66b97f20c", + "caa1de6ebcd32508ea4e61a7412f6c165699cc58", "testharness" ], "mathml/OWNERS": [ @@ -603799,31 +600663,31 @@ "testharness" ], "mediacapture-streams/GUM-api.https.html": [ - "ea80e175f08b16600df620d6a46a89dc571ea4f8", + "8df77e469f423b7c7e84ddc6924e01d63b1ffc20", "testharness" ], "mediacapture-streams/GUM-deny.https.html": [ - "58bc6b9e27d4c7036b188921598d9b5213f0b8db", + "ff6cf94acac74d1a650d6c2515b762fa483b110f", "testharness" ], "mediacapture-streams/GUM-empty-option-param.https.html": [ - "274f1a871405b0efc068c718dd22624ea0bbb5a2", + "64d32a60ba62577a02f7314db5c1e43d3b0d51a9", "testharness" ], "mediacapture-streams/GUM-impossible-constraint.https.html": [ - "afa2a8a631915f851f3c238476a361aa16865af6", + "d0f93cff7289917b298a33691204509188bb633d", "testharness" ], "mediacapture-streams/GUM-optional-constraint.https.html": [ - "425f35ad458fe835cbaeb66acdde95452519bdd0", + "9697e652b353ffbb8f1ef31038b0826a7c866198", "testharness" ], "mediacapture-streams/GUM-trivial-constraint.https.html": [ - "89758369578246d620e41d53a75ae0b885d589a1", + "46175d553affeaa8c801359261816430f8b1fdb8", "testharness" ], "mediacapture-streams/GUM-unknownkey-option-param.https.html": [ - "cfa1c007fadcdef21b043185903bfb0696b7b44a", + "bfd825c8fb46797d043d57d70689a766fa557bd3", "testharness" ], "mediacapture-streams/MediaDevices-IDL-all.html": [ @@ -603843,59 +600707,55 @@ "testharness" ], "mediacapture-streams/MediaStream-MediaElement-preload-none.https.html": [ - "374f9942ebd05d866340981469ceb28bddf83727", + "0f2bbd7581f2f51376b7fada199b4d436f411dba", "testharness" ], "mediacapture-streams/MediaStream-MediaElement-srcObject.https.html": [ - "f2958c6965640ff9e9dc2c038a593bdd41c6759c", + "f90dade04a03631f9c56333f621fd6379eb48998", "testharness" ], "mediacapture-streams/MediaStream-add-audio-track.https.html": [ - "1bcb7de8f2c0f85fed091dfcbb102d40264f387f", + "eecbedef2bbb1281fd07e12d06f53455a8f87c88", "testharness" ], "mediacapture-streams/MediaStream-audio-only.https.html": [ - "bc5a7f4380a0527fdc44c41b765e07df028d0dba", - "testharness" - ], - "mediacapture-streams/MediaStream-default-feature-policy.https.sub.html": [ - "955b6cfddae2c8961abfba52ffe9192224500d0a", + "6bf048248ed199eb84d9ee815dc64d19d173291a", "testharness" ], "mediacapture-streams/MediaStream-finished-add.https.html": [ - "9cd9b2b53c1353b46bf7efc9e8d0e0c215107dee", + "18cb89d609c81cd00870f58682b03c89fb74afbf", "testharness" ], "mediacapture-streams/MediaStream-gettrackid.https.html": [ - "ecdf2ad3e658c08dabff3e0d5860e4d86f434f0d", + "1d1d2a92be009863a17487d211523f4309ee8e4b", "testharness" ], "mediacapture-streams/MediaStream-id-manual.https.html": [ - "464a4e5b40a4aabf1302e24d51222b0374ff4c8a", + "c5ec056499818621f5948684da4715f5f14be124", "manual" ], "mediacapture-streams/MediaStream-idl.https.html": [ - "2cf280abdf5598a21000a26365f243fcc7ffdb6b", + "27d7d95e8d52de68f49af7ccc7c9cb441413ca0a", "testharness" ], "mediacapture-streams/MediaStream-removetrack.https.html": [ - "28bdf571b37412078199e127ecf3a9423770f0ce", + "84eeb7a7b9499e44f40e8a650373fcb86e502abe", "testharness" ], "mediacapture-streams/MediaStream-video-only.https.html": [ - "831fba0fe66ff11b5ca91784a0f91d863bd8a348", + "5f3e3390b52c567894cbcdf610489fc5b17ec94d", "testharness" ], "mediacapture-streams/MediaStreamTrack-MediaElement-disabled-audio-is-silence.https.html": [ - "37c655ef9b01d3e9d3d9512c966bd24adf870245", + "48620661c2947245554e227d559d551a93787ae2", "testharness" ], "mediacapture-streams/MediaStreamTrack-MediaElement-disabled-video-is-black.https.html": [ - "6427b6bea51c488ca15ac02b3cbecb776c294c0c", + "ff30dfac08aae859ad469c15fd7e5469b830d3a9", "testharness" ], "mediacapture-streams/MediaStreamTrack-end-manual.https.html": [ - "6511203b417168722d1e05d90e58364ebce145ea", + "e5550adb1a9ce03ba672271aa1cdcec7ffde27d6", "manual" ], "mediacapture-streams/MediaStreamTrack-getSettings.https.html": [ @@ -603903,11 +600763,11 @@ "testharness" ], "mediacapture-streams/MediaStreamTrack-id.https.html": [ - "46327fba3cf783d6506634b837f8308417f954cd", + "ea67395aec0f0c619ba7b94eb4bd26b317a945d3", "testharness" ], "mediacapture-streams/MediaStreamTrack-init.https.html": [ - "3cb9f842f12185de5f1696a8d0cdc2fe102c246a", + "5dec952b5ea64b644a7fd90ef41d2da95388167b", "testharness" ], "mediacapture-streams/MediaStreamTrackEvent-constructor.https.html": [ @@ -603938,6 +600798,90 @@ "70a1f9e81faa3dbbe320a71a008e4594a29878a8", "testharness" ], + "microdata/conformance-requirements/.gitkeep": [ + "da39a3ee5e6b4b0d3255bfef95601890afd80709", + "support" + ], + "microdata/converting-html-to-other-formats/.gitkeep": [ + "da39a3ee5e6b4b0d3255bfef95601890afd80709", + "support" + ], + "microdata/converting-html-to-other-formats/json/.gitkeep": [ + "da39a3ee5e6b4b0d3255bfef95601890afd80709", + "support" + ], + "microdata/dependencies/.gitkeep": [ + "da39a3ee5e6b4b0d3255bfef95601890afd80709", + "support" + ], + "microdata/encoding-microdata/.gitkeep": [ + "da39a3ee5e6b4b0d3255bfef95601890afd80709", + "support" + ], + "microdata/encoding-microdata/associating-names-with-items/.gitkeep": [ + "da39a3ee5e6b4b0d3255bfef95601890afd80709", + "support" + ], + "microdata/encoding-microdata/items/.gitkeep": [ + "da39a3ee5e6b4b0d3255bfef95601890afd80709", + "support" + ], + "microdata/encoding-microdata/microdata-and-other-namespaces/.gitkeep": [ + "da39a3ee5e6b4b0d3255bfef95601890afd80709", + "support" + ], + "microdata/encoding-microdata/names-the-itemprop-attribute/.gitkeep": [ + "da39a3ee5e6b4b0d3255bfef95601890afd80709", + "support" + ], + "microdata/encoding-microdata/names-the-itemprop-attribute/original-id.json": [ + "cc9626d22d5e06bb2397b813eff5e125d0fe7034", + "support" + ], + "microdata/encoding-microdata/the-microdata-model/.gitkeep": [ + "da39a3ee5e6b4b0d3255bfef95601890afd80709", + "support" + ], + "microdata/encoding-microdata/values/.gitkeep": [ + "da39a3ee5e6b4b0d3255bfef95601890afd80709", + "support" + ], + "microdata/iana/.gitkeep": [ + "da39a3ee5e6b4b0d3255bfef95601890afd80709", + "support" + ], + "microdata/introduction/.gitkeep": [ + "da39a3ee5e6b4b0d3255bfef95601890afd80709", + "support" + ], + "microdata/introduction/global-identifiers-for-items/.gitkeep": [ + "da39a3ee5e6b4b0d3255bfef95601890afd80709", + "support" + ], + "microdata/introduction/overview/.gitkeep": [ + "da39a3ee5e6b4b0d3255bfef95601890afd80709", + "support" + ], + "microdata/introduction/selecting-names-when-defining-vocabularies/.gitkeep": [ + "da39a3ee5e6b4b0d3255bfef95601890afd80709", + "support" + ], + "microdata/introduction/the-basic-syntax/.gitkeep": [ + "da39a3ee5e6b4b0d3255bfef95601890afd80709", + "support" + ], + "microdata/introduction/typed-items/.gitkeep": [ + "da39a3ee5e6b4b0d3255bfef95601890afd80709", + "support" + ], + "microdata/introduction/using-the-microdata-dom-api/.gitkeep": [ + "da39a3ee5e6b4b0d3255bfef95601890afd80709", + "support" + ], + "microdata/terminology/.gitkeep": [ + "da39a3ee5e6b4b0d3255bfef95601890afd80709", + "support" + ], "mixed-content/OWNERS": [ "167112f19752c9c180831820b6e348427606b63b", "support" @@ -613647,7 +610591,7 @@ "manual" ], "orientation-sensor/idlharness.https.html": [ - "9301519eebff3db962bbeb148bf3dd3b1e305a23", + "71100177bcb537c18f98edfd7bf04d420714a78b", "testharness" ], "page-visibility/OWNERS": [ @@ -613722,58 +610666,6 @@ "5695dc622d2bc89c33c10fd73aac173c87cc7ad2", "testharness" ], - "paint-timing/OWNERS": [ - "2b1094a1e18f3321cc7a3740cae2d5b2d5f85772", - "support" - ], - "paint-timing/basetest.html": [ - "f34f6729a82f6efc16dc4d62c95f706688d0456b", - "testharness" - ], - "paint-timing/first-contentful-bg-image.html": [ - "6ee710d78e5f0f174ba00fea97c49d05641ed514", - "testharness" - ], - "paint-timing/first-contentful-canvas.html": [ - "b179da1518178287879fa36c4adbd3c5dc291e92", - "testharness" - ], - "paint-timing/first-contentful-image.html": [ - "d557aed2ab81949a2916b764dea207b50bab6278", - "testharness" - ], - "paint-timing/first-contentful-paint.html": [ - "7cf0881d8a247bc85e8c8ad1be131b84dc9b56bd", - "testharness" - ], - "paint-timing/first-contentful-svg.html": [ - "41436ee277f1882235b668afb7144f14491c6a5c", - "testharness" - ], - "paint-timing/first-paint-bg-color.html": [ - "bf6555a04e08636abb0f25c0948d8e7e5a34eb62", - "testharness" - ], - "paint-timing/first-paint-only.html": [ - "826a97fb19bfcad80b1957251c3d57e995e78990", - "testharness" - ], - "paint-timing/resources/circle.svg": [ - "81e7e9fd9b897bd8a62959368a0b7e7f2c2533cf", - "support" - ], - "paint-timing/resources/circles.png": [ - "dda93e587da353e712ff9bc671ebcafa8dea222f", - "support" - ], - "payment-handler/OWNERS": [ - "c5e5d0fd086bbe946f99aa8836785c81a2bccb3d", - "support" - ], - "payment-handler/interfaces.https.any.js": [ - "a20a5909c9a94120049e45e543cc623b875ea7f5", - "testharness" - ], "payment-method-basic-card/OWNERS": [ "78f6ac38657ede306b767f1156cebd44bebbfb8e", "support" @@ -613787,29 +610679,9 @@ "support" ], "payment-request/OWNERS": [ - "a2937112040fe45b12ba87b6fb75bd9be6aab6ad", + "c9d1edd21d99c84fbabeb0f05c766850539b618f", "support" ], - "payment-request/PaymentRequestUpdateEvent/constructor.http.html": [ - "017f1f1aca43171083833ddb27ff66e39902e85d", - "testharness" - ], - "payment-request/PaymentRequestUpdateEvent/constructor.https.html": [ - "91210fe058e95195ff5f999a1540ce0f2914f552", - "testharness" - ], - "payment-request/PaymentRequestUpdateEvent/updateWith-duplicate-shipping-options-manual.https.html": [ - "c5850ae1bb14090eef0fb80b7ecbadafb048394f", - "manual" - ], - "payment-request/PaymentRequestUpdateEvent/updatewith-method.https.html": [ - "08e63c4605bfa4838984aff13a82458ca2a6bdf8", - "testharness" - ], - "payment-request/algorithms-manual.https.html": [ - "a3d20d112af7ff8d18ddf0b9cb69d121a015f374", - "manual" - ], "payment-request/allowpaymentrequest/active-document-cross-origin.https.sub.html": [ "e96ac343e8533e8e90d3cbd4113a902b9e93e0bc", "testharness" @@ -613847,29 +610719,53 @@ "testharness" ], "payment-request/allowpaymentrequest/removing-allowpaymentrequest.https.sub.html": [ - "3aa81e7a578d5250854a14a617140111969570f6", + "41265b7c3d0e8d4c8f462f957627139f8aa5a3a3", "testharness" ], "payment-request/allowpaymentrequest/setting-allowpaymentrequest-timing.https.sub.html": [ - "d92b607f67ce478d505544bb43cd015b4bc89987", + "5eb37c0c6ad39187c4505a8cbe113c4b68e51c92", "testharness" ], "payment-request/allowpaymentrequest/setting-allowpaymentrequest.https.sub.html": [ - "6e4028440fff617d6a0e9abb06625891eb53b28a", + "e5be539c1b0ca1c571df1fc979fde5bf6482b43d", "testharness" ], - "payment-request/change-shipping-option-manual.https.html": [ - "46bc8b2f5512e7d40e46c4fb255f82def0e359d1", - "manual" - ], "payment-request/historical.https.html": [ "6695acdcd1647fdd37702a7f63658dcd50f25596", "testharness" ], "payment-request/interfaces.https.html": [ - "87fb3213b7442ceb3f096d88b6bae3074f96d29c", + "e531c0ceda2fa798e5e6df3c7131e6b80f342884", "testharness" ], + "payment-request/payment-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html": [ + "8595732f7794f10107ef234fe6e37cc12c80eeaa", + "testharness" + ], + "payment-request/payment-allowed-by-feature-policy-attribute.https.sub.html": [ + "7f00979fb8e60e938bfa816786705c95e611d2f3", + "testharness" + ], + "payment-request/payment-allowed-by-feature-policy.https.sub.html": [ + "762f4d517150b10438fca8571204caae79e00278", + "testharness" + ], + "payment-request/payment-allowed-by-feature-policy.https.sub.html.headers": [ + "038c90f26cb5c16047c294aa35a0b0251324dbc6", + "support" + ], + "payment-request/payment-default-feature-policy.https.sub.html": [ + "6980a706cca09eaeb2d63d6780a5e0a89ff52fa5", + "testharness" + ], + "payment-request/payment-disabled-by-feature-policy.https.sub.html": [ + "942104579b3710532d35bab01f9f387d5ed04fe0", + "testharness" + ], + "payment-request/payment-disabled-by-feature-policy.https.sub.html.headers": [ + "09f612159dc367bad5febc8e0a724f0a284517d5", + "support" + ], "payment-request/payment-request-abort-method.https.html": [ "5c1ddf4e9e2a896036912983462f51f8ff6aa82b", "testharness" @@ -613883,11 +610779,11 @@ "testharness" ], "payment-request/payment-request-constructor.https.html": [ - "34ee1140e70e997f01beaab57885ec980e273f4c", + "3ecb26e134b45fd0f0238c8552d096ea5e154793", "testharness" ], "payment-request/payment-request-ctor-currency-code-checks.https.html": [ - "cee3a8a8b9d25b5a44445a416b1bc9be2b341a04", + "29a226caa4f91f0b92f4ed8bd99d40e241884107", "testharness" ], "payment-request/payment-request-ctor-pmi-handling.https.html": [ @@ -613895,35 +610791,39 @@ "testharness" ], "payment-request/payment-request-id-attribute.https.html": [ - "9a8a1ffc3cd7ba3c29380c4a9962bd17f35087c3", + "0c732487dba598c8ac72a349841ed2cae265a3a9", "testharness" ], "payment-request/payment-request-onshippingaddresschange-attribute.https.html": [ - "c9e3679232a83abe6a9eefcb28e3387d2c7810e5", + "c716788baf4b5e74c5bd5adbbd9f95d9ca98ce12", "testharness" ], "payment-request/payment-request-onshippingoptionchange-attribute.https.html": [ - "9488e832b86b582310b0f46a68f9cf420b473e98", + "fc4772725ab7cab838d0d7bb97d0febeef8d093c", "testharness" ], "payment-request/payment-request-response-id.html": [ "8feda1d3b4c071014d4c8c7898598c7d23086216", "support" ], - "payment-request/payment-request-shippingAddress-attribute.https.html": [ - "ce33b78031644cb508c6fe148c21c37128b422c0", - "testharness" - ], - "payment-request/payment-request-shippingOption-attribute.https.html": [ - "4dbafc96c5effd3b697026aa9a29095e8f4a9296", - "testharness" - ], "payment-request/payment-request-shippingType-attribute.https.html": [ - "27ecc7e10e50bf2df07f84a15972c3b913ebf32f", + "b6c449dfe568dea727a18e10428e1b8e0186f8d4", "testharness" ], "payment-request/payment-request-show-method.https.html": [ - "1e4c792de7013839c713555a0a295bcbb9597094", + "e30f506c253ada159d343ef995f8a062c42677c5", + "testharness" + ], + "payment-request/payment-request-update-event-constructor.http.html": [ + "017f1f1aca43171083833ddb27ff66e39902e85d", + "testharness" + ], + "payment-request/payment-request-update-event-constructor.https.html": [ + "2a7df6827204f3dd03f5d4a3755f6ed96cdbbb0e", + "testharness" + ], + "payment-request/payment-request-update-event-updatewith-method.https.html": [ + "08e63c4605bfa4838984aff13a82458ca2a6bdf8", "testharness" ], "payment-request/payment-response/complete-method-manual.https.html": [ @@ -613931,7 +610831,7 @@ "manual" ], "payment-request/payment-response/helpers.js": [ - "6fa16e6e1a3a822842f703d2136afa65c90710d3", + "d0824649acba162d9cc221f1b333cae915bc7828", "support" ], "payment-request/payment-response/methodName-attribute-manual.https.html": [ @@ -613955,37 +610855,17 @@ "manual" ], "payment-request/payment-response/shippingAddress-attribute-manual.https.html": [ - "52d7dafc3e6eeb3ec8ad486825ebad8f3db6c79f", + "eb4f106ac7d3edb71dc3b7dce43d8fd1fe11530c", "manual" ], "payment-request/payment-response/shippingOption-attribute-manual.https.html": [ "cb2d1d6dfb668a40bb0822ce2a097d327bf4dfe7", "manual" ], - "payment-request/rejects_if_not_active.https.html": [ - "b7defcf07abde6a18f0012c21bee2e00a5669cd0", - "testharness" - ], - "payment-request/resources/page1.html": [ - "9bd62a5279e60dc30b39c449f4aefbe30f9db336", - "support" - ], - "payment-request/resources/page2.html": [ - "9bd62a5279e60dc30b39c449f4aefbe30f9db336", - "support" - ], - "payment-request/shipping-address-changed-manual.https.html": [ - "a1784f0be2a7861480f663ac789eed67e08ddce8", - "manual" - ], "payment-request/updateWith-method-pmi-handling-manual.https.html": [ "5e254b412285a6154004aeff98357c6aa55e62c6", "manual" ], - "payment-request/user-abort-algorithm-manual.https.html": [ - "0b93033f26abeec7adc7e9488afe26a6d6fc2df7", - "manual" - ], "performance-timeline/OWNERS": [ "b82f9756b15ef3ea45fb250e304031d9ceaee9c7", "support" @@ -614031,7 +610911,7 @@ "testharness" ], "performance-timeline/po-observe.html": [ - "2486507d5925b6429899ddf4db386990d7ae560f", + "0076397128975660e1f66f8d23e6b6945d2a804e", "testharness" ], "performance-timeline/po-resource.html": [ @@ -614795,7 +611675,7 @@ "support" ], "presentation-api/receiving-ua/support/PresentationConnection_onmessage_receiving-ua.html": [ - "da347fdf1c5c44a5974107678caab349add80c2f", + "7d7b0bb899d0ab8415c1705f5bee2ca7a9866561", "support" ], "presentation-api/receiving-ua/support/PresentationConnection_send_receiving-ua.html": [ @@ -614887,7 +611767,7 @@ "testharness" ], "quirks-mode/OWNERS": [ - "adc83b19e793491b1c6ea0fd8b46cd9f32e592fc", + "3a52efa37cb05c353bb8ce78146c42db6a238b74", "support" ], "quirks-mode/active-and-hover-manual.html": [ @@ -623475,7 +620355,7 @@ "testharness" ], "service-workers/service-worker/fetch-frame-resource.https.html": [ - "0e0cf1dbe113b8403d6f1de0462ca8dd9641b3c4", + "77709ff94cfaeec0b01e157714244d1b568c6b18", "testharness" ], "service-workers/service-worker/fetch-header-visibility.https.html": [ @@ -624103,7 +620983,7 @@ "support" ], "service-workers/service-worker/resources/extendable-event-async-waituntil.js": [ - "1c4145015d38589beea2e5a6850bb4f97f773e0a", + "6974e3550cb50b5789c10681abf0a1174bc1a3b8", "support" ], "service-workers/service-worker/resources/extendable-event-waituntil.js": [ @@ -624654,6 +621534,10 @@ "9bd12c8a1819a2d2c00e49df61972307b63a1a73", "support" ], + "service-workers/service-worker/resources/registration-tests.js": [ + "bdb31335f8d15de455108e0186183f1acdaef41e", + "support" + ], "service-workers/service-worker/resources/registration-worker.js": [ "048f75fc0d193765d6264e7be132c29e56dd7bcb", "support" @@ -624723,7 +621607,7 @@ "support" ], "service-workers/service-worker/resources/skip-waiting-installed-worker.js": [ - "96561dc391ccdb01200c468d0af36efa0f485705", + "6c6338c7aad6dfc6ef45458fb40441a04820aa6d", "support" ], "service-workers/service-worker/resources/skip-waiting-worker.js": [ @@ -625862,26 +622746,6 @@ "005490d4fc62797e432b03c33c349d9136815625", "testharness" ], - "streams/readable-byte-streams/brand-checks.dedicatedworker.html": [ - "b0f32b03a352ef7ac1940eda90414a5f65980194", - "testharness" - ], - "streams/readable-byte-streams/brand-checks.html": [ - "317e5c5cc2eedcc6902e8cc44567ea59e7f173ac", - "testharness" - ], - "streams/readable-byte-streams/brand-checks.js": [ - "15d95be48677eae31eece31a54d2d63fdf64c1bc", - "support" - ], - "streams/readable-byte-streams/brand-checks.serviceworker.https.html": [ - "c8279e28f5cd80d454d884154ae883a8c965705f", - "testharness" - ], - "streams/readable-byte-streams/brand-checks.sharedworker.html": [ - "6f3911baf77e26af2d7e7d7472caae4df6d5a27e", - "testharness" - ], "streams/readable-byte-streams/general.dedicatedworker.html": [ "8583d80450b090c16ed0795170340d040449bbc1", "testharness" @@ -626155,7 +623019,7 @@ "support" ], "streams/resources/test-utils.js": [ - "a05a620307acb1e7cadba523b8a3c6d2de7e1748", + "a9f47ed7902a34cdd1ad34e422cd63b7bad58ee7", "support" ], "streams/writable-streams/aborting.dedicatedworker.html": [ @@ -629039,7 +625903,7 @@ "testharness" ], "uievents/OWNERS": [ - "d9038d2dcd0e077cfa7dbab516f2a8d74de2986d", + "0826698a2b0359d4b9201d5e7b2c9ceadfcf8ca5", "support" ], "uievents/README.md": [ @@ -629471,7 +626335,7 @@ "testharness" ], "url/OWNERS": [ - "e41e711c143c9d39073b5cec75224014fab87e9a", + "b5b8607bc77103038bb7712364c150c072a7b4aa", "support" ], "url/README.md": [ @@ -629587,7 +626451,7 @@ "testharness" ], "url/urltestdata.json": [ - "d2b5d10aa9151eff2b6aa31932cd8adccd5836ba", + "0d888ff45fc4575ac193410701c08f05e58a5364", "support" ], "user-timing/OWNERS": [ @@ -629734,10 +626598,6 @@ "f6ae98a534bfc2d0b57ef11f8f1ebb3d72629c3c", "manual" ], - "viewport/viewport-attribute-event-handlers-manual.html": [ - "09901d9056f2e31f630becdd07f800e00496700a", - "manual" - ], "viewport/viewport-dimensions-custom-scrollbars-manual.html": [ "ccef0829da2e4ebcad983235f97a6f3f767a0f51", "manual" @@ -630703,7 +627563,7 @@ "support" ], "wai-aria/tools/make_tests.pl": [ - "684cc354d423a16d5de60114f01810cd76ad620b", + "0b85da0135983b2f69b881fab53d18b56c0033ff", "support" ], "wai-aria/tree_orientation_horizontal-manual.html": [ @@ -631667,7 +628527,7 @@ "support" ], "webdriver/tests/state/get_element_attribute.py": [ - "1e25aaf5c3ab4c24130566d7823830a11a86393d", + "7d531acbe34c1f48f519158f813c5bce88b33259", "wdspec" ], "webdriver/tests/state/get_element_property.py": [ @@ -631703,7 +628563,7 @@ "support" ], "webdriver/tests/support/fixtures.py": [ - "ed33ffdd2084ba3c65d82ff7ce7996d45ba98ce5", + "aae800a366f9d7a53afb0bae99bde204da63591a", "support" ], "webdriver/tests/support/http_request.py": [ @@ -641555,7 +638415,7 @@ "support" ], "webrtc/RTCConfiguration-iceCandidatePoolSize.html": [ - "6b55bd01a1422f2315cae765a7d539bf81151c1f", + "7816790d82628acb7cf04e0a046046884c1207e7", "testharness" ], "webrtc/RTCConfiguration-iceServers.html": [ @@ -641639,7 +638499,7 @@ "testharness" ], "webrtc/RTCPeerConnection-createAnswer.html": [ - "d70701dac44c536f793b124c0b1f86e7a08b2fd5", + "7811d3d2100fb58d7ab3ac441a626687c0126fd0", "testharness" ], "webrtc/RTCPeerConnection-createDataChannel.html": [ @@ -641671,7 +638531,7 @@ "testharness" ], "webrtc/RTCPeerConnection-helper.js": [ - "e3b2656366be168b5f2e3cde9461a4e69a51c9ef", + "a89f8545bb5a5e832d4efa9674abbf55551344b2", "support" ], "webrtc/RTCPeerConnection-iceConnectionState.html": [ @@ -641711,43 +638571,43 @@ "testharness" ], "webrtc/RTCPeerConnection-setLocalDescription-answer.html": [ - "e215aa042c67a23ae776b83d662a035a22e03810", + "61ed2df93379695ab2af6a726512bfd6700cd027", "testharness" ], "webrtc/RTCPeerConnection-setLocalDescription-offer.html": [ - "9f30ee4801fbcd574d90c3f15a733c448f148649", + "093c44489deb0541c19d8f90a024e91285d0989a", "testharness" ], "webrtc/RTCPeerConnection-setLocalDescription-pranswer.html": [ - "9653d2176c51b638b0c03dec363d2a2fb8386281", + "403b01796ca156e3a3157fbc0a64929348749a6e", "testharness" ], "webrtc/RTCPeerConnection-setLocalDescription-rollback.html": [ - "293081a9ebd031cc4919a01ec323630394d401a8", + "353808ea44c2a7b79458cd9fa7b7ffd23b868431", "testharness" ], "webrtc/RTCPeerConnection-setLocalDescription.html": [ - "b4cac26716f01ff80c902d3536dc0d2de6d85388", + "7a5a44a4b431e811ebbe505ce63d6c0e9a5ed39b", "testharness" ], "webrtc/RTCPeerConnection-setRemoteDescription-answer.html": [ - "3f85858a7afe6a5346b2d47f5505d25caef2668b", + "0d904a91df760946158b1252476870d67faf8587", "testharness" ], "webrtc/RTCPeerConnection-setRemoteDescription-offer.html": [ - "ce5345bbaf5b5230b1fd53bbb55ab4439c3eb979", + "91a70d6ec4387e88e779621a72baf282bd74d21c", "testharness" ], "webrtc/RTCPeerConnection-setRemoteDescription-pranswer.html": [ - "6ddea8760cbacc775ee99aa700fd71883cfb9bd7", + "35b884aa8bdbebbe646ae27ebedf5ae722790d48", "testharness" ], "webrtc/RTCPeerConnection-setRemoteDescription-rollback.html": [ - "6142a9b3b95bb26634af5300bc24981f2b4cb2a4", + "ee83d6611ac113b96730c3ab103f5c2b1c8be1ba", "testharness" ], "webrtc/RTCPeerConnection-setRemoteDescription.html": [ - "2a2e3f9ff0a5912fa260d7124f7f5a9c3862c533", + "3fa920f546dbb273634a25adf578e9489debb3b5", "testharness" ], "webrtc/RTCPeerConnectionIceEvent-constructor.html": [ @@ -641831,7 +638691,7 @@ "testharness" ], "webrtc/RTCSctpTransport-constructor.html": [ - "b92f3acf5113a475b58892f48406aafc9634be07", + "311250883925fc2d94e2716f4eddcdb46ed9da57", "testharness" ], "webrtc/RTCStats-helper.js": [ @@ -642003,7 +638863,7 @@ "testharness" ], "websockets/OWNERS": [ - "10f99e83578e8082173bb1da68f7fb6f1c371d58", + "891fabbcf4359695999272da171ad3177d5f3e7e", "support" ], "websockets/README.md": [ @@ -642271,11 +639131,11 @@ "testharness" ], "websockets/constructor/010.html": [ - "bac5f0dca1508252e49dcf61ca3f095664bfaf89", + "c0c6f54f8c9290e6fbf8a1ddf22e6a1362ef586d", "testharness" ], "websockets/constructor/011.html": [ - "47314c9d8762f552694791286e2607bab72ec39d", + "60f0ca813c13a6003a3f376ffbddd38a8a7a6f98", "testharness" ], "websockets/constructor/012.html": [ @@ -643015,7 +639875,7 @@ "testharness" ], "webstorage/storage_enumerate.html": [ - "68a6b26b33dbad422b25d95f67ffa7d057662894", + "6d7c52b7b8fef7b6e987d4fade5fb1271266c6bb", "testharness" ], "webstorage/storage_functions_not_overwritten.html": [ @@ -643191,7 +640051,7 @@ "support" ], "webvr/idlharness.html": [ - "ef6ad8bff43a6423b9b3e7deb8017a8b3fa0c112", + "236974fe82ab29908e849d25c5ce748f5c0509c3", "testharness" ], "webvr/webvr-disabled-by-feature-policy.https.sub.html": [ @@ -643227,7 +640087,7 @@ "support" ], "webvtt/OWNERS": [ - "3927364206320a3898eb0fec28e2a879bb04d606", + "a630f47bc188f4fb7b4ee83653437339f4d70575", "support" ], "webvtt/README.md": [ @@ -643359,7 +640219,7 @@ "support" ], "webvtt/parsing/cue-text-parsing/dat/entities.dat": [ - "02613e33aa1f565f3a1918b12dea5a6f2ac9debb", + "8c2d324c5770804fd4c1edcf797b57c3e53cf411", "support" ], "webvtt/parsing/cue-text-parsing/dat/tags.dat": [ @@ -643379,7 +640239,7 @@ "support" ], "webvtt/parsing/cue-text-parsing/tests/entities.html": [ - "3e4a9ea6beeb9068ab685f8edb0238bb12f42c5e", + "547e1da2425b38577e4369c9523e34ca72c8f502", "testharness" ], "webvtt/parsing/cue-text-parsing/tests/tags.html": [ @@ -646003,7 +642863,7 @@ "support" ], "workers/OWNERS": [ - "424c4c3664d3eb0c5123b4a05c55ee78a1dbbba5", + "3648bbedbe71884c7d375289fb63250f968be14f", "support" ], "workers/README.md": [ @@ -647038,10 +643898,6 @@ "671ecb263ceb15ca28ef9cfc2ee6efa6e08a70fb", "support" ], - "workers/worker-performance.worker.js": [ - "d1759a707897f66bf013e888ed188023145e2622", - "testharness" - ], "x-frame-options/deny.sub.html": [ "5a589f4b4c6f2503104b33ae7002dcc5c4153eb7", "testharness" diff --git a/testing/web-platform/meta/mozilla-sync b/testing/web-platform/meta/mozilla-sync index b03072e1935d..011c2f8e31e6 100644 --- a/testing/web-platform/meta/mozilla-sync +++ b/testing/web-platform/meta/mozilla-sync @@ -1,2 +1,2 @@ -local: ba69e294fc80f23d54fc68050f1b7d63d341aa9c -upstream: a2419b0305a7cc5053a9588fbe336ba8ccb096a3 +local: fb22415719a9d971a2646fa2d1b74e134ca00c3d +upstream: 12dd602c7b478057bfd70e4243eea395cc1d1876 diff --git a/testing/web-platform/moz.build b/testing/web-platform/moz.build index 426d047864d3..4d6454e02077 100644 --- a/testing/web-platform/moz.build +++ b/testing/web-platform/moz.build @@ -102,6 +102,9 @@ with Files("tests/apng/**"): with Files("tests/assumptions/**"): BUG_COMPONENT = ("Testing", "web-platform-tests") +with Files("tests/auxclick/**"): + BUG_COMPONENT = ("Core", "DOM: Events") + with Files("tests/background-fetch/**"): BUG_COMPONENT = ("Core", "DOM: Service Workers") @@ -117,6 +120,9 @@ with Files("tests/bluetooth/**"): with Files("tests/clear-site-data/**"): BUG_COMPONENT = ("Core", "DOM: Security") +with Files("tests/clipboard/**"): + BUG_COMPONENT = ("Core", "DOM") + with Files("tests/clipboard-apis/**"): BUG_COMPONENT = ("Core", "DOM") @@ -151,6 +157,9 @@ with Files("tests/css/**"): with Files("tests/css-cascade/**"): BUG_COMPONENT = ("Core", "CSS Parsing and Computation") +with Files("tests/css-font-display/**"): + BUG_COMPONENT = ("Core", "Layout: Text") + with Files("tests/css-font-loading/**"): BUG_COMPONENT = ("Core", "Layout: Text") @@ -322,6 +331,9 @@ with Files("tests/mediacapture-record/**"): with Files("tests/mediacapture-streams/**"): BUG_COMPONENT = ("Core", "Audio/Video: MediaStreamGraph") +with Files("tests/microdata/**"): + BUG_COMPONENT = ("Core", "DOM") + with Files("tests/mixed-content/**"): BUG_COMPONENT = ("Core", "DOM: Security") diff --git a/testing/web-platform/tests/2dcontext/tools/current-work-canvas.xhtml b/testing/web-platform/tests/2dcontext/tools/current-work-canvas.xhtml index 1baf354028c4..b41ad7d4d620 100644 --- a/testing/web-platform/tests/2dcontext/tools/current-work-canvas.xhtml +++ b/testing/web-platform/tests/2dcontext/tools/current-work-canvas.xhtml @@ -1,67 +1,42 @@ -HTML Standard

    4.12.5 The canvas element

    - -
    Categories:
    Flow content.
    Phrasing content.
    Embedded content.
    Palpable content.
    Contexts in which this element can be used:
    Where embedded content is expected.
    Content model:
    Transparent, but with no interactive content descendants except - for a elements, img elements with - usemap attributes, button elements, - input elements whose type attribute are in - the Checkbox or Radio Button states, input elements that are - buttons, select elements with a multiple attribute or a display size greater than 1, and elements that would not be - interactive content except for having the tabindex attribute specified.
    Tag omission in text/html:
    Neither tag is omissible.
    Content attributes:
    Global attributes
    width — Horizontal dimension
    height — Vertical dimension
    DOM interface:
    -
    typedef (CanvasRenderingContext2D or WebGLRenderingContext) RenderingContext;
    -
    -[Exposed=Window,
    - HTMLConstructor]
    -interface HTMLCanvasElement : HTMLElement {
    -  [CEReactions] attribute unsigned long width;
    -  [CEReactions] attribute unsigned long height;
    -
    -  RenderingContext? getContext(DOMString contextId, any... arguments);
    -
    -  USVString toDataURL(optional DOMString type, optional any quality);
    -  void toBlob(BlobCallback _callback, optional DOMString type, optional any quality);
    -  OffscreenCanvas transferControlToOffscreen();
    -};
    -
    -callback BlobCallback = void (Blob? blob);
    -
    - -

    The canvas element provides scripts with a resolution-dependent bitmap canvas, - which can be used for rendering graphs, game graphics, art, or other visual images on the fly.

    - -

    Authors should not use the canvas element in a document when a more suitable - element is available. For example, it is inappropriate to use a canvas element to - render a page heading: if the desired presentation of the heading is graphically intense, it - should be marked up using appropriate elements (typically h1) and then styled using - CSS and supporting technologies such as Web Components.

    - -

    When authors use the canvas element, they must also provide content that, when - presented to the user, conveys essentially the same function or purpose as the - canvas's bitmap. This content may be placed as content of the canvas - element. The contents of the canvas element, if any, are the element's fallback - content.

    - -
    - -

    In interactive visual media, if scripting is enabled for - the canvas element, and if support for canvas elements has been enabled, - then the canvas element represents embedded content - consisting of a dynamically created image, the element's bitmap.

    - -

    In non-interactive, static, visual media, if the canvas element has been - previously associated with a rendering context (e.g. if the page was viewed in an interactive - visual medium and is now being printed, or if some script that ran during the page layout process - painted on the element), then the canvas element represents - embedded content with the element's current bitmap and size. Otherwise, the element - represents its fallback content instead.

    - -

    In non-visual media, and in visual media if scripting is - disabled for the canvas element or if support for canvas elements - has been disabled, the canvas element represents its fallback - content instead.

    - - -

    When a canvas element represents embedded content, the - user can still focus descendants of the canvas element (in the fallback - content). When an element is focused, it is the target of keyboard interaction - events (even though the element itself is not visible). This allows authors to make an interactive - canvas keyboard-accessible: authors should have a one-to-one mapping of interactive regions to focusable areas in the fallback content. (Focus has no - effect on mouse interaction events.) [UIEVENTS]

    - -

    An element whose nearest canvas element ancestor is being rendered - and represents embedded content is an element that is being used as - relevant canvas fallback content.

    - -
    - -

    The canvas element has two attributes to control the size of the element's bitmap: - width and height. These attributes, when specified, must have - values that are valid non-negative integers. The rules for parsing non-negative integers must be used to obtain their - numeric values. If an attribute is missing, or if parsing its value returns an error, then the - default value must be used instead. The width - attribute defaults to 300, and the height attribute - defaults to 150.

    - -

    The intrinsic dimensions of the canvas element when it - represents embedded content are equal to the dimensions of the - element's bitmap.

    - -

    The user agent must use a square pixel density consisting of one pixel of image data per - coordinate space unit for the bitmaps of a canvas and its rendering contexts.

    - -

    A canvas element can be sized arbitrarily by a style sheet, its - bitmap is then subject to the 'object-fit' CSS property.

    - - - -
    - -

    The bitmaps of canvas elements, the bitmaps of ImageBitmap objects, - as well as some of the bitmaps of rendering contexts, such as those described in the sections on - the CanvasRenderingContext2D and ImageBitmapRenderingContext objects - below, have an origin-clean flag, which can be - set to true or false. Initially, when the canvas element or ImageBitmap - object is created, its bitmap's origin-clean - flag must be set to true.

    - -

    A canvas element can have a rendering context bound to it. Initially, it does not - have a bound rendering context. To keep track of whether it has a rendering context or not, and - what kind of rendering context it is, a canvas also has a canvas context mode, which is initially none but can be changed to either placeholder, 2d, bitmaprenderer, or webgl by algorithms defined in this specification.

    - -

    When its canvas context mode is none, a canvas element has no rendering context, - and its bitmap must be fully transparent black with an intrinsic width equal to the - numeric value of the element's width attribute and an - intrinsic height equal to the numeric value of the element's height attribute, those values being interpreted in CSS pixels, and being updated as the attributes are set, changed, or - removed.

    - -

    When its canvas context mode is placeholder, a canvas element has no - rendering context. It serves as a placeholder for an OffscreenCanvas object, and - the content of the canvas element is updated by calling the commit() method of the OffscreenCanvas - object's rendering context.

    - -

    When a canvas element represents embedded content, it provides a - paint source whose width is the element's intrinsic width, whose height - is the element's intrinsic height, and whose appearance is the element's bitmap.

    - -

    Whenever the width and height content attributes are set, removed, changed, or - redundantly set to the value they already have, then the user agent must perform the action - from the row of the following table that corresponds to the canvas element's context mode.

    - -
    -

    Context Mode

    -
    -

    Action

    - -
    -

    2d

    -
    -

    Follow the steps to set bitmap - dimensions to the numeric values of the width - and height content attributes.

    - -
    -

    webgl

    -
    -

    Follow the behavior defined in the WebGL specification. [WEBGL]

    - -
    -

    bitmaprenderer

    -
    -

    If the context's bitmap - mode is set to blank, - run the steps to set an ImageBitmapRenderingContext's output bitmap, - passing the canvas element's rendering context.

    - -
    -

    placeholder

    -
    -

    Do nothing.

    - -
    -

    none

    -
    -

    Do nothing.

    -
    - -

    The width and height IDL attributes must reflect the - respective content attributes of the same name, with the same defaults.

    - - - -
    - - -
    context = canvas . getContext(contextId [, ... ] )
    - -

    Returns an object that exposes an API for drawing on the canvas. The first argument - specifies the desired API, either "2d", "bitmaprenderer" or "webgl". Subsequent arguments are handled by that API.

    - -

    This specification defines the "2d" and "bitmaprenderer" contexts below. There is also a - specification that defines a "webgl" context. - [WEBGL]

    - -

    Returns null if the given context ID is not supported, or if the canvas has already been - initialized with another context type (e.g. trying to get a "2d" context after getting a "webgl" context).

    - -
    - - - -

    The getContext(contextId, - arguments...) method of the canvas element, when invoked, - must run the steps in the cell of the following table whose column header describes the - canvas element's canvas context - mode and whose row header describes the method's first argument.

    - -
    - none - 2d - bitmaprenderer - webgl - placeholder -
    "2d" - - - Follow the 2D context creation algorithm defined in the section below, passing - it the canvas element and the method's arguments..., to obtain a - CanvasRenderingContext2D object; if this does not throw an exception, then - set the canvas element's context - mode to 2d, and return the - CanvasRenderingContext2D object. - - - Return the same object as was returned the last time the method was invoked with this same - first argument. - - Return null. - - Return null. - - Throw an "InvalidStateError" DOMException. - -
    "bitmaprenderer" - - - Follow the ImageBitmapRenderingContext creation algorithm defined - in the section below, passing it the canvas element and the method's - arguments..., to obtain an ImageBitmapRenderingContext object; then - set the canvas element's context - mode to bitmaprenderer, and return the - ImageBitmapRenderingContext object. - - - Return null. - - Return the same object as was returned the last time the method was invoked with this same - first argument. - - Return null. - - Throw an "InvalidStateError" DOMException. - -
    "webgl", if the user agent supports the WebGL feature in its current configuration - - - Follow the instructions given in the WebGL specification's Context Creation section to - obtain either a WebGLRenderingContext or null; if the returned value is null, - then return null and abort these steps, otherwise, set the canvas element's - context mode to webgl, and return the WebGLRenderingContext - object [WEBGL] - - - Return null. - - Return null. - - Return the same object as was returned the last time the method was invoked with this same - first argument. - - Throw an "InvalidStateError" DOMException. - -
    An unsupported value* - - Return null. - - Return null. - - Return null. - - Return null. - - Throw an "InvalidStateError" DOMException. - -
    - -

    * For example, the "webgl" - value in the case of a user agent having exhausted the graphics hardware's abilities and having no - software fallback implementation.

    - -
    - - - -
    url = canvas . toDataURL( [ type [, quality ] ] )
    - -

    Returns a data: URL for the image in the - canvas.

    - -

    The first argument, if provided, controls the type of the image to be returned (e.g. PNG or - JPEG). The default is "image/png"; that type is also used if the given type isn't - supported. The second argument applies if the type is an image format that supports variable - quality (such as "image/jpeg"), and is a number in the range 0.0 to 1.0 inclusive - indicating the desired quality level for the resulting image.

    - -

    When trying to use types other than "image/png", authors can check if the image - was really returned in the requested format by checking to see if the returned string starts - with one of the exact strings "data:image/png," or "data:image/png;". If it does, the image is PNG, and thus the requested type was - not supported. (The one exception to this is if the canvas has either no height or no width, in - which case the result might simply be "data:,".)

    - -
    canvas . toBlob(callback [, type [, quality ] ] )
    - -

    Creates a Blob object representing a file containing the image in the canvas, - and invokes a callback with a handle to that object.

    - -

    The second argument, if provided, controls the type of the image to be returned (e.g. PNG or - JPEG). The default is "image/png"; that type is also used if the given type isn't - supported. The third argument applies if the type is an image format that supports variable - quality (such as "image/jpeg"), and is a number in the range 0.0 to 1.0 inclusive - indicating the desired quality level for the resulting image.

    - -
    canvas . transferControlToOffscreen()
    -

    Returns a newly created OffscreenCanvas object that uses the - canvas element as a placeholder. Once the canvas element has become a - placeholder for an OffscreenCanvas object, its intrinsic size can no longer be - changed, and it cannot have a rendering context. The content of the placeholder canvas is - updated by calling the commit() method of the - OffscreenCanvas object's rendering context. -

    -
    - - - -

    The toDataURL(type, - quality) method, when invoked, must run these steps:

    - -
    1. If this canvas element's bitmap's origin-clean flag is set to false, then throw a - "SecurityError" DOMException and abort these steps.

      - - -
    2. If this canvas element's bitmap has no pixels (i.e. either its horizontal - dimension or its vertical dimension is zero) then return the string "data:," and abort these steps. (This is the shortest data: URL; it represents the empty string in a text/plain resource.)

    3. Let file be a - serialization of this canvas element's bitmap as a file, passing - type and quality if they were given.

    4. If file is null then return "data:,".

    5. Return a data: URL representing - file. [RFC2397]

      - - - -
    - -

    The toBlob(callback, type, - quality) method, when invoked, must run these steps:

    - -
    1. If this canvas element's bitmap's origin-clean flag is set to false, then throw a - "SecurityError" DOMException and abort these steps.

      - - -
    2. -

      If this canvas element's bitmap has no pixels (i.e. either its horizontal - dimension or its vertical dimension is zero) then let result be null.

      - -

      Otherwise, let result be a Blob object representing a serialization of this canvas element's - bitmap as a file, passing type and quality if they were given. [FILEAPI]

      -
    3. Return, but continue running these steps in parallel.

    4. Queue a task to invoke - the BlobCallback callback with result as its argument. The - task source for this task is the - canvas blob serialization task - source.

    - -

    The transferControlToOffscreen() method, - when invoked, must run these steps:

    - -
    1. If this canvas element's context - mode is not set to none, throw an - "InvalidStateError" DOMException and abort these - steps.

    2. Let offscreenCanvas be a new OffscreenCanvas object with its - width and height equal to the values of the width - and height content attributes of this - canvas element.

    3. Set the placeholder canvas - element of offscreenCanvas to be a weak reference to this canvas - element.

    4. Set this canvas element's context - mode to placeholder.

    5. Return offscreenCanvas.

    - - - - - -
    4.12.5.1 The 2D rendering context
    - - - -
    typedef (HTMLImageElement or
    -         SVGImageElement) HTMLOrSVGImageElement;
    -
    -typedef (HTMLOrSVGImageElement or
    -         HTMLVideoElement or
    -         HTMLCanvasElement or
    -         ImageBitmap or
    -         OffscreenCanvas) CanvasImageSource;
    -
    -enum CanvasFillRule { "nonzero", "evenodd" };
    -
    -dictionary CanvasRenderingContext2DSettings {
    -  boolean alpha = true;
    -};
    -
    -enum ImageSmoothingQuality { "low", "medium", "high" };
    -
    -interface CanvasRenderingContext2D {
    -  // back-reference to the canvas
    -  readonly attribute HTMLCanvasElement canvas;
    -};
    -CanvasRenderingContext2D implements CanvasState;
    -CanvasRenderingContext2D implements CanvasTransform;
    -CanvasRenderingContext2D implements CanvasCompositing;
    -CanvasRenderingContext2D implements CanvasImageSmoothing;
    -CanvasRenderingContext2D implements CanvasFillStrokeStyles;
    -CanvasRenderingContext2D implements CanvasShadowStyles;
    -CanvasRenderingContext2D implements CanvasFilters;
    -CanvasRenderingContext2D implements CanvasRect;
    -CanvasRenderingContext2D implements CanvasDrawPath;
    -CanvasRenderingContext2D implements CanvasUserInterface;
    -CanvasRenderingContext2D implements CanvasText;
    -CanvasRenderingContext2D implements CanvasDrawImage;
    -CanvasRenderingContext2D implements CanvasImageData;
    -CanvasRenderingContext2D implements CanvasPathDrawingStyles;
    -CanvasRenderingContext2D implements CanvasTextDrawingStyles;
    -CanvasRenderingContext2D implements CanvasPath;
    -
    -[NoInterfaceObject, Exposed=(Window,Worker)]
    -interface CanvasState {
    -  // state
    -  void save(); // push state on state stack
    -  void restore(); // pop state stack and restore state
    -};
    -
    -[NoInterfaceObject, Exposed=(Window,Worker)]
    -interface CanvasTransform {
    -  // transformations (default transform is the identity matrix)
    -  void scale(unrestricted double x, unrestricted double y);
    -  void rotate(unrestricted double angle);
    -  void translate(unrestricted double x, unrestricted double y);
    -  void transform(unrestricted double a, unrestricted double b, unrestricted double c, unrestricted double d, unrestricted double e, unrestricted double f);
    -
    -  [NewObject] DOMMatrix getTransform();
    -  void setTransform(unrestricted double a, unrestricted double b, unrestricted double c, unrestricted double d, unrestricted double e, unrestricted double f);
    -  void setTransform(optional DOMMatrix2DInit transform);
    -  void resetTransform();
    -
    -};
    -
    -[NoInterfaceObject, Exposed=(Window,Worker)]
    -interface CanvasCompositing {
    -  // compositing
    -  attribute unrestricted double globalAlpha; // (default 1.0)
    -  attribute DOMString globalCompositeOperation; // (default source-over)
    -};
    -
    -[NoInterfaceObject, Exposed=(Window,Worker)]
    -interface CanvasImageSmoothing {
    -  // image smoothing
    -  attribute boolean imageSmoothingEnabled; // (default true)
    -  attribute ImageSmoothingQuality imageSmoothingQuality; // (default low)
    -
    -};
    -
    -[NoInterfaceObject, Exposed=(Window,Worker)]
    -interface CanvasFillStrokeStyles {
    -  // colors and styles (see also the CanvasPathDrawingStyles and CanvasTextDrawingStyles interfaces)
    -  attribute (DOMString or CanvasGradient or CanvasPattern) strokeStyle; // (default black)
    -  attribute (DOMString or CanvasGradient or CanvasPattern) fillStyle; // (default black)
    -  CanvasGradient createLinearGradient(double x0, double y0, double x1, double y1);
    -  CanvasGradient createRadialGradient(double x0, double y0, double r0, double x1, double y1, double r1);
    -  CanvasPattern? createPattern(CanvasImageSource image, [TreatNullAs=EmptyString] DOMString repetition);
    -
    -};
    -
    -[NoInterfaceObject, Exposed=(Window,Worker)]
    -interface CanvasShadowStyles {
    -  // shadows
    -  attribute unrestricted double shadowOffsetX; // (default 0)
    -  attribute unrestricted double shadowOffsetY; // (default 0)
    -  attribute unrestricted double shadowBlur; // (default 0)
    -  attribute DOMString shadowColor; // (default transparent black)
    -};
    -
    -[NoInterfaceObject, Exposed=(Window,Worker)]
    -interface CanvasFilters {
    -  // filters
    -  attribute DOMString filter; // (default "none")
    -};
    -
    -[NoInterfaceObject, Exposed=(Window,Worker)]
    -interface CanvasRect {
    -  // rects
    -  void clearRect(unrestricted double x, unrestricted double y, unrestricted double w, unrestricted double h);
    -  void fillRect(unrestricted double x, unrestricted double y, unrestricted double w, unrestricted double h);
    -  void strokeRect(unrestricted double x, unrestricted double y, unrestricted double w, unrestricted double h);
    -};
    -
    -[NoInterfaceObject, Exposed=(Window,Worker)]
    -interface CanvasDrawPath {
    -  // path API (see also CanvasPath)
    -  void beginPath();
    -  void fill(optional CanvasFillRule fillRule = "nonzero");
    -  void fill(Path2D path, optional CanvasFillRule fillRule = "nonzero");
    -  void stroke();
    -  void stroke(Path2D path);
    -  void clip(optional CanvasFillRule fillRule = "nonzero");
    -  void clip(Path2D path, optional CanvasFillRule fillRule = "nonzero");
    -  void resetClip();
    -  boolean isPointInPath(unrestricted double x, unrestricted double y, optional CanvasFillRule fillRule = "nonzero");
    -  boolean isPointInPath(Path2D path, unrestricted double x, unrestricted double y, optional CanvasFillRule fillRule = "nonzero");
    -  boolean isPointInStroke(unrestricted double x, unrestricted double y);
    -  boolean isPointInStroke(Path2D path, unrestricted double x, unrestricted double y);
    -};
    -
    -[Exposed=Window,
    - NoInterfaceObject]
    -interface CanvasUserInterface {
    -  void drawFocusIfNeeded(Element element);
    -  void drawFocusIfNeeded(Path2D path, Element element);
    -  void scrollPathIntoView();
    -  void scrollPathIntoView(Path2D path);
    -};
    -
    -[Exposed=Window,
    - NoInterfaceObject]
    -interface CanvasText {
    -  // text (see also the CanvasPathDrawingStyles and CanvasTextDrawingStyles interfaces)
    -  void fillText(DOMString text, unrestricted double x, unrestricted double y, optional unrestricted double maxWidth);
    -  void strokeText(DOMString text, unrestricted double x, unrestricted double y, optional unrestricted double maxWidth);
    -  TextMetrics measureText(DOMString text);
    -};
    -
    -[NoInterfaceObject, Exposed=(Window,Worker)]
    -interface CanvasDrawImage {
    -  // drawing images
    -  void drawImage(CanvasImageSource image, unrestricted double dx, unrestricted double dy);
    -  void drawImage(CanvasImageSource image, unrestricted double dx, unrestricted double dy, unrestricted double dw, unrestricted double dh);
    -  void drawImage(CanvasImageSource image, unrestricted double sx, unrestricted double sy, unrestricted double sw, unrestricted double sh, unrestricted double dx, unrestricted double dy, unrestricted double dw, unrestricted double dh);
    -};
    -
    -[NoInterfaceObject, Exposed=(Window,Worker)]
    -interface CanvasImageData {
    -  // pixel manipulation
    -  ImageData createImageData(long sw, long sh);
    -  ImageData createImageData(ImageData imagedata);
    -  ImageData getImageData(long sx, long sy, long sw, long sh);
    -  void putImageData(ImageData imagedata, long dx, long dy);
    -  void putImageData(ImageData imagedata, long dx, long dy, long dirtyX, long dirtyY, long dirtyWidth, long dirtyHeight);
    -};
    -
    -enum CanvasLineCap { "butt", "round", "square" };
    -enum CanvasLineJoin { "round", "bevel", "miter" };
    -enum CanvasTextAlign { "start", "end", "left", "right", "center" };
    -enum CanvasTextBaseline { "top", "hanging", "middle", "alphabetic", "ideographic", "bottom" };
    -enum CanvasDirection { "ltr", "rtl", "inherit" };
    -
    -[NoInterfaceObject, Exposed=(Window,Worker)]
    -interface CanvasPathDrawingStyles {
    -  // line caps/joins
    -  attribute unrestricted double lineWidth; // (default 1)
    -  attribute CanvasLineCap lineCap; // (default "butt")
    -  attribute CanvasLineJoin lineJoin; // (default "miter")
    -  attribute unrestricted double miterLimit; // (default 10)
    -
    -  // dashed lines
    -  void setLineDash(sequence<unrestricted double> segments); // default empty
    -  sequence<unrestricted double> getLineDash();
    -  attribute unrestricted double lineDashOffset;
    -};
    -
    -[Exposed=Window,
    - NoInterfaceObject]
    -interface CanvasTextDrawingStyles {
    -  // text
    -  attribute DOMString font; // (default 10px sans-serif)
    -  attribute CanvasTextAlign textAlign; // (default: "start")
    -  attribute CanvasTextBaseline textBaseline; // (default: "alphabetic")
    -  attribute CanvasDirection direction; // (default: "inherit")
    -};
    -
    -[NoInterfaceObject, Exposed=(Window,Worker)]
    -interface CanvasPath {
    -  // shared path API methods
    -  void closePath();
    -  void moveTo(unrestricted double x, unrestricted double y);
    -  void lineTo(unrestricted double x, unrestricted double y);
    -  void quadraticCurveTo(unrestricted double cpx, unrestricted double cpy, unrestricted double x, unrestricted double y);
    -  void bezierCurveTo(unrestricted double cp1x, unrestricted double cp1y, unrestricted double cp2x, unrestricted double cp2y, unrestricted double x, unrestricted double y);
    -  void arcTo(unrestricted double x1, unrestricted double y1, unrestricted double x2, unrestricted double y2, unrestricted double radius); 
    -  void arcTo(unrestricted double x1, unrestricted double y1, unrestricted double x2, unrestricted double y2, unrestricted double radiusX, unrestricted double radiusY, unrestricted double rotation); 
    -  void rect(unrestricted double x, unrestricted double y, unrestricted double w, unrestricted double h);
    -  void arc(unrestricted double x, unrestricted double y, unrestricted double radius, unrestricted double startAngle, unrestricted double endAngle, optional boolean anticlockwise = false); 
    -  void ellipse(unrestricted double x, unrestricted double y, unrestricted double radiusX, unrestricted double radiusY, unrestricted double rotation, unrestricted double startAngle, unrestricted double endAngle, optional boolean anticlockwise = false); 
    -};
    -
    -[Exposed=(Window,Worker)]
    -interface CanvasGradient {
    -  // opaque object
    -  void addColorStop(double offset, DOMString color);
    -};
    -
    -[Exposed=(Window,Worker)]
    -interface CanvasPattern {
    -  // opaque object
    -  void setTransform(optional DOMMatrix2DInit transform);
    -};
    -
    -[Exposed=Window]
    -interface TextMetrics {
    -  // x-direction
    -  readonly attribute double width; // advance width
    -  readonly attribute double actualBoundingBoxLeft;
    -  readonly attribute double actualBoundingBoxRight;
    -
    -  // y-direction
    -  readonly attribute double fontBoundingBoxAscent;
    -  readonly attribute double fontBoundingBoxDescent;
    -  readonly attribute double actualBoundingBoxAscent;
    -  readonly attribute double actualBoundingBoxDescent;
    -  readonly attribute double emHeightAscent;
    -  readonly attribute double emHeightDescent;
    -  readonly attribute double hangingBaseline;
    -  readonly attribute double alphabeticBaseline;
    -  readonly attribute double ideographicBaseline;
    -};
    -
    -[Constructor(unsigned long sw, unsigned long sh),
    - Constructor(Uint8ClampedArray data, unsigned long sw, optional unsigned long sh),
    - Exposed=(Window,Worker),
    - Serializable]
    -interface ImageData {
    -  readonly attribute unsigned long width;
    -  readonly attribute unsigned long height;
    -  readonly attribute Uint8ClampedArray data;
    -};
    -
    -[Constructor,
    - Constructor(Path2D path),
    - Constructor(sequence<Path2D> paths, optional CanvasFillRule fillRule = "nonzero"),
    - Constructor(DOMString d),
    - Exposed=(Window,Worker)]
    -interface Path2D {
    -  void addPath(Path2D path, optional DOMMatrix2DInit transform);
    -};
    -Path2D implements CanvasPath;
    - - - -

    To maintain compatibility with existing Web content, user agents need to - enumerate methods defined in CanvasUserInterface immediately after the stroke() method on CanvasRenderingContext2D - objects.

    - -
    context = canvas . getContext('2d' [, { [ alpha: false ] } ] )
    - -

    Returns a CanvasRenderingContext2D object that is permanently bound to a - particular canvas element.

    - -

    If the alpha setting is - provided and set to false, then the canvas is forced to always be opaque.

    - -
    context . canvas
    - -

    Returns the canvas element.

    - -
    - - - -

    A CanvasRenderingContext2D object has an output bitmap that - is initialized when the object is created.

    - - -

    The output bitmap has an origin-clean flag, which can be set to true or false. - Initially, when one of these bitmaps is created, its origin-clean flag must be set to true.

    - - -

    The CanvasRenderingContext2D object also has an alpha flag, which can be set to true or false. Initially, - when the context is created, its alpha flag must be - set to true. When a CanvasRenderingContext2D object has its alpha flag set to false, then its alpha channel must be - fixed to 1.0 (fully opaque) for all pixels, and attempts to change the alpha component of any - pixel must be silently ignored.

    - -

    Thus, the bitmap of such a context starts off as fully-opaque black instead of - fully-transparent black; clearRect() always - results in fully-opaque black pixels, every fourth byte from getImageData() is always 255, the putImageData() method effectively ignores every - fourth byte in its input, and so on. However, the alpha component of styles and images drawn - onto the canvas are still honoured up to the point where they would impact the output - bitmap's alpha channel; for instance, drawing a 50% transparent white square on a freshly - created output bitmap with its alpha - flag set to false will result in a fully-opaque gray square.

    - -
    - -

    The CanvasRenderingContext2D 2D rendering context represents a flat linear - Cartesian surface whose origin (0,0) is at the top left corner, with the coordinate space having - x values increasing when going right, and y values increasing when going - down. The x-coordinate of the right-most edge is equal to the width of the rendering - context's output bitmap in CSS pixels; similarly, the - y-coordinate of the bottom-most edge is equal to the height of the rendering context's - output bitmap in CSS pixels.

    - -

    The size of the coordinate space does not necessarily represent the size of the actual bitmaps - that the user agent will use internally or during rendering. On high-definition displays, for - instance, the user agent may internally use bitmaps with two device pixels per unit in the - coordinate space, so that the rendering remains at high quality throughout. Anti-aliasing can - similarly be implemented using over-sampling with bitmaps of a higher resolution than the final - image on the display.

    - -
    - -

    The 2D context creation algorithm, which is passed a target (a - canvas element) and optionally some arguments, consists of running the following - steps:

    - -
    1. If the algorithm was passed some arguments, then let arg be the first such - argument. Otherwise, let arg be undefined.

    2. Let settings be the result of coercing the arg context arguments for 2D.

    3. Create a new CanvasRenderingContext2D object.

    4. Initialize its canvas attribute to point to - target.

    5. Let the new CanvasRenderingContext2D object's output bitmap be - the same bitmap as target's bitmap (so that they are shared).

    6. Set bitmap dimensions to the - numeric values of target's width and - height content attributes.

    7. - -

      Process each of the members of settings as follows:

      - -
      alpha
      If false, then set the new CanvasRenderingContext2D object's alpha flag to false.
      - -
    8. Return the new CanvasRenderingContext2D object.

    - -
    - -
    - -

    When a user agent is required to coerce context arguments for 2D, it must run these - steps:

    - -
    1. Let input be the argument to coerce.

    2. Let jsval be the result of converting - input to a JavaScript value. (This can throw an exception.)

    3. Let dict be the result of converting - jsval to the dictionary type CanvasRenderingContext2DSettings. (This can - throw an exception.)

    4. Return dict.

    - -
    - -

    When the user agent is to set bitmap - dimensions to width and height, it must run these steps:

    - -
    1. Reset the rendering context to its default state.

    2. Resize the output bitmap to the new width and height - and clear it to fully transparent black.

    3. Let canvas be the canvas element to which the rendering - context's canvas attribute was initialized.

    4. If the numeric value of canvas's width - content attribute differs from width, then set canvas's width content attribute to the shortest possible string - representing width as a valid non-negative integer.

    5. If the numeric value of canvas's height - content attribute differs from height, then set canvas's height content attribute to the shortest possible string - representing height as a valid non-negative integer.

    +

    4.8.11 The canvas element

    + +
    Categories
    +
    Flow content.
    +
    Phrasing content.
    +
    Embedded content.
    +
    Contexts in which this element can be used:
    +
    Where embedded content is expected.
    +
    Content model:
    +
    Transparent.
    +
    Transparent, but with no interactive content descendants except for a elements, button elements, input elements whose type attribute are in the Checkbox or Radio Button states, and input elements that are buttons.
    +
    Content attributes:
    +
    Global attributes
    +
    width
    +
    height
    +
    DOM interface:
    +
    +
    interface HTMLCanvasElement : HTMLElement {
    +           attribute unsigned long width;
    +           attribute unsigned long height;
    +
    +  DOMString toDataURL(in optional DOMString type, in any... args);
    +  void toBlob(in FileCallback? callback, in optional DOMString type, in any... args);
    +
    +  object? getContext(in DOMString contextId, in any... args);
    +};
    +
    +

    The canvas element provides scripts with a + resolution-dependent bitmap canvas, which can be used for rendering + graphs, game graphics, or other visual images on the fly.

    + +

    Authors should not use the canvas element in a + document when a more suitable element is available. For example, it + is inappropriate to use a canvas element to render a + page heading: if the desired presentation of the heading is + graphically intense, it should be marked up using appropriate + elements (typically h1) and then styled using CSS and + supporting technologies such as XBL.

    + +

    When authors use the canvas element, they must also + provide content that, when presented to the user, conveys + essentially the same function or purpose as the bitmap canvas. This + content may be placed as content of the canvas + element. The contents of the canvas element, if any, + are the element's fallback content.

    + +

    In interactive visual media, if scripting is enabled for the + canvas element, and if support for canvas + elements has been enabled, the canvas element + represents embedded content consisting of + a dynamically created image.

    + +

    In non-interactive, static, visual media, if the + canvas element has been previously painted on (e.g. if + the page was viewed in an interactive visual medium and is now being + printed, or if some script that ran during the page layout process + painted on the element), then the canvas element + represents embedded content with the + current image and size. Otherwise, the element represents its + fallback content instead.

    + +

    In non-visual media, and in visual media if scripting is disabled for the + canvas element or if support for canvas + elements has been disabled, the canvas element + represents its fallback content + instead.

    + + +

    When a canvas element represents + embedded content, the user can still focus descendants + of the canvas element (in the fallback + content). When an element is focused, it is the target of + keyboard interaction events (even though the element itself is not + visible). This allows authors to make an interactive canvas + keyboard-accessible: authors should have a one-to-one mapping of + interactive regions to focusable elements in the fallback + content. (Focus has no effect on mouse interaction + events.) [DOMEVENTS]

    + +

    The canvas element has two attributes to control the + size of the coordinate space: width and height. These + attributes, when specified, must have values that are valid non-negative + integers. The rules for parsing + non-negative integers must be used to obtain their numeric + values. If an attribute is missing, or if parsing its value returns + an error, then the default value must be used instead. The + width attribute defaults to + 300, and the height + attribute defaults to 150.

    + +

    The intrinsic dimensions of the canvas element equal + the size of the coordinate space, with the numbers interpreted in + CSS pixels. However, the element can be sized arbitrarily by a + style sheet. During rendering, the image is scaled to fit this layout + size.

    + +
    + +

    The size of the coordinate space does not necessarily represent + the size of the actual bitmap that the user agent will use + internally or during rendering. On high-definition displays, for + instance, the user agent may internally use a bitmap with two device + pixels per unit in the coordinate space, so that the rendering + remains at high quality throughout.

    + +

    When the canvas element is created, and subsequently + whenever the width and height attributes are set (whether + to a new value or to the previous value), the bitmap and any + associated contexts must be cleared back to their initial state and + reinitialized with the newly specified coordinate space + dimensions.

    + +

    When the canvas is initialized, its bitmap must be cleared to + transparent black.

    + +

    The width and + height IDL + attributes must reflect the respective content + attributes of the same name, with the same defaults.

    + +

    Only one square appears to be drawn in the following example:

    -
    // canvas is a reference to a <canvas> element
    -var context = canvas.getContext('2d');
    -context.fillRect(0,0,50,50);
    -canvas.setAttribute('width', '300'); // clears the canvas
    -context.fillRect(0,100,50,50);
    -canvas.width = canvas.width; // clears the canvas
    -context.fillRect(100,0,50,50); // only this square remains
    +
      // canvas is a reference to a <canvas> element
    +  var context = canvas.getContext('2d');
    +  context.fillRect(0,0,50,50);
    +  canvas.setAttribute('width', '300'); // clears the canvas
    +  context.fillRect(0,100,50,50);
    +  canvas.width = canvas.width; // clears the canvas
    +  context.fillRect(100,0,50,50); // only this square remains
    -
    +
    context = canvas . getContext(contextId [, ... ])
    -

    When the user agent is to run the unbinding - steps for a rendering context, it must run these steps:

    +
    -
    1. Reset the rendering context to its default state.

    2. Clear the CanvasRenderingContext2D object's output bitmap to a - transparent black.

    3. Set the CanvasRenderingContext2D object's origin-clean flag to true.

    4. Let the CanvasRenderingContext2D object have no output - bitmap.

    +

    Returns an object that exposes an API for drawing on the + canvas. The first argument specifies the desired API. Subsequent + arguments are handled by that API.

    -

    When the user agent is to run the binding - steps to bind the rendering context to the canvas element target, it - must run these steps:

    + -
    1. Reset the rendering context to its default state.

    2. Resize the CanvasRenderingContext2D object's output bitmap to - the dimensions of target's bitmap and clear it to fully transparent black.

    3. Set the CanvasRenderingContext2D object's origin-clean flag to true.

    4. Let the CanvasRenderingContext2D object's output bitmap be target's bitmap.

    +

    This specification defines the "2d" context below. There is also + a specification that defines a "webgl" context. [WEBGL]

    -
    + -

    The canvas attribute must return the - value it was initialized to when the object was created.

    +

    The list of defined contexts is given on the WHATWG Wiki + CanvasContexts page. [WHATWGWIKI] -


    +

    Returns null if the given context ID is not supported or if the + canvas has already been initialized with some other (incompatible) + context type (e.g. trying to get a "2d" context after getting a + "webgl" context).

    -

    Whenever the CSS value currentColor is used as a color in the CanvasRenderingContext2D - API, the computed value of the currentColor keyword is - the computed value of the 'color' property on the canvas - element at the time that the color is specified (e.g. when the appropriate attribute is set, or - when the method is called; not when the color is rendered or otherwise used). If the computed - value of the 'color' property is undefined for a particular case (e.g. because the element is - not in a document), then the computed value of the 'color' property - for the purposes of determining the computed value of the currentColor - keyword is fully opaque black. [CSSCOLOR]

    +
    -

    In the case of addColorStop() on - CanvasGradient, the "computed value of the 'color' - property" for the purposes of determining the computed value of the currentColor keyword is always fully opaque black (there is no associated - element). [CSSCOLOR]

    +
    -

    This is because CanvasGradient objects are - canvas-neutral — a CanvasGradient object created by one - canvas can be used by another, and there is therefore no way to know which is the - "element in question" at the time that the color is specified.

    - -

    Similar concerns exist with font-related properties; the rules for those are - described in detail in the relevant section below.

    - - - -
    - -

    The CanvasFillRule enumeration is used to select the fill rule - algorithm by which to determine if a point is inside or outside a path.

    - -

    The value "nonzero" value - indicates the non-zero winding rule, wherein - - a point is considered to be outside a shape if the number of times a half-infinite straight - line drawn from that point crosses the shape's path going in one direction is equal to the - number of times it crosses the path going in the other direction. - -

    +

    A canvas element can have a primary + context, which is the first context to have been obtained for + that element. When created, a canvas element must not + have a primary context.

    -

    The "evenodd" value indicates - the even-odd rule, wherein +

    The getContext(contextId, args...) + method of the canvas element, when invoked, must run + the following steps:

    - a point is considered to be outside a shape if the number of times a half-infinite straight - line drawn from that point crosses the shape's path is even. +
    1. Let contextId be the first argument to + the method.

    2. -

      +
    3. -

      If a point is not outside a shape, it is inside the shape.

      +

      If contextId is not the name of a context + supported by the user agent, return null and abort these + steps.

      + +

      An example of this would be a user agent that + theoretically supports the "webgl" 3D context, in the case + where the platform does not have hardware support for OpenGL and + the user agent does not have a software OpenGL implementation. + Despite the user agent recognising the "webgl" name, it would return + null at this step because that context is not, in practice, + supported at the time of the call.

      + +
    4. + +
    5. If the element has a primary context and that + context's entry in the WHATWG Wiki + CanvasContexts page does not list contextId + as a context with which it is compatible, return null and abort + these steps. [WHATWGWIKI]

    6. + +
    7. If the element does not have a primary context, + let the element's primary context be contextId.

    8. + +
    9. If the getContext() method has + already been invoked on this element for the same contextId, return the same object as was returned + that time, and abort these steps. The additional arguments are + ignored.

    10. + +
    11. Return a new object for contextId, as defined by the specification + given for contextId's entry in the WHATWG Wiki + CanvasContexts page. [WHATWGWIKI]

    12. + +

    New context types may be registered in the WHATWG Wiki + CanvasContexts page. [WHATWGWIKI]

    + +

    Anyone is free to edit the WHATWG Wiki CanvasContexts page at any + time to add a new context type. These new context types must be + specified with the following information:

    + +
    Keyword
    + +

    The value of contextID that will return + the object for the new API.

    -
    +
    Specification
    -

    The ImageSmoothingQuality enumeration is used to express a preference for the - interpolation quality to use when smoothing images.

    - -

    The "low" value - indicates a preference for a low level of image interpolation quality. Low-quality image - interpolation may be more computationally efficient than higher settings.

    - -

    The "medium" value - indicates a preference for a medium level of image interpolation quality.

    - -

    The "high" value - indicates a preference for a high level of image interpolation quality. High-quality image - interpolation may be more computationally expensive than lower settings.

    - -

    Bilinear scaling is an example of a relatively fast, lower-quality image-smoothing - algorithm. Bicubic or Lanczos scaling are examples of image-smoothing algorithms that produce - higher-quality output. This specification does not mandate that specific interpolation algorithms - be used.

    +

    A link to a formal specification of the context type's + API. It could be another page on the Wiki, or a link to an external + page. If the type does not have a formal specification, an informal + description can be substituted until such time as a formal + specification is available.

    -
    4.12.5.1.1 Implementation notes
    +
    Compatible with
    -

    This section is non-normative.

    +

    The list of context types that are compatible with this one + (i.e. that operate on the same underlying bitmap). This list must + be transitive and symmetric; if one context type is defined as + compatible with another, then all types it is compatible with must + be compatible with all types the other is compatible with.

    -

    The output bitmap, when it is not directly displayed by the user agent, - implementations can, instead of updating this bitmap, merely remember the sequence of drawing - operations that have been applied to it until such time as the bitmap's actual data is needed - (for example because of a call to drawImage(), or - the createImageBitmap() factory method). In many - cases, this will be more memory efficient.

    +

    Vendors may also define experimental contexts using the syntax + vendorname-context, for example, + moz-3d. Such contexts should be registered in the + WHATWG Wiki CanvasContexts page.

    -

    The bitmap of a canvas element is the one bitmap that's pretty much always going - to be needed in practice. The output bitmap of a rendering context, when it has one, - is always just an alias to a canvas element's bitmap.

    +
    -

    Additional bitmaps are sometimes needed, e.g. to enable fast drawing when the canvas is being - painted at a different size than its intrinsic size, - or to enable double buffering so that graphics updates, like page scrolling for example, can be - processed concurrently while canvas draw commands are being executed.

    +
    url = canvas . toDataURL( [ type, ... ])
    -
    4.12.5.1.2 The canvas state
    +
    -

    Objects that implement the CanvasState interface maintain a stack of drawing - states. Drawing states consist of:

    +

    Returns a data: URL for the image in the canvas.

    - +

    The first argument, if provided, controls the type of the image + to be returned (e.g. PNG or JPEG). The default is image/png; that type is also used if the given + type isn't supported. The other arguments are specific to the + type, and control the way that the image is generated, as given in + the table below.

    -

    The current default path and the rendering context's bitmaps are not - part of the drawing state. The current default path is persistent, and can only be - reset using the beginPath() method. The bitmaps - depend on whether and how the rendering context is bound to a canvas element.

    +

    When trying to use types other than "image/png", + authors can check if the image was really returned in the + requested format by checking to see if the returned string starts + with one of the exact strings "data:image/png," or "data:image/png;". If it does, the image is PNG, + and thus the requested type was not supported. (The one exception + to this is if the canvas has either no height or no width, in + which case the result might simply be "data:,".)

    -
    context . save()
    +
    + +
    canvas . toBlob(callback [, type, ... ])
    + +
    + +

    Creates a Blob object representing a file + containing the image in the canvas, and invokes a callback with a + handle to that object.

    + +

    The second argument, if provided, controls the type of the + image to be returned (e.g. PNG or JPEG). The default is image/png; that type is also used if the given + type isn't supported. The other arguments are specific to the + type, and control the way that the image is generated, as given in + the table below.

    + +
    + +
    + +

    The toDataURL() method + must run the following steps:

    + +
    1. If the canvas has no pixels (i.e. either its horizontal + dimension or its vertical dimension is zero) then return the string + "data:," and abort these steps. (This is the + shortest data: + URL; it represents the empty string in a text/plain resource.)

    2. + +
    3. Let file be a serialization of the + image as a file, using the method's arguments (if any) as + the arguments.

    4. + +
    5. Return a data: URL representing file. [RFC2397]

      + + + +

    The toBlob() method + must run the following steps:

    + +
    1. Let callback be the first + argument.

    2. + +
    3. Let arguments be the second and + subsequent arguments to the method, if any.

    4. + +
    5. Let file be a serialization of the + image as a file, using arguments.

    6. + +
    7. Return, but continue running these steps + asynchronously.

    8. + +
    9. If callback is null, abort these + steps.

    10. + +
    11. Queue a task to invoke the + FileCallback callback with a + Blob object representing file as + its argument. The task source for this task is the + canvas blob serialization task source. [FILESYSTEMAPI] [FILEAPI]

    12. + +

    When a user agent is to create a serialization of the image + as a file, optionally with some given arguments, it must create an image file in the format + given by the first value of arguments, or, if + there are no arguments, in the PNG format. [PNG]

    + +

    If arguments is not empty, the first value + must be interpreted as a MIME type + giving the format to use. If the type has any parameters, it must be + treated as not supported.

    + +

    For example, the value "image/png" would + mean to generate a PNG image, the value "image/jpeg" + would mean to generate a JPEG image, and the value + "image/svg+xml" would mean to generate an SVG image + (which would probably require that the implementation actually keep + enough information to reliably render an SVG image from the canvas).

    + +

    User agents must support PNG ("image/png"). User + agents may support other types. If the user agent does not support + the requested type, it must create the file using the PNG format. [PNG]

    + +

    User agents must convert the provided type to ASCII lowercase + before establishing if they support that type.

    + +

    For image types that do not support an alpha channel, the + serialized image must be the canvas image composited onto a solid + black background using the source-over operator.

    + +

    If the first argument in arguments gives a + type corresponding to one of the types given in the first column of + the following table, and the user agent supports that type, then the + subsequent arguments, if any, must be treated as described in the + second cell of that row.

    + +
    + +
    Type Other arguments Reference +
    image/jpeg + The second argument, if it is a + number in the range 0.0 to 1.0 inclusive, must + be treated as the desired quality level. If it is not a number or is outside that range, the + user agent must use its default value, as if the argument had + been omitted. + [JPEG] +
    + +

    For the purposes of these rules, an argument is considered to be + a number if it is converted to an IDL double value by the rules for + handling arguments of type any in the Web IDL + specification. [WEBIDL]

    + +

    Other arguments must be ignored and must not cause the user agent + to raise an exception. A future version of this specification will + probably define other parameters to be passed to these methods to + allow authors to more carefully control compression settings, image + metadata, etc.

    + +
    + + + +
    + +
    4.8.11.1 The 2D context
    + + + + + +

    This specification defines the 2d context type, whose + API is implemented using the CanvasRenderingContext2D + interface.

    + +
    + +

    When the getContext() + method of a canvas element is to return a new object for the contextId 2d, the user agent must return a + new CanvasRenderingContext2D object. Any additional + arguments are ignored.

    + +
    + +

    The 2D context represents a flat Cartesian surface whose origin + (0,0) is at the top left corner, with the coordinate space having + x values increasing when going right, and y values increasing when going down.

    + +
    interface CanvasRenderingContext2D {
    +
    +  // back-reference to the canvas
    +  readonly attribute HTMLCanvasElement canvas;
    +
    +  // state
    +  void save(); // push state on state stack
    +  void restore(); // pop state stack and restore state
    +
    +  // transformations (default transform is the identity matrix)
    +  void scale(in double x, in double y);
    +  void rotate(in double angle);
    +  void translate(in double x, in double y);
    +  void transform(in double a, in double b, in double c, in double d, in double e, in double f);
    +  void setTransform(in double a, in double b, in double c, in double d, in double e, in double f);
    +
    +  // compositing
    +           attribute double globalAlpha; // (default 1.0)
    +           attribute DOMString globalCompositeOperation; // (default source-over)
    +
    +  // colors and styles
    +           attribute any strokeStyle; // (default black)
    +           attribute any fillStyle; // (default black)
    +  CanvasGradient createLinearGradient(in double x0, in double y0, in double x1, in double y1);
    +  CanvasGradient createRadialGradient(in double x0, in double y0, in double r0, in double x1, in double y1, in double r1);
    +  CanvasPattern createPattern(in HTMLImageElement image, in DOMString repetition);
    +  CanvasPattern createPattern(in HTMLCanvasElement image, in DOMString repetition);
    +  CanvasPattern createPattern(in HTMLVideoElement image, in DOMString repetition);
    +
    +  // line caps/joins
    +           attribute double lineWidth; // (default 1)
    +           attribute DOMString lineCap; // "butt", "round", "square" (default "butt")
    +           attribute DOMString lineJoin; // "round", "bevel", "miter" (default "miter")
    +           attribute double miterLimit; // (default 10)
    +
    +  // shadows
    +           attribute double shadowOffsetX; // (default 0)
    +           attribute double shadowOffsetY; // (default 0)
    +           attribute double shadowBlur; // (default 0)
    +           attribute DOMString shadowColor; // (default transparent black)
    +
    +  // rects
    +  void clearRect(in double x, in double y, in double w, in double h);
    +  void fillRect(in double x, in double y, in double w, in double h);
    +  void strokeRect(in double x, in double y, in double w, in double h);
    +
    +  // path API
    +  void beginPath();
    +  void closePath();
    +  void moveTo(in double x, in double y);
    +  void lineTo(in double x, in double y);
    +  void quadraticCurveTo(in double cpx, in double cpy, in double x, in double y);
    +  void bezierCurveTo(in double cp1x, in double cp1y, in double cp2x, in double cp2y, in double x, in double y);
    +  void arcTo(in double x1, in double y1, in double x2, in double y2, in double radius);
    +  void rect(in double x, in double y, in double w, in double h);
    +  void arc(in double x, in double y, in double radius, in double startAngle, in double endAngle, in optional boolean anticlockwise);
    +  void fill();
    +  void stroke();
    +  void drawSystemFocusRing(in Element element);
    +  boolean drawCustomFocusRing(in Element element);
    +  void scrollPathIntoView();
    +  void clip();
    +  boolean isPointInPath(in double x, in double y);
    +
    +  // text
    +           attribute DOMString font; // (default 10px sans-serif)
    +           attribute DOMString textAlign; // "start", "end", "left", "right", "center" (default: "start")
    +           attribute DOMString textBaseline; // "top", "hanging", "middle", "alphabetic", "ideographic", "bottom" (default: "alphabetic")
    +  void fillText(in DOMString text, in double x, in double y, in optional double maxWidth);
    +  void strokeText(in DOMString text, in double x, in double y, in optional double maxWidth);
    +  TextMetrics measureText(in DOMString text);
    +
    +  // drawing images
    +  void drawImage(in HTMLImageElement image, in double dx, in double dy);
    +  void drawImage(in HTMLImageElement image, in double dx, in double dy, in double dw, in double dh);
    +  void drawImage(in HTMLImageElement image, in double sx, in double sy, in double sw, in double sh, in double dx, in double dy, in double dw, in double dh);
    +  void drawImage(in HTMLCanvasElement image, in double dx, in double dy);
    +  void drawImage(in HTMLCanvasElement image, in double dx, in double dy, in double dw, in double dh);
    +  void drawImage(in HTMLCanvasElement image, in double sx, in double sy, in double sw, in double sh, in double dx, in double dy, in double dw, in double dh);
    +  void drawImage(in HTMLVideoElement image, in double dx, in double dy);
    +  void drawImage(in HTMLVideoElement image, in double dx, in double dy, in double dw, in double dh);
    +  void drawImage(in HTMLVideoElement image, in double sx, in double sy, in double sw, in double sh, in double dx, in double dy, in double dw, in double dh);
    +
    +  // pixel manipulation
    +  ImageData createImageData(in double sw, in double sh);
    +  ImageData createImageData(in ImageData imagedata);
    +  ImageData getImageData(in double sx, in double sy, in double sw, in double sh);
    +  void putImageData(in ImageData imagedata, in double dx, in double dy);
    +  void putImageData(in ImageData imagedata, in double dx, in double dy, in double dirtyX, in double dirtyY, in double dirtyWidth, in double dirtyHeight);
    +};
    +
    +interface CanvasGradient {
    +  // opaque object
    +  void addColorStop(in double offset, in DOMString color);
    +};
    +
    +interface CanvasPattern {
    +  // opaque object
    +};
    +
    +interface TextMetrics {
    +  readonly attribute double width;
    +};
    +
    +interface ImageData {
    +  readonly attribute unsigned long width;
    +  readonly attribute unsigned long height;
    +  readonly attribute CanvasPixelArray data;
    +};
    +
    +interface CanvasPixelArray {
    +  readonly attribute unsigned long length;
    +  getter octet (in unsigned long index);
    +  setter void (in unsigned long index, [Clamp] in octet value);
    +};
    + +
    context . canvas
    + +
    + +

    Returns the canvas element.

    + +
    + +
    + +

    The canvas + attribute must return the canvas element that the + context paints on.

    + +

    Except where otherwise specified, for the 2D context interface, + any method call with a numeric argument whose value is infinite or a + NaN value must be ignored.

    + + + +

    Whenever the CSS value currentColor is used + as a color in this API, the "computed value of the 'color' property" + for the purposes of determining the computed value of the currentColor keyword is the computed value of the + 'color' property on the element in question at the time that the + color is specified (e.g. when the appropriate attribute is set, or + when the method is called; not when the color is rendered or + otherwise used). If the computed value of the 'color' property is + undefined for a particular case (e.g. because the element is not + in a Document), then the "computed value + of the 'color' property" for the purposes of determining the + computed value of the currentColor keyword is + fully opaque black. [CSSCOLOR]

    + +

    In the case of addColorStop() on + CanvasGradient, the "computed value of the 'color' + property" for the purposes of determining the computed value of the + currentColor keyword is always fully opaque + black (there is no associated element). [CSSCOLOR]

    + +

    This is because CanvasGradient objects + are canvas-neutral — a + CanvasGradient object created by one + canvas can be used by another, and there is therefore + no way to know which is the "element in question" at the time that + the color is specified.

    + +
    + + + +
    4.8.11.1.1 The canvas state
    + +

    Each context maintains a stack of drawing states. Drawing states consist of:

    + +

    The current path and the current bitmap are not part + of the drawing state. The current path is persistent, and can only + be reset using the beginPath() method. The + current bitmap is a property of the canvas, not the context.

    + +
    context . save()
    + +

    Pushes the current state onto the stack.

    -
    context . restore()
    +
    + +
    context . restore()
    + +

    Pops the top state on the stack, restoring the context to that state.

    -
    - - - -

    The save() method, when invoked, must push - a copy of the current drawing state onto the drawing state stack.

    - -

    The restore() method, when invoked, - must pop the top entry in the drawing state stack, and reset the drawing state it describes. If - there is no saved state, then the method must do nothing.

    - -

    When the user agent is to reset the rendering context to its default state, it must - clear the drawing state stack and everything that drawing state consists of to - initial values.

    - - - - - - -
    4.12.5.1.3 Line styles
    - -
    context . lineWidth [ = value ]
    styles . lineWidth [ = value ]
    - -

    Returns the current line width.

    - -

    Can be set, to change the line width. Values that are not finite values greater than zero are - ignored.

    - -
    context . lineCap [ = value ]
    styles . lineCap [ = value ]
    - -

    Returns the current line cap style.

    - -

    Can be set, to change the line cap style.

    - -

    The possible line cap styles are "butt", "round", and "square". Other values are ignored.

    - -
    context . lineJoin [ = value ]
    styles . lineJoin [ = value ]
    - -

    Returns the current line join style.

    - -

    Can be set, to change the line join style.

    - -

    The possible line join styles are "bevel", "round", and "miter". Other values are ignored.

    - -
    context . miterLimit [ = value ]
    styles . miterLimit [ = value ]
    - -

    Returns the current miter limit ratio.

    - -

    Can be set, to change the miter limit ratio. Values that are not finite values greater than - zero are ignored.

    - -
    context . setLineDash(segments)
    styles . setLineDash(segments)
    - -

    Sets the current line dash pattern (as used when stroking). The argument is a list of - distances for which to alternately have the line on and the line off.

    - -
    segments = context . getLineDash()
    segments = styles . getLineDash()
    - -

    Returns a copy of the current line dash pattern. The array returned will always have an even - number of entries (i.e. the pattern is normalized).

    - -
    context . lineDashOffset
    styles . lineDashOffset
    - -

    Returns the phase offset (in the same units as the line dash pattern).

    - -

    Can be set, to change the phase offset. Values that are not finite values are ignored.

    - -
    - - - -

    Objects that implement the CanvasPathDrawingStyles interface have attributes and - methods (defined in this section) that control how lines are treated by the object.

    - -

    The lineWidth attribute gives the - width of lines, in coordinate space units. On getting, it must return the current value. On - setting, zero, negative, infinite, and NaN values must be ignored, leaving the value unchanged; - other values must change the current value to the new value.

    - -

    When the object implementing the CanvasPathDrawingStyles interface is created, the - lineWidth attribute must initially have the value - 1.0.

    - -
    - -

    The lineCap attribute defines the type - of endings that UAs will place on the end of lines. The three valid values are "butt", "round", and "square".

    - -

    On getting, it must return the current value. On setting, the current value must be changed - to the new value.

    - -

    When the object implementing the CanvasPathDrawingStyles interface is created, the - lineCap attribute must initially have the value - "butt".

    - -
    - -

    The lineJoin attribute defines the type - of corners that UAs will place where two lines meet. The three valid values are - "bevel", "round", and "miter".

    - -

    On getting, it must return the current value. On setting, the current value must be changed - to the new value.

    - -

    When the object implementing the CanvasPathDrawingStyles interface is created, the - lineJoin attribute must initially have the value - "miter".

    - -
    - -

    When the lineJoin attribute has the value "miter", strokes use the miter limit ratio to decide how to render joins. The - miter limit ratio can be explicitly set using the miterLimit attribute. On getting, it must return - the current value. On setting, zero, negative, infinite, and NaN values must be ignored, leaving - the value unchanged; other values must change the current value to the new value.

    - - -

    When the object implementing the CanvasPathDrawingStyles interface is created, the - miterLimit attribute must initially have the value - 10.0.

    - -
    - -

    Each CanvasPathDrawingStyles object has a dash list, which is either - empty or consists of an even number of non-negative numbers. Initially, the dash list - must be empty.

    - -

    The setLineDash() method, when - invoked, must run these steps:

    - -
    1. Let a be the argument.

    2. If any value in a is not finite (e.g. an Infinity or a NaN value), or - if any value is negative (less than zero), then abort these steps (without throwing an exception; - user agents could show a message on a developer console, though, as that would be helpful for - debugging).

    3. If the number of elements in a is odd, then let a - be the concatenation of two copies of a.

    4. Let the object's dash list be a.

    - -

    When the getLineDash() method is - invoked, it must return a sequence whose values are the values of the object's dash - list, in the same order.

    - -

    It is sometimes useful to change the "phase" of the dash pattern, e.g. to achieve a "marching - ants" effect. The phase can be set using the lineDashOffset attribute. On getting, it must - return the current value. On setting, infinite and NaN values must be ignored, leaving the value - unchanged; other values must change the current value to the new value.

    - -

    When the object implementing the CanvasPathDrawingStyles interface is created, the - lineDashOffset attribute must initially have - the value 0.0.

    - -
    - -

    When a user agent is to trace a path, given an object style - that implements the CanvasPathDrawingStyles interface, it must run the following - algorithm. This algorithm returns a new path.

    - -
    1. Let path be a copy of the path being traced.

    2. Prune all zero-length line segments from path.

    3. Remove from path any subpaths containing no lines (i.e. subpaths with - just one point).

    4. Replace each point in each subpath of path other than the first point - and the last point of each subpath by a join that joins the line leading to that point to - the line leading out of that point, such that the subpaths all consist of two points (a starting - point with a line leading out of it, and an ending point with a line leading into it), one or - more lines (connecting the points and the joins), and zero or more joins (each connecting one - line to another), connected together such that each subpath is a series of one or more lines with - a join between each one and a point on each end.

    5. Add a straight closing line to each closed subpath in path connecting - the last point and the first point of that subpath; change the last point to a join (from the - previously last line to the newly added closing line), and change the first point to a join (from - the newly added closing line to the first line).

      - -
    6. If the styles dash list is empty, then jump to the step - labeled convert.

    7. Let pattern width be the concatenation of all the entries of the styles dash list, in coordinate space units.

      - -
    8. For each subpath subpath in path, run the - following substeps. These substeps mutate the subpaths in path in - vivo.

      - -
      1. Let subpath width be the length of all the lines of subpath, in coordinate space units.

        - -
      2. Let offset be the value of the styles lineDashOffset, in coordinate space - units.

      3. - -

        While offset is greater than pattern width, - decrement it by pattern width.

        - -

        While offset is less than zero, increment it by pattern - width.

        - -
      4. Define L to be a linear coordinate line defined along all lines in - subpath, such that the start of the first line in the subpath is defined - as coordinate 0, and the end of the last line in the subpath is defined as coordinate subpath width.

      5. Let position be zero minus offset.

      6. Let index be 0.

      7. Let current state be off (the other states being on - and zero-on).

      8. Dash on: Let segment length be - the value of the styles dash - list's indexth entry.

      9. Increment position by segment length.

      10. If position is greater than subpath width, - then end these substeps for this subpath and start them again for the next subpath; if there - are no more subpaths, then jump to the step labeled convert instead.

      11. If segment length is non-zero, then let current state be - on.

      12. Increment index by one.

      13. Dash off: Let segment - length be the value of the styles dash list's indexth entry.

      14. Let start be the offset position on L.

      15. Increment position by segment length.

      16. If position is less than zero, then jump to the step labeled - post-cut.

      17. If start is less than zero, then let start be - zero.

      18. If position is greater than subpath width, - then let end be the offset subpath width on L. Otherwise, let end be the offset position on L.

      19. - -

        Jump to the first appropriate step:

        - -
        If segment length is zero and current state is - off
        - -

        Do nothing, just continue to the next step.

        - -
        If current state is off
        - -

        Cut the line on which end finds itself short at end and place a point there, cutting the subpath that it was in in two; - remove all line segments, joins, points, and subpaths that are between start and end; and finally place a single point at start with no lines connecting to it.

        - -

        The point has a directionality for the purposes of drawing line caps (see below). - The directionality is the direction that the original line had at that point (i.e. when L was defined above).

        - -
        Otherwise
        - -

        Cut the line on which start finds itself into two at start and place a point there, cutting the subpath that it was in in two, and - similarly cut the line on which end finds itself short at end and place a point there, cutting the subpath that it was in in - two, and then remove all line segments, joins, points, and subpaths that are between start and end.

        - -

        If start and end are the same point, then this - results in just the line being cut in two and two points being inserted there, with nothing - being removed, unless a join also happens to be at that point, in which case the join must - be removed.

        - -
        - -
      20. Post-cut: If position is greater than subpath width, then jump to the step labeled convert.

      21. If segment length is greater than zero, then let - positioned-at-on-dash be false.

      22. Increment index by one. If it is equal to the number of entries in - the styles dash list, then let index be - 0.

      23. Return to the step labeled dash on.

      - -
    9. - -

      Convert: This is the step that converts the path to a new path that represents its - stroke.

      - -

      Create a new path that describes the edge of the areas - that would be covered if a straight line of length equal to the styles - lineWidth was swept along each subpath in path while being kept at an angle such that the line is orthogonal to the path - being swept, replacing each point with the end cap necessary to satisfy the styles lineCap attribute as - described previously and elaborated below, and replacing each join with the join necessary to - satisfy the styles lineJoin - type, as defined below.

      - -

      Caps: Each point has a flat edge perpendicular to the direction of the line - coming out of it. This is then augmented according to the value of the styles lineCap. The "butt" value means that no additional line cap is added. The "round" value means that a semi-circle with the diameter equal to the styles lineWidth width must - additionally be placed on to the line coming out of each point. The "square" value means that a rectangle with the length of the styles lineWidth width and the - width of half the styles lineWidth width, placed flat against the edge - perpendicular to the direction of the line coming out of the point, must be added at each - point.

      - -

      Points with no lines coming out of them must have two caps placed back-to-back as if it was - really two points connected to each other by an infinitesimally short straight line in the - direction of the point's directionality (as defined above).

      - -

      Joins: In addition to the point where a join occurs, two additional points - are relevant to each join, one for each line: the two corners found half the line width away - from the join point, one perpendicular to each line, each on the side furthest from the other - line.

      - -

      A triangle connecting these two opposite corners with a straight line, with the third point - of the triangle being the join point, must be added at all joins. The lineJoin attribute controls whether anything else is - rendered. The three aforementioned values have the following meanings:

      - -

      The "bevel" value means that this is all that is rendered at - joins.

      - -

      The "round" value means that an arc connecting the two aforementioned - corners of the join, abutting (and not overlapping) the aforementioned triangle, with the - diameter equal to the line width and the origin at the point of the join, must be added at - joins.

      - -

      The "miter" value means that a second triangle must (if it can given - the miter length) be added at the join, with one line being the line between the two - aforementioned corners, abutting the first triangle, and the other two being continuations of - the outside edges of the two joining lines, as long as required to intersect without going over - the miter length.

      - -

      The miter length is the distance from the point where the join occurs to the intersection of - the line edges on the outside of the join. The miter limit ratio is the maximum allowed ratio of - the miter length to half the line width. If the miter length would cause the miter limit ratio - (as set by the style miterLimit attribute) to be exceeded, then this second - triangle must not be added.

      - - - -

      The subpaths in the newly created path must be oriented such that for any point, the number - of times a half-infinite straight line drawn from that point crosses a subpath is even if and - only if the number of times a half-infinite straight line drawn from that same point crosses a - subpath going in one direction is equal to the number of times it crosses a subpath going in the - other direction.

      - -
    10. Return the newly created path.

    - - - - - - -
    4.12.5.1.4 Text styles
    - -
    context . font [ = value ]
    styles . font [ = value ]
    - -

    Returns the current font settings.

    - -

    Can be set, to change the font. The syntax is the same as for the CSS 'font' - property; values that cannot be parsed as CSS font values are ignored.

    - -

    Relative keywords and lengths are computed relative to the font of the canvas - element.

    - -
    context . textAlign [ = value ]
    styles . textAlign [ = value ]
    - -

    Returns the current text alignment settings.

    - -

    Can be set, to change the alignment. The possible values are and their meanings are given - below. Other values are ignored. The default is "start".

    - -
    context . textBaseline [ = value ]
    styles . textBaseline [ = value ]
    - -

    Returns the current baseline alignment settings.

    - -

    Can be set, to change the baseline alignment. The possible values and their meanings are - given below. Other values are ignored. The default is "alphabetic".

    - -
    context . direction [ = value ]
    styles . direction [ = value ]
    - -

    Returns the current directionality.

    - -

    Can be set, to change the directionality. The possible values and their meanings are given - below. Other values are ignored. The default is "inherit".

    - -
    - - - -

    Objects that implement the CanvasTextDrawingStyles interface have attributes - (defined in this section) that control how text is laid out (rasterized or outlined) by the - object. Such objects can also have a font style source object. For - CanvasRenderingContext2D objects, this is the canvas element - referenced by the context's canvas property.

    - - - -

    The font IDL attribute, on setting, must - be parsed as a CSS <'font'> - value (but without supporting property-independent style sheet syntax like 'inherit'), and - the resulting font must be assigned to the context, with the 'line-height' component - forced to 'normal', with the 'font-size' component converted to CSS pixels, and with system fonts being computed to explicit values. If the - new value is syntactically incorrect (including using property-independent style sheet syntax like - 'inherit' or 'initial'), then it must be ignored, without assigning a new font value. [CSS]

    - -

    Font family names must be interpreted in the context of the font style source - object when the font is to be used; any fonts embedded using @font-face or loaded using FontFace objects that are visible to the - font style source object must therefore be available once they are loaded. (Each font style source - object has a font source, which determines what fonts are available.) If a font - is used before it is fully loaded, or if the font style source object does not have - that font in scope at the time the font is to be used, then it must be treated as if it was an - unknown font, falling back to another as described by the relevant CSS specifications. [CSSFONTS] [CSSFONTLOAD]

    - -

    On getting, the font attribute must return the serialized form of the current font of the context (with - no 'line-height' component). [CSSOM]

    - -
    - -

    For example, after the following statement:

    - -
    context.font = 'italic 400 12px/2 Unknown Font, sans-serif';
    - -

    ...the expression context.font would evaluate to the string "italic 12px "Unknown Font", sans-serif". The "400" - font-weight doesn't appear because that is the default value. The line-height doesn't appear - because it is forced to "normal", the default value.

    +
    + +
    + +

    The save() + method must push a copy of the current drawing state onto the + drawing state stack.

    + +

    The restore() method + must pop the top entry in the drawing state stack, and reset the + drawing state it describes. If there is no saved state, the method + must do nothing.

    + +
    -

    When the object implementing the CanvasTextDrawingStyles interface is created, the - font of the context must be set to 10px sans-serif. When the 'font-size' component is - set to lengths using percentages, 'em' or 'ex' units, or the 'larger' or - 'smaller' keywords, these must be interpreted relative to the computed value of the - 'font-size' property of the font style source object at the time that - the attribute is set, if it is an element. When the 'font-weight' component is set to - the relative values 'bolder' and 'lighter', these must be interpreted relative to the - computed value of the 'font-weight' property of the font style - source object at the time that the attribute is set, if it is an element. If the computed values are undefined for a particular case (e.g. because - the font style source object is not an element or is not being - rendered), then the relative keywords must be interpreted relative to the normal-weight - 10px sans-serif default.

    - -

    The textAlign IDL attribute, on - getting, must return the current value. On setting, the current value must be changed to the new - value. When the object implementing the CanvasTextDrawingStyles interface is - created, the textAlign attribute must initially - have the value start.

    - -

    The textBaseline IDL attribute, on - getting, must return the current value. On setting, the current value must be changed to the new - value. When the object implementing the CanvasTextDrawingStyles interface is - created, the textBaseline attribute must - initially have the value alphabetic.

    - -

    The direction IDL attribute, on - getting, must return the current value. On setting, the current value must be changed to the new - value. When the object implementing the CanvasTextDrawingStyles interface is - created, the direction attribute must initially - have the value "inherit".

    - - - -

    The textAlign attribute's allowed keywords are - as follows:

    - -
    start -

    Align to the start edge of the text (left side in left-to-right text, right side in - right-to-left text).

    end -

    Align to the end edge of the text (right side in left-to-right text, left side in - right-to-left text).

    left -

    Align to the left.

    right -

    Align to the right.

    center -

    Align to the center.

    - -

    The textBaseline - attribute's allowed keywords correspond to alignment points in the - font:

    - -

    The top of the em square is roughly at the top of the glyphs in a font, the hanging baseline is where some glyphs like आ are anchored, the middle is half-way between the top of the em square and the bottom of the em square, the alphabetic baseline is where characters like Á, ÿ, f, and Ω are anchored, the ideographic baseline is where glyphs like 私 and 達 are anchored, and the bottom of the em square is roughly at the bottom of the glyphs in a font. The top and bottom of the bounding box can be far from these baselines, due to glyphs extending far outside the em square.

    - -

    The keywords map to these alignment points as follows:

    - -
    top -
    The top of the em square
    hanging -
    The hanging baseline
    middle -
    The middle of the em square
    alphabetic -
    The alphabetic baseline
    ideographic -
    The ideographic baseline
    bottom -
    The bottom of the em square
    - -

    The direction attribute's allowed keywords are - as follows:

    - -
    ltr - -

    Treat input to the text preparation algorithm as left-to-right text.

    rtl - -

    Treat input to the text preparation algorithm as right-to-left text.

    inherit - -

    Default to the directionality of the canvas element or Document - as appropriate.

    - -

    The text preparation algorithm is as follows. It takes as input a string text - , a CanvasTextDrawingStyles object target, and an optional length - maxWidth. It returns an array of glyph shapes, each positioned on a common coordinate - space, a physical alignment whose value is one of left, right, and - center, and an inline box. (Most callers of this algorithm ignore the - physical alignment and the inline box.)

    - -
    1. If maxWidth was provided but is less than or equal to zero or equal to NaN, - then return an empty array.

    2. Replace all ASCII whitespace in text with U+0020 SPACE - characters.

    3. Let font be the current font of target, as given - by that object's font attribute.

    4. -

      Apply the appropriate step from the following list to determine the value of direction:

      +
      4.8.11.1.2 Transformations
      -
      If the target object's direction attribute has the value "ltr"
      Let direction be 'ltr'.
      If the target object's direction attribute has the value "rtl"
      Let direction be 'rtl'.
      If the target object's font style source object is an - element
      Let direction be the directionality of the target object's font style source object.
      If the target object's font style source object is a - Document with a non-null document element
      Let direction be the directionality of the target - object's font style source object's document element.
      Otherwise
      Let direction be 'ltr'.
      +

      The transformation matrix is applied to coordinates when creating + shapes and paths.

      -
    5. Form a hypothetical infinitely-wide CSS line box containing a single - inline box containing the text text, with all the properties at their - initial values except the 'font' property of the inline box set to - font, the 'direction' property of the inline box set to - direction, and the 'white-space' property set to 'pre'. [CSS]

    6. If maxWidth was provided and the hypothetical width of the - inline box in the hypothetical line box is greater than - maxWidth CSS pixels, then change font to have a - more condensed font (if one is available or if a reasonably readable one can be synthesized by - applying a horizontal scale factor to the font) or a smaller font, and return to the previous - step.

    7. +
      -

      The anchor point is a point on the inline box, and the physical - alignment is one of the values left, right, and center. These - variables are determined by the textAlign and - textBaseline values as follows:

      +

      When the context is created, the transformation matrix must + initially be the identity transform. It may then be adjusted using + the transformation methods.

      -

      Horizontal position:

      +

      The transformations must be performed in reverse order. For + instance, if a scale transformation that doubles the width is + applied, followed by a rotation transformation that rotates drawing + operations by a quarter turn, and a rectangle twice as wide as it is + tall is then drawn on the canvas, the actual result will be a + square.

      -
      If textAlign is left
      If textAlign is start and direction is - 'ltr'
      If textAlign is end and direction is 'rtl'
      Let the anchor point's horizontal position be the left edge of the - inline box, and let physical alignment be left.
      If textAlign is right
      If textAlign is end and direction is 'ltr'
      If textAlign is start and direction is - 'rtl'
      Let the anchor point's horizontal position be the right edge of the - inline box, and let physical alignment be right.
      If textAlign is center
      Let the anchor point's horizontal position be half way between the left - and right edges of the inline box, and let physical alignment be - center.
      +
      -

      Vertical position:

      +
      context . scale(x, y)
      -
      If textBaseline is top
      Let the anchor point's vertical position be the top of the em box of - the first available font of the inline box.
      If textBaseline is hanging
      Let the anchor point's vertical position be the hanging baseline of the - first available font of the inline box.
      If textBaseline is middle
      Let the anchor point's vertical position be half way between the bottom - and the top of the em box of the first available font of the inline box.
      If textBaseline is alphabetic
      Let the anchor point's vertical position be the alphabetic baseline of - the first available font of the inline box.
      If textBaseline is ideographic
      Let the anchor point's vertical position be the ideographic baseline of - the first available font of the inline box.
      If textBaseline is bottom
      Let the anchor point's vertical position be the bottom of the em box of - the first available font of the inline box.
      +
      -
    8. +

      Changes the transformation matrix to apply a scaling transformation with the given characteristics.

      -

      Let result be an array constructed by iterating over each glyph in the - inline box from left to right (if any), adding to the array, for each glyph, the - shape of the glyph as it is in the inline box, positioned on a coordinate space - using CSS pixels with its origin is at the anchor - point.

      + -
    9. Return result, physical alignment, and the inline - box.

    +
    context . rotate(angle)
    +
    -
    4.12.5.1.5 Building paths
    +

    Changes the transformation matrix to apply a rotation transformation with the given characteristics. The angle is in radians.

    -

    Objects that implement the CanvasPath interface have a path. A path has a list of zero or - more subpaths. Each subpath consists of a list of one or more points, connected by straight or - curved line segments, and a flag indicating whether the subpath is closed or not. A - closed subpath is one where the last point of the subpath is connected to the first point of the - subpath by a straight line. Subpaths with only one point are ignored when painting the path.

    +
    -

    Paths have a need new subpath flag. When this - flag is set, certain APIs create a new subpath rather than extending the previous one. When a - path is created, its need new subpath flag must be - set.

    +
    context . translate(x, y)
    -

    When an object implementing the CanvasPath interface is created, its path must be initialized to zero subpaths.

    +
    -
    context . moveTo(x, y)
    path . moveTo(x, y)
    +

    Changes the transformation matrix to apply a translation transformation with the given characteristics.

    -

    Creates a new subpath with the given point.

    +
    -
    context . closePath()
    path . closePath()
    +
    context . transform(a, b, c, d, e, f)
    -

    Marks the current subpath as closed, and starts a new subpath with a point the same as the - start and end of the newly closed subpath.

    +
    -
    context . lineTo(x, y)
    path . lineTo(x, y)
    +

    Changes the transformation matrix to apply the matrix given by the arguments as described below.

    -

    Adds the given point to the current subpath, connected to the previous one by a straight - line.

    +
    -
    context . quadraticCurveTo(cpx, cpy, x, y)
    path . quadraticCurveTo(cpx, cpy, x, y)
    +
    context . setTransform(a, b, c, d, e, f)
    -

    Adds the given point to the current subpath, connected to the previous one by a quadratic - Bézier curve with the given control point.

    +
    -
    context . bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y)
    path . bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y)
    +

    Changes the transformation matrix to the matrix given by the arguments as described below.

    -

    Adds the given point to the current subpath, connected to the previous one by a cubic - Bézier curve with the given control points.

    +
    -
    context . arcTo(x1, y1, x2, y2, radiusX [, radiusY, rotation ] )
    path . arcTo(x1, y1, x2, y2, radiusX [, radiusY, rotation ] )
    +
    -

    Adds an arc with the given control points and radius to the current subpath, connected to the - previous point by a straight line.

    +

    The scale(x, y) method must + add the scaling transformation described by the arguments to the + transformation matrix. The x argument represents + the scale factor in the horizontal direction and the y argument represents the scale factor in the + vertical direction. The factors are multiples.

    -

    If two radii are provided, then the first controls the width of the arc's ellipse, and the - second controls the height. If only one is provided, or if they are the same, then the arc is - from a circle. In the case of an ellipse, the rotation argument controls the clockwise - inclination of the ellipse relative to the x-axis.

    +

    The rotate(angle) method must add the rotation + transformation described by the argument to the transformation + matrix. The angle argument represents a + clockwise rotation angle expressed in radians.

    -

    Throws an "IndexSizeError" DOMException if the given - radius is negative.

    +

    The translate(x, y) method must + add the translation transformation described by the arguments to the + transformation matrix. The x argument represents + the translation distance in the horizontal direction and the y argument represents the translation distance in the + vertical direction. The arguments are in coordinate space units.

    -
    - - - - -
    +

    The transform(a, b, c, d, e, f) method must replace the current + transformation matrix with the result of multiplying the current + transformation matrix with the matrix described by:

    +
    + + + + + + + + + +
    ace
    bdf
    001

    The arguments a, b, c, d, e, and f are sometimes called + m11, m12, m21, m22, dx, + and dy or m11, m21, m12, m22, dx, and dy. Care should be taken in particular with the order + of the second and third arguments (b and c) as their order varies from API to API and APIs + sometimes use the notation m12/m21 and sometimes m21/m12 for those positions.

    -
    context . arc(x, y, radius, startAngle, endAngle [, anticlockwise ] )
    path . arc(x, y, radius, startAngle, endAngle [, anticlockwise ] )
    +
    -

    Adds points to the subpath such that the arc described by the circumference of the circle - described by the arguments, starting at the given start angle and ending at the given end angle, - going in the given direction (defaulting to clockwise), is added to the path, connected to the - previous point by a straight line.

    +

    The setTransform(a, b, c, d, e, + f) method must reset the current + transform to the identity matrix, and then invoke the transform(a, b, c, d, e, + f) method with the same arguments.

    -

    Throws an "IndexSizeError" DOMException if the given - radius is negative.

    +
    -
    - - -
    +
    4.8.11.1.3 Compositing
    +
    context . globalAlpha [ = value ]
    -
    context . ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle [, anticlockwise] )
    path . ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle [, anticlockwise] )
    +
    -

    Adds points to the subpath such that the arc described by the circumference of the ellipse - described by the arguments, starting at the given start angle and ending at the given end angle, - going in the given direction (defaulting to clockwise), is added to the path, connected to the - previous point by a straight line.

    +

    Returns the current alpha value applied to rendering operations.

    -

    Throws an "IndexSizeError" DOMException if the given - radius is negative.

    +

    Can be set, to change the alpha value. Values outside of the + range 0.0 .. 1.0 are ignored.

    -
    context . rect(x, y, w, h)
    path . rect(x, y, w, h)
    +
    -

    Adds a new closed subpath to the path, representing the given rectangle.

    - +
    context . globalCompositeOperation [ = value ]
    - +
    -

    The following methods allow authors to manipulate the paths - of objects implementing the CanvasPath interface.

    +

    Returns the current composition operation, from the list below.

    -

    For objects implementing the CanvasDrawPath and CanvasTransform - interfaces, the points passed to the methods, and the resulting lines added to current - default path by these methods, must be transformed according to the current transformation matrix before being added to - the path.

    +

    Can be set, to change the composition operation. Unknown values + are ignored.

    -

    The moveTo(x, y) - method, when invoked, must run these steps:

    +
    -
    1. If either of the arguments are infinite or NaN, then abort these steps.

    2. Create a new subpath with the specified point as its first (and only) point.

    +
    -

    When the user agent is to ensure there is a subpath for a coordinate (x, - y) on a path, the user agent must check to see if - the path has its need new subpath flag set. If it - does, then the user agent must create a new subpath with the point (x, y) as - its first (and only) point, as if the moveTo() method - had been called, and must then unset the path's need new - subpath flag.

    +

    All drawing operations are affected by the global compositing + attributes, globalAlpha and globalCompositeOperation.

    + -

    The closePath() method, when invoked, - must do nothing if the object's path has no subpaths. Otherwise, it must mark the last subpath as - closed, create a new subpath whose first point is the same as the previous subpath's first point, - and finally add this new subpath to the path.

    +

    The globalAlpha + attribute gives an alpha value that is applied to shapes and images + before they are composited onto the canvas. The value must be in the + range from 0.0 (fully transparent) to 1.0 (no additional + transparency). If an attempt is made to set the attribute to a value + outside this range, including Infinity and Not-a-Number (NaN) + values, the attribute must retain its previous value. When the + context is created, the globalAlpha attribute must + initially have the value 1.0.

    -

    If the last subpath had more than one point in its list of points, then this is - equivalent to adding a straight line connecting the last point back to the first point, thus - "closing" the shape, and then repeating the last (possibly implied) moveTo() call.

    +

    The globalCompositeOperation + attribute sets how shapes and images are drawn onto the existing + bitmap, once they have had globalAlpha and the + current transformation matrix applied. It must be set to a value + from the following list. In the descriptions below, the source + image, A, is the shape or image being rendered, + and the destination image, B, is the current + state of the bitmap.

    +
    -

    New points and the lines connecting them are added to subpaths using the methods described - below. In all cases, the methods only modify the last subpath in the object's path.

    +
    source-atop
    +
    A atop B. Display the + source image wherever both images are opaque. Display the + destination image wherever the destination image is opaque but the + source image is transparent. Display transparency elsewhere.
    -

    The lineTo(x, y) - method, when invoked, must run these steps:

    +
    source-in
    -
    1. If either of the arguments are infinite or NaN, then abort these steps.

    2. If the object's path has no subpaths, then ensure there is a subpath for - (x, y).

    3. Otherwise, connect the last point in the subpath to the given point (x, - y) using a straight line, and then add the given point (x, y) to - the subpath.

    +
    A in B. Display the + source image wherever both the source image and destination image + are opaque. Display transparency elsewhere.
    -

    The quadraticCurveTo(cpx, - cpy, x, y) method, when invoked, must run these - steps:

    +
    source-out
    -
    1. If any of the arguments are infinite or NaN, then abort these steps.

    2. Ensure there is a subpath for (cpx, - cpy)

    3. Connect the last point in the subpath to the given point (x, y) - using a quadratic Bézier curve with control point (cpx, cpy). [BEZIER]

    4. Add the given point (x, y) to the subpath.

    +
    A out B. Display the + source image wherever the source image is opaque and the + destination image is transparent. Display transparency + elsewhere.
    -

    The bezierCurveTo(cp1x, - cp1y, cp2x, cp2y, x, y) - method, when invoked, must run these steps:

    +
    source-over (default)
    -
    1. If any of the arguments are infinite or NaN, then abort these steps.

    2. Ensure there is a subpath for (cp1x, - cp1y).

    3. Connect the last point in the subpath to the given point (x, y) - using a cubic Bézier curve with control points (cp1x, cp1y) and - (cp2x, cp2y). [BEZIER]

    4. Add the point (x, y) to the subpath.

    +
    A over B. Display the + source image wherever the source image is opaque. Display the + destination image elsewhere.
    -
    -

    The arcTo(x1, y1, x2, - y2, radiusX, radiusY, rotation) method, - when invoked, must run these steps:

    +
    destination-atop
    -
    1. If any of the arguments are infinite or NaN, then abort these steps.

    2. Ensure there is a subpath for (x1, - y1).

    3. If either radiusX or radiusY are negative, then throw an - "IndexSizeError" DOMException.

    4. If radiusY is omitted, then set radiusY to - radiusX.

    5. Let the point (x0, y0) be the last point in the subpath, transformed - by the inverse of the current transformation - matrix (so that it is in the same coordinate system as the points passed to the - method).

    6. If the point (x0, y0) is equal to the point (x1, - y1), or if the point (x1, y1) is equal to the point - (x2, y2), or if both radiusX and radiusY are zero, - then add the point (x1, y1) to the subpath, and connect that point to the - previous point (x0, y0) by a straight line.

    7. Otherwise, if the points (x0, y0), (x1, y1), - and (x2, y2) all lie on a single straight line, then add the point - (x1, y1) to the subpath, and connect that point to the previous point - (x0, y0) by a straight line.

    8. Otherwise, let The Arc be the shortest arc given by circumference of the - ellipse that has radius radiusX on the major axis and radius radiusY on the - minor axis, and whose semi-major axis is rotated rotation radians clockwise from the - positive x-axis, and that has one point tangent to the half-infinite line that crosses the point - (x0, y0) and ends at the point (x1, y1), and that has - a different point tangent to the half-infinite line that ends at the point (x1, - y1) and crosses the point (x2, y2). The points at which this - ellipse touches these two lines are called the start and end tangent points respectively. Connect - the point (x0, y0) to the start tangent point by a straight line, adding - the start tangent point to the subpath, and then connect the start tangent point to the end - tangent point by The Arc, adding the end tangent point to the subpath.

    +
    B atop A. Same as source-atop but using the + destination image instead of the source image and vice versa.
    -
    +
    destination-in
    -

    The arc(x, y, - radius, startAngle, endAngle, anticlockwise) and ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise) methods draw arcs.

    +
    B in A. Same as source-in but using the destination + image instead of the source image and vice versa.
    -

    The arc() method is equivalent to the ellipse() method in the case where the two radii are equal. - When the arc() method is invoked, it must act as if the - ellipse() method had been invoked with the radiusX and radiusY arguments set to the value of the radius argument, the rotation argument set to zero, and the - other arguments set to the same values as their identically named arguments on the arc() method.

    +
    destination-out
    -

    The ellipse() method, when invoked, must run these - steps:

    +
    B out A. Same as source-out but using the destination + image instead of the source image and vice versa.
    -
    1. If any of the arguments are infinite or NaN, then abort these steps.

    2. If either radiusX or radiusY are negative, then throw an - "IndexSizeError" DOMException.

    3. If the object's path has any subpaths, then add a straight line from the last point in the - subpath to the start point of the arc.

    4. -

      Add the start and end points of the arc to the subpath, and connect them with an arc. The arc - and its start and end points are defined as follows:

      +
      destination-over
      -

      Consider an ellipse that has its origin at (x, y), that has a - major-axis radius radiusX and a minor-axis radius radiusY, and that is - rotated about its origin such that its semi-major axis is inclined rotation radians - clockwise from the x-axis.

      +
      B over A. Same as source-over but using the + destination image instead of the source image and vice versa.
      -

      If anticlockwise is false and endAngle-startAngle is equal to or greater than , or, if anticlockwise is true and startAngle-endAngle is equal to or greater than , then the arc is the whole circumference of this ellipse, and the point - at startAngle along this circle's circumference, measured in radians clockwise from - the ellipse's semi-major axis, acts as both the start point and the end point.

      -

      Otherwise, the points at startAngle and endAngle along this circle's - circumference, measured in radians clockwise from the ellipse's semi-major axis, are the start - and end points respectively, and the arc is the path along the circumference of this ellipse - from the start point to the end point, going anti-clockwise if anticlockwise is true, - and clockwise otherwise. Since the points are on the ellipse, as opposed to being simply angles - from zero, the arc can never cover an angle greater than - radians.

      + -
      +
      lighter
      -

      The rect(x, y, w, - h) method, when invoked, must run these steps:

      +
      A plus B. Display the + sum of the source image and destination image, with color values + approaching 255 (100%) as a limit.
      -
      1. If any of the arguments are infinite or NaN, then abort these steps.

      2. Create a new subpath containing just the four points (x, y), - (x+w, y), (x+w, - y+h), (x, y+h), in that order, with those - four points connected by straight lines.

      3. Mark the subpath as closed.

      4. Create a new subpath with the point (x, y) as the only point in the - subpath.

      - +
      copy
      - +
      A (B is + ignored). Display the source image instead of the destination + image.
      +
      xor
      -
      4.12.5.1.6 Path2D objects
      +
      A xor B. Exclusive OR + of the source image and destination image.
      -

      Path2D objects can be used to declare paths that are then later used on - objects implementing the CanvasDrawPath interface. In addition to many of the APIs - described in earlier sections, Path2D objects have methods to combine paths, and to - add text to paths.

      -
      path = new Path2D()
      +
      vendorName-operationName
      -

      Creates a new empty Path2D object.

      +
      Vendor-specific extensions to the list of + composition operators should use this syntax.
      -
      path = new Path2D(path)
      +
      -

      Creates a new Path2D object that is a copy of the argument.

      +

      The operators in the above list must be treated as described by + the Porter-Duff operator given at the start of their description + (e.g. A over B). They are to + be applied as part of the drawing model, at which point the + clipping region is also applied. (Without a clipping + region, these operators act on the whole bitmap with every + operation.) [PORTERDUFF]

      -
      path = new Path2D(paths [, fillRule ] )
      +

      These values are all case-sensitive — they must be used + exactly as shown. User agents must not recognize values that are not + a case-sensitive match for one of the values given + above.

      -

      Creates a new Path2D object that describes a path that outlines the given paths, using the given fill rule.

      +

      On setting, if the user agent does not recognize the specified + value, it must be ignored, leaving the value of globalCompositeOperation + unaffected.

      -
      path = new Path2D(d)
      +

      When the context is created, the globalCompositeOperation + attribute must initially have the value + source-over.

      -

      Creates a new path with the path described by the argument, interpreted as SVG path data. [SVG]

      +
      -
      path . addPath(path [, transform ] )
      -

      Adds to the path the path given by the argument.

      +
      4.8.11.1.4 Colors and styles
      -
    +
    context . strokeStyle [ = value ]
    - - -

    The Path2D() constructor, when invoked, must return a - newly created Path2D object.

    - -
    - -

    The Path2D(path) - constructor, when invoked, must return a newly created Path2D object, to which the - subpaths of the argument are added. (In other words, it returns a copy of the argument.)

    - -
    - -

    The Path2D(paths, - fillRule) constructor, when invoked, must run these steps:

    - -
    1. - -

      Run the appropriate step from the following list, based on the constructor's second - argument:

      - -
      If it is "nonzero"
      - -

      Let merged path be a path that - consists of a set of non-overlapping subpaths that exactly outline the points from which, in - any of the paths provided in the constructor's first - argument, the number of times a half-infinite straight line drawn from that point crosses a - subpath going in one direction is not equal to the number of times it crosses a subpath going - in the other direction.

      - -
      If it is "evenodd"
      - -

      Let merged path be a path that - consists of a set of non-overlapping subpaths that exactly outline the points from which, in - any of the paths provided in the constructor's first - argument, the number of times a half-infinite straight line drawn from that point crosses that - path is odd.

      - -
      - -

      The subpaths in merged path must be oriented such that for any point, - the number of times a half-infinite straight line drawn from that point crosses a subpath is - even if and only if the number of times a half-infinite straight line drawn from that same point - crosses a subpath going in one direction is equal to the number of times it crosses a subpath - going in the other direction.

      - -
    2. Add all the subpaths in merged path to the Path2D - object.

    3. Set the Path2D object's need new subpath flag.

    - -
    - -

    The Path2D(d) - constructor, when invoked, must run these steps:

    - -
    1. - -

      Parse and interpret the d argument according to the SVG specification's - rules for path data, thus obtaining an SVG path. [SVG]

      - -

      The resulting path could be empty. SVG defines error handling rules for parsing - and applying path data.

      - -
    2. Let (x, y) be the last point in the SVG - path.

    3. Create a new Path2D object and add all the subpaths in the SVG path, if any, - to that Path2D object.

      - -
    4. Create a new subpath in the Path2D object with (x, y) as the only point in the subpath.

    5. Return the Path2D object as the constructed object.

    - -
    - -

    The addPath(b, - transform) method, when invoked on a Path2D object - a, must run these steps:

    - -
    1. If the Path2D object b has no subpaths, then abort these - steps.

    2. Create a copy of all the subpaths in b. Let this copy be known as c.

    3. Let matrix be the result of creating a DOMMatrix from a dictionary - transform, with ignore3D set to true.

    4. Transform all the coordinates and lines in c by the transform matrix - matrix.

    5. Let (x, y) be the last point in the last subpath - of c.

    6. Add all the subpaths in c to a.

    7. Create a new subpath in a with (x, y) as the only point in the subpath.

    - - - - -
    4.12.5.1.7 Transformations
    - -

    Objects that implement the CanvasTransform interface have a current - transformation matrix, as well as methods (described in this section) to manipulate it. When - an object implementing the CanvasTransform interface is created, its transformation - matrix must be initialized to the identity transform.

    - -

    The current transformation matrix is applied to coordinates when creating the - current default path, and when painting text, shapes, and Path2D - objects, on objects implementing the CanvasTransform interface.

    - - -

    Most of the API uses DOMMatrix objects rather than this API. This API - remains mostly for historical reasons.

    - - - -

    The transformations must be performed in reverse order.

    - -

    For instance, if a scale transformation that doubles the width is applied to the - canvas, followed by a rotation transformation that rotates drawing operations by a quarter turn, - and a rectangle twice as wide as it is tall is then drawn on the canvas, the actual result will be - a square.

    - - - -
    context . scale(x, y)
    - -

    Changes the current transformation matrix to apply a scaling transformation - with the given characteristics.

    - -
    context . rotate(angle)
    - -

    Changes the current transformation matrix to apply a rotation transformation - with the given characteristics. The angle is in radians.

    - -
    context . translate(x, y)
    - -

    Changes the current transformation matrix to apply a translation transformation - with the given characteristics.

    - -
    context . transform(a, b, c, d, e, f)
    - -

    Changes the current transformation matrix to apply the matrix given by the - arguments as described below.

    - -
    matrix = context . getTransform()
    - -

    Returns a copy of the current transformation matrix, as a newly created - DOMMatrix object.

    - -
    context . setTransform(a, b, c, d, e, f)
    - -

    Changes the current transformation matrix to the matrix given by the - arguments as described below.

    - -
    context . setTransform(transform)
    - -

    Changes the current transformation matrix to the matrix represented by - the passed DOMMatrix2DInit dictionary.

    - -
    context . resetTransform()
    - -

    Changes the current transformation matrix to the identity transform.

    - -
    - - - -

    The scale(x, y) - method, when invoked, must run these steps:

    - -
    1. If either of the arguments are infinite or NaN, then abort these steps.

    2. Add the scaling transformation described by the arguments to the current - transformation matrix. The x argument represents the scale factor in the - horizontal direction and the y argument represents the scale factor in the vertical - direction. The factors are multiples.

    - -

    The rotate(angle) method, - when invoked, must run these steps:

    - -
    1. If angle is infinite or NaN, then abort these steps.

    2. Add the rotation transformation described by the argument to the current - transformation matrix. The angle argument represents a clockwise rotation angle - expressed in radians.

    - -

    The translate(x, - y) method, when invoked, must run these steps:

    - -
    1. If either of the arguments are infinite or NaN, then abort these steps.

    2. Add the translation transformation described by the arguments to the current - transformation matrix. The x argument represents the translation distance in - the horizontal direction and the y argument represents the translation distance in the - vertical direction. The arguments are in coordinate space units.

    - -

    The transform(a, b, - c, d, e, f) method, when invoked, must - run these steps:

    - -
    1. If any of the arguments are infinite or NaN, then abort these steps.

    2. Replace the current transformation matrix with the result of multiplying the - current transformation matrix with the matrix described by:

    - - - -
    ace
    bdf
    001
    - -

    The arguments a, b, c, d, - e, and f are sometimes called m11, m12, - m21, m22, dx, and dy or m11, - m21, m12, m22, dx, and dy. Care ought to be - taken in particular with the order of the second and third arguments (b and - c) as their order varies from API to API and APIs sometimes use the notation - m12/m21 and sometimes m21/m12 for those positions.

    - - - -

    The getTransform() method, when - invoked, must return a newly created DOMMatrix representing a copy of the - current transformation matrix matrix of the context.

    - -

    This returned object is not live, so updating it will not affect the - current transformation matrix, and updating the current transformation - matrix will not affect an already returned DOMMatrix.

    - -

    The setTransform(a, b, - c, d, e, f) method, when invoked, must - run these steps:

    - -
    1. If any of the arguments are infinite or NaN, then abort these steps.

    2. Reset the current transformation matrix to the identity matrix.

    3. Invoke the transform(a, b, c, - d, e, f) method with the same arguments.

    - -

    The setTransform(transform) method, when invoked, - must reset the current transformation matrix to the value represented by the result - of creating a DOMMatrix from a - dictionary transform, with ignore3D set to true.

    - -

    The resetTransform() method, - when invoked, must reset the current transformation matrix to the identity - matrix.

    - - - - - -
    4.12.5.1.8 Image sources for 2D rendering contexts
    - -

    Some methods on the CanvasDrawImage and CanvasFillStrokeStyles - interfaces take the union type CanvasImageSource as an argument.

    - -

    This union type allows objects implementing any of the following interfaces to be used as image - sources:

    - - - -

    Although not formally specified as such, SVG image - elements are expected to be implemented nearly identical to img elements. That is, - SVG image elements share the fundamental concepts and features of - img elements.

    - -

    The ImageBitmap interface can be created from a number of other - image-representing types, including ImageData.

    - -

    When a user agent is required to check the usability of the image - argument, where image is a CanvasImageSource object, the - user agent must run these steps, which return either good, bad, or - aborted:

    - -
    1. If image is an HTMLOrSVGImageElement object that is in the broken state, then throw an - "InvalidStateError" DOMException, return aborted, - and abort these steps.

    2. If image is an HTMLOrSVGImageElement object that is not fully decodable, or if image is an - HTMLVideoElement object whose readyState - attribute is either HAVE_NOTHING or HAVE_METADATA, then return bad and abort these - steps.

    3. If image is an HTMLOrSVGImageElement object with an - intrinsic width or intrinsic height (or both) equal to zero, then - return bad and abort these steps.

    4. If image is an HTMLCanvasElement object with either a horizontal - dimension or a vertical dimension equal to zero, then return bad and abort these - steps.

    5. If image is an ImageBitmap object with its - [[Detached]] internal slot value set to true, then throw an - "InvalidStateError" DOMException, return aborted, - and abort these steps.

    6. Return good.

    - -

    When a CanvasImageSource object represents an HTMLOrSVGImageElement, - the element's image must be used as the source image.

    - -

    Specifically, when a CanvasImageSource object represents an animated image in an - HTMLOrSVGImageElement, the user agent must use the default image of the animation - (the one that the format defines is to be used when animation is not supported or is disabled), - or, if there is no such image, the first frame of the animation, when rendering the image for - CanvasRenderingContext2D APIs.

    - -

    When a CanvasImageSource object represents an HTMLVideoElement, then - the frame at the current playback position when the method with the argument is - invoked must be used as the source image when rendering the image for - CanvasRenderingContext2D APIs, and the source image's dimensions must be the intrinsic width and intrinsic height of the media resource - (i.e. after any aspect-ratio correction has been applied).

    - -

    When a CanvasImageSource object represents an HTMLCanvasElement, the - element's bitmap must be used as the source image.

    - -

    When a CanvasImageSource object represents an element that is being - rendered and that element has been resized, the original image data of the source image - must be used, not the image as it is rendered (e.g. width and - height attributes on the source element have no effect on how - the object is interpreted when rendering the image for CanvasRenderingContext2D - APIs).

    - -

    When a CanvasImageSource object represents an ImageBitmap, the - object's bitmap image data must be used as the source image.

    - -

    The image argument is not origin-clean if it is an - HTMLOrSVGImageElement or HTMLVideoElement whose origin is - not the same as the origin specified by the entry settings - object, or if it is an HTMLCanvasElement whose bitmap's origin-clean flag is false.

    - - - -
    4.12.5.1.9 Fill and stroke styles
    - -
    context . fillStyle [ = value ]
    - -

    Returns the current style used for filling shapes.

    - -

    Can be set, to change the fill style.

    - -

    The style can be either a string containing a CSS color, or a CanvasGradient or - CanvasPattern object. Invalid values are ignored.

    - -
    context . strokeStyle [ = value ]
    +

    Returns the current style used for stroking shapes.

    Can be set, to change the stroke style.

    -

    The style can be either a string containing a CSS color, or a CanvasGradient or - CanvasPattern object. Invalid values are ignored.

    +

    The style can be either a string containing a CSS color, or a + CanvasGradient or CanvasPattern + object. Invalid values are ignored.

    -
    + - +
    context . fillStyle [ = value ]
    - +
    -

    Objects that implement the CanvasFillStrokeStyles interface have attributes and - methods (defined in this section) that control how shapes are treated by the object.

    +

    Returns the current style used for filling shapes.

    -

    The fillStyle attribute represents the - color or style to use inside shapes, and the strokeStyle attribute represents the color - or style to use for the lines around the shapes.

    +

    Can be set, to change the fill style.

    -

    Both attributes can be either strings, CanvasGradients, or - CanvasPatterns. On setting, strings must be parsed as CSS <color> values and the color assigned, and - CanvasGradient and CanvasPattern objects must be assigned themselves. [CSSCOLOR] If the value is a string but cannot be parsed as a CSS - <color> value, then it must be ignored, and the attribute must retain its previous - value. +

    The style can be either a string containing a CSS color, or a + CanvasGradient or CanvasPattern + object. Invalid values are ignored.

    - If the new value is a CanvasPattern object that is marked as not origin-clean, then the - CanvasRenderingContext2D's origin-clean flag must be set to false. +
    -

    +
    -

    When set to a CanvasPattern or CanvasGradient object, the assignment - is live, meaning that changes made to the object after the assignment do affect - subsequent stroking or filling of shapes.

    + -

    Adds a color stop with the given color to the gradient at the given offset. 0.0 is the offset - at one end of the gradient, 1.0 is the offset at the other end.

    +

    The strokeStyle + attribute represents the color or style to use for the lines around + shapes, and the fillStyle + attribute represents the color or style to use inside the + shapes.

    -

    Throws an "IndexSizeError" DOMException if the offset - is out of range. Throws a "SyntaxError" DOMException if - the color cannot be parsed.

    +

    Both attributes can be either strings, + CanvasGradients, or CanvasPatterns. On + setting, strings must be parsed as CSS <color> values and the color + assigned, and CanvasGradient and + CanvasPattern objects must be assigned themselves. [CSSCOLOR] If the value is a string but + cannot be parsed as a CSS <color> value, or is + neither a string, a CanvasGradient, nor a + CanvasPattern, then it must be ignored, and the + attribute must retain its previous value.

    -
    gradient = context . createLinearGradient(x0, y0, x1, y1)
    +

    When set to a CanvasPattern or + CanvasGradient object, the assignment is + live, meaning that changes made to the object after the + assignment do affect subsequent stroking or filling of shapes.

    -

    Returns a CanvasGradient object that represents a +

    On getting, if the value is a color, then the serialization of the color + must be returned. Otherwise, if it is not a color but a + CanvasGradient or CanvasPattern, then the + respective object must be returned. (Such objects are opaque and + therefore only useful for assigning to other attributes or for + comparison to other gradients or patterns.)

    + +

    The serialization of a color for a color value is a + string, computed as follows: if it has alpha equal to 1.0, then the + string is a lowercase six-digit hex value, prefixed with a "#" + character (U+0023 NUMBER SIGN), with the first two digits + representing the red component, the next two digits representing the + green component, and the last two digits representing the blue + component, the digits being in the range 0-9 a-f (U+0030 to U+0039 + and U+0061 to U+0066). Otherwise, the color value has alpha less + than 1.0, and the string is the color value in the CSS rgba() functional-notation format: the literal + string rgba (U+0072 U+0067 U+0062 U+0061) + followed by a U+0028 LEFT PARENTHESIS, a base-ten integer in the + range 0-255 representing the red component (using digits 0-9, U+0030 + to U+0039, in the shortest form possible), a literal U+002C COMMA + and U+0020 SPACE, an integer for the green component, a comma and a + space, an integer for the blue component, another comma and space, a + U+0030 DIGIT ZERO, if the alpha value is greater than zero then a + U+002E FULL STOP (representing the decimal point), if the alpha + value is greater than zero then one or more digits in the range 0-9 + (U+0030 to U+0039) representing the fractional part of the alpha + value, and finally a U+0029 RIGHT PARENTHESIS.

    + +

    When the context is created, the strokeStyle and fillStyle attributes must + initially have the string value #000000.

    + +
    + +

    There are two types of gradients, linear gradients and radial + gradients, both represented by objects implementing the opaque + CanvasGradient interface.

    + +

    Once a gradient has been created (see below), + stops are placed along it to define how the colors are distributed + along the gradient. The color of the gradient at + each stop is the color specified for that stop. Between each such + stop, the colors and the alpha component must be linearly + interpolated over the RGBA space without premultiplying the alpha + value to find the color to use at that offset. Before the first + stop, the color must be the color of the first stop. After the last + stop, the color must be the color of the last stop. When there are + no stops, the gradient is transparent black.

    + +
    gradient . addColorStop(offset, color)
    + +
    + +

    Adds a color stop with the given color to the gradient at the + given offset. 0.0 is the offset at one end of the gradient, 1.0 is + the offset at the other end.

    + +

    Throws an INDEX_SIZE_ERR exception if the offset + is out of range. Throws a SYNTAX_ERR exception if the + color cannot be parsed.

    + +
    + +
    gradient = context . createLinearGradient(x0, y0, x1, y1)
    + +
    + +

    Returns a CanvasGradient object that represents a linear gradient that paints along the line given by the coordinates represented by the arguments.

    -
    gradient = context . createRadialGradient(x0, y0, r0, x1, y1, r1)
    +

    If any of the arguments are not finite numbers, throws a + NOT_SUPPORTED_ERR exception.

    -

    Returns a CanvasGradient object that represents a +

    + +
    gradient = context . createRadialGradient(x0, y0, r0, x1, y1, r1)
    + +
    + +

    Returns a CanvasGradient object that represents a radial gradient that paints along the cone given by the circles represented by the arguments.

    -

    If either of the radii are negative, throws an - "IndexSizeError" DOMException exception.

    +

    If any of the arguments are not finite numbers, throws a + NOT_SUPPORTED_ERR exception. If either of the radii + are negative, throws an INDEX_SIZE_ERR exception.

    -
    + - +
    -

    The addColorStop(offset, - color) method on the CanvasGradient interface adds a new stop - to a gradient. If the offset is less than 0 or greater than 1 then an - "IndexSizeError" DOMException must be thrown. If the - color cannot be parsed as a CSS <color> value, then a - "SyntaxError" DOMException must be thrown. Otherwise, the - gradient must have a new stop placed, at offset offset relative to the whole gradient, - and with the color obtained by parsing - color as a CSS <color> value. If multiple stops are added at the same - offset on a gradient, then they must be placed in the order added, with the first one closest to - the start of the gradient, and each subsequent one infinitesimally further along towards the end - point (in effect causing all but the first and last stop added at each point to be ignored).

    +

    The addColorStop(offset, color) + method on the CanvasGradient interface adds a new stop + to a gradient. If the offset is less than 0, + greater than 1, infinite, or NaN, then an + INDEX_SIZE_ERR exception must be raised. If the color cannot be parsed as a CSS <color> + value, then a SYNTAX_ERR exception must be + raised. Otherwise, the gradient must have a new stop placed, at + offset offset relative to the whole gradient, + and with the color obtained by parsing color as + a CSS <color> value. If multiple stops are added at the same + offset on a gradient, they must be placed in the order added, with + the first one closest to the start of the gradient, and each + subsequent one infinitesimally further along towards the end point + (in effect causing all but the first and last stop added at each + point to be ignored).

    -

    The createLinearGradient(x0, - y0, x1, y1) method takes four arguments that - represent the start point (x0, y0) and end point (x1, - y1) of the gradient. The method, when invoked, must return a linear - CanvasGradient initialized with the specified line.

    +

    The createLinearGradient(x0, y0, x1, + y1) method takes four arguments + that represent the start point (x0, y0) and end point (x1, y1) of the gradient. If any of the arguments to createLinearGradient() + are infinite or NaN, the method must raise a + NOT_SUPPORTED_ERR exception. Otherwise, the method must + return a linear CanvasGradient initialized with the + specified line.

    -

    Linear gradients must be rendered such that all points on a line perpendicular to the line that - crosses the start and end points have the color at the point where those two lines cross (with the - colors coming from the interpolation and extrapolation described - above). The points in the linear gradient must be transformed as described by the current transformation matrix when rendering.

    +

    Linear gradients must be rendered such that all points on a line + perpendicular to the line that crosses the start and end points have + the color at the point where those two lines cross (with the colors + coming from the interpolation and + extrapolation described above). The points in the linear + gradient must be transformed as described by the current transformation + matrix when rendering.

    -

    If x0 = x1 and y0 = y1, then the linear - gradient must paint nothing.

    +

    If x0 = x1 and y0 = y1, then + the linear gradient must paint nothing.

    -

    The createRadialGradient(x0, - y0, r0, x1, y1, r1) method - takes six arguments, the first three representing the start circle with origin (x0, - y0) and radius r0, and the last three representing the end circle with - origin (x1, y1) and radius r1. The values are in coordinate space - units. If either of r0 or r1 are negative, then an - "IndexSizeError" DOMException must be thrown. Otherwise, - the method, when invoked, must return a radial CanvasGradient initialized with the - two specified circles.

    +

    The createRadialGradient(x0, y0, r0, + x1, y1, r1) method takes six arguments, the + first three representing the start circle with origin (x0, y0) and radius r0, and the last three representing the end circle + with origin (x1, y1) and + radius r1. The values are in coordinate space + units. If any of the arguments are infinite or NaN, a + NOT_SUPPORTED_ERR exception must be raised. If either + of r0 or r1 are negative, an + INDEX_SIZE_ERR exception must be raised. Otherwise, + the method must return a radial CanvasGradient + initialized with the two specified circles.

    Radial gradients must be rendered by following these steps:

    -
    1. If x0 = x1 and y0 = y1 and r0 = r1, then the radial gradient must - paint nothing. Abort these steps.

    2. +
      1. If x0 = x1 and y0 = y1 and r0 = r1, then the radial gradient must + paint nothing. Abort these steps.

      2. -

        Let x(ω) = (x1-x0)ω + x0

        +
      3. -

        Let y(ω) = (y1-y0)ω + y0

        +

        Let x(ω) = (x1-x0)ω + x0

        -

        Let r(ω) = (r1-r0)ω + r0

        +

        Let y(ω) = (y1-y0)ω + y0

        -

        Let the color at ω be the color at that position on the gradient - (with the colors coming from the interpolation and extrapolation +

        Let r(ω) = (r1-r0)ω + r0

        + +

        Let the color at ω be the color at + that position on the gradient (with the colors coming from the interpolation and extrapolation described above).

        -
      4. For all values of ω where r(ω) > 0, starting with the value of ω nearest to positive infinity and ending with the value of ω nearest to negative infinity, draw the circumference of the circle with - radius r(ω) at position (x(ω), y(ω)), with the - color at ω, but only painting on the parts of the bitmap that have not - yet been painted on by earlier circles in this step for this rendering of the gradient.

      +
    3. + +
    4. For all values of ω where r(ω) > 0, + starting with the value of ω nearest to + positive infinity and ending with the value of ω nearest to negative infinity, draw the + circumference of the circle with radius r(ω) at position (x(ω), y(ω)), with the color at ω, but only painting on the parts of the + canvas that have not yet been painted on by earlier circles in this + step for this rendering of the gradient.

    5. + +

    This effectively creates a cone, touched by the two + circles defined in the creation of the gradient, with the part of + the cone before the start circle (0.0) using the color of the first + offset, the part of the cone after the end circle (1.0) using the + color of the last offset, and areas outside the cone untouched by + the gradient (transparent black).

    + +

    The points in the radial gradient must be transformed as + described by the current + transformation matrix when rendering.

    + +

    Gradients must be painted only where the relevant stroking or + filling effects requires that they be drawn.

    + + + +
    + +

    Patterns are represented by objects implementing the opaque + CanvasPattern interface.

    + +
    pattern = context . createPattern(image, repetition)
    + +
    + +

    Returns a CanvasPattern object that uses the given image + and repeats in the direction(s) given by the repetition argument.

    + +

    The allowed values for repetition are repeat (both directions), repeat-x (horizontal only), repeat-y (vertical only), and no-repeat (neither). If the repetition argument is empty, the value repeat is used.

    + +

    If the image has no image data, throws an + INVALID_STATE_ERR exception. If the second argument + isn't one of the allowed values, throws a SYNTAX_ERR + exception. If the image isn't yet fully decoded, then the method + returns null.

    + +
    + +
    + +

    To create objects of this type, the createPattern(image, repetition) + method is used. The first argument gives the image to use as the + pattern (either an HTMLImageElement, + HTMLCanvasElement, or HTMLVideoElement + object). Modifying this image after calling the createPattern() method + must not affect the pattern. The second argument must be a string + with one of the following values: repeat, + repeat-x, repeat-y, + no-repeat. If the empty string is specified, + repeat must be assumed. If an unrecognized value + is given, then the user agent must raise a SYNTAX_ERR + exception. User agents must recognize the four values described above + exactly (e.g. they must not do case folding). Except as specified + below, the method must return a CanvasPattern object + suitably initialized.

    + +

    The image argument is an instance of either + HTMLImageElement, HTMLCanvasElement, or + HTMLVideoElement.

    + +

    If the image argument is an + HTMLImageElement object that is not fully decodable, or if the image argument is an HTMLVideoElement + object whose readyState + attribute is either HAVE_NOTHING or HAVE_METADATA, then the + implementation must return null.

    -

    This effectively creates a cone, touched by the two circles defined in the - creation of the gradient, with the part of the cone before the start circle (0.0) using the color - of the first offset, the part of the cone after the end circle (1.0) using the color of the last - offset, and areas outside the cone untouched by the gradient (transparent black).

    +

    If the image argument is an + HTMLCanvasElement object with either a horizontal + dimension or a vertical dimension equal to zero, then the + implementation must raise an INVALID_STATE_ERR + exception.

    + -

    The resulting radial gradient must then be transformed as described by the current transformation matrix when rendering.

    +

    Patterns must be painted so that the top left of the first image + is anchored at the origin of the coordinate space, and images are + then repeated horizontally to the left and right (if the + repeat-x string was specified) or vertically up and + down (if the repeat-y string was specified) or in all + four directions all over the canvas (if the repeat + string was specified). The images are not scaled by this process; + one CSS pixel of the image must be painted on one coordinate space + unit. Of course, patterns must actually be painted only where the + stroking or filling effect requires that they be drawn, and are + affected by the current transformation matrix.

    -

    Gradients must be painted only where the relevant stroking or filling effects requires that - they be drawn.

    +

    If the original image data is a bitmap image, the value painted + at a point in the area of the repetitions is computed by filtering + the original image data. The user agent may use any filtering + algorithm (for example bilinear interpolation or nearest-neighbor). + When the filtering algorithm requires a pixel value from outside the + original image data, it must instead use the value from wrapping the + pixel's coordinates to the original image's dimensions. (That is, + the filter uses 'repeat' behavior, regardless of the value of + repetition.) + - +

    When the createPattern() method + is passed an animated image as its image + argument, the user agent must use the poster frame of the animation, + or, if there is no poster frame, the first frame of the + animation.

    + -
    +

    When the image argument is an + HTMLVideoElement, then the frame at the current + playback position must be used as the source image, and the + source image's dimensions must be the intrinsic width and + intrinsic height + of the media resource (i.e. after any aspect-ratio + correction has been applied).

    + -

    Patterns are represented by objects implementing the opaque CanvasPattern - interface.

    + + +
    -
    pattern = context . createPattern(image, repetition)
    -

    Returns a CanvasPattern object that uses the given image and repeats in the - direction(s) given by the repetition argument.

    -

    The allowed values for repetition are repeat (both - directions), repeat-x (horizontal only), repeat-y - (vertical only), and no-repeat (neither). If the repetition argument is empty, the value repeat is used.

    +
    4.8.11.1.5 Line styles
    + +
    context . lineWidth [ = value ]
    + +
    + +

    Returns the current line width.

    + +

    Can be set, to change the line width. Values that are not + finite values greater than zero are ignored.

    + +
    + +
    context . lineCap [ = value ]
    + +
    + +

    Returns the current line cap style.

    + +

    Can be set, to change the line cap style.

    + +

    The possible line cap styles are butt, + round, and square. Other values are + ignored.

    + +
    + +
    context . lineJoin [ = value ]
    + +
    + +

    Returns the current line join style.

    + +

    Can be set, to change the line join style.

    + +

    The possible line join styles are bevel, + round, and miter. Other values are + ignored.

    + +
    + +
    context . miterLimit [ = value ]
    + +
    + +

    Returns the current miter limit ratio.

    + +

    Can be set, to change the miter limit ratio. Values that are + not finite values greater than zero are ignored.

    -

    If the image isn't yet fully decoded, then nothing is drawn. If the image is a canvas with no - data, throws an "InvalidStateError" DOMException.

    +
    + +
    + +

    The lineWidth + attribute gives the width of lines, in coordinate space units. On + getting, it must return the current value. On setting, zero, + negative, infinite, and NaN values must be ignored, leaving the + value unchanged; other values must change the current value to the + new value.

    + +

    When the context is created, the lineWidth attribute must + initially have the value 1.0.

    + +

    The lineCap attribute + defines the type of endings that UAs will place on the end of + lines. The three valid values are butt, + round, and square. The butt + value means that the end of each line has a flat edge perpendicular + to the direction of the line (and that no additional line cap is + added). The round value means that a semi-circle with + the diameter equal to the width of the line must then be added on to + the end of the line. The square value means that a + rectangle with the length of the line width and the width of half + the line width, placed flat against the edge perpendicular to the + direction of the line, must be added at the end of each line.

    -
    pattern . setTransform(transform)
    +

    On getting, it must return the current value. On setting, if the + new value is one of the literal strings butt, + round, and square, then the current value + must be changed to the new value; other values must ignored, leaving + the value unchanged.

    -

    Sets the transformation matrix that will be used when rendering the pattern during a fill or - stroke painting operation.

    +

    When the context is created, the lineCap attribute must + initially have the value butt.

    -
    +

    The lineJoin + attribute defines the type of corners that UAs will place where two + lines meet. The three valid values are bevel, + round, and miter.

    - +

    On getting, it must return the current value. On setting, if the + new value is one of the literal strings bevel, + round, and miter, then the current value + must be changed to the new value; other values must be ignored, + leaving the value unchanged.

    -

    The createPattern(image, - repetition) method, when invoked, must run these steps:

    +

    When the context is created, the lineJoin attribute must + initially have the value miter.

    -
    1. Let image be the first argument and repetition be - the second argument.

    2. Check the usability of the image argument. If this - returns aborted, then an exception has been thrown and the method doesn't return anything; - abort these steps. If it returns bad, then return null and abort these steps. Otherwise it - returns good; continue with these steps.

    3. If repetition is the empty string, then set it to "repeat".

      +

      A join exists at any point in a subpath shared by two consecutive + lines. When a subpath is closed, then a join also exists at its + first point (equivalent to its last point) connecting the first and + last lines in the subpath.

      -
    4. If repetition is not a case-sensitive match for one of - "repeat", "repeat-x", "repeat-y", or "no-repeat", then throw a - "SyntaxError" DOMException and abort these steps.

    5. Create a new CanvasPattern object with the image image - and the repetition behavior given by repetition.

    6. If the image argument is not origin-clean, then mark the - CanvasPattern object as not - origin-clean.

    7. Return the CanvasPattern object.

    +

    In addition to the point where the join occurs, two additional + points are relevant to each join, one for each line: the two corners + found half the line width away from the join point, one + perpendicular to each line, each on the side furthest from the other + line.

    -

    Modifying the image used when creating a CanvasPattern object - after calling the createPattern() method must - not affect the pattern(s) rendered by the CanvasPattern object.

    +

    A filled triangle connecting these two opposite corners with a + straight line, with the third point of the triangle being the join + point, must be rendered at all joins. The lineJoin attribute controls + whether anything else is rendered. The three aforementioned values + have the following meanings:

    -

    Patterns have a transformation matrix, which controls how the pattern is used when it is - painted. Initially, a pattern's transformation matrix must be the identity transform.

    +

    The bevel value means that this is all that is + rendered at joins.

    -

    The setTransform(transform) method, - when invoked, must reset the pattern's transformation matrix to the value represented by the - result of creating a DOMMatrix - from a dictionary transform, with ignore3D set to true.

    +

    The round value means that a filled arc connecting + the two aforementioned corners of the join, abutting (and not + overlapping) the aforementioned triangle, with the diameter equal to + the line width and the origin at the point of the join, must be + rendered at joins.

    -

    When a pattern is to be rendered within an area, the user agent must run the following steps to - determine what is rendered:

    +

    The miter value means that a second filled triangle + must (if it can given the miter length) be rendered at the join, + with one line being the line between the two aforementioned corners, + abutting the first triangle, and the other two being continuations of + the outside edges of the two joining lines, as long as required to + intersect without going over the miter length.

    -
    1. Create an infinite transparent black bitmap.

    2. +

      The miter length is the distance from the point where the join + occurs to the intersection of the line edges on the outside of the + join. The miter limit ratio is the maximum allowed ratio of the + miter length to half the line width. If the miter length would cause + the miter limit ratio to be exceeded, this second triangle must not + be rendered.

      -

      Place a copy of the image on the bitmap, anchored such that its top left corner is at the - origin of the coordinate space, with one coordinate space unit per CSS - pixel of the image, then place repeated copies of this image horizontally to the left and - right, if the repetition behavior is "repeat-x", or vertically up and - down, if the repetition behavior is "repeat-y", or in all four - directions all over the bitmap, if the repetition behavior is "repeat".

      +

      The miter limit ratio can be explicitly set using the miterLimit + attribute. On getting, it must return the current value. On setting, + zero, negative, infinite, and NaN values must be ignored, leaving + the value unchanged; other values must change the current value to + the new value.

      -

      If the original image data is a bitmap image, then the value painted at a point in the area - of the repetitions is computed by filtering the original image data. When scaling up, if the - imageSmoothingEnabled attribute is - set to false, then the image must be rendered using nearest-neighbor interpolation. Otherwise, - the user agent may use any filtering algorithm (for example bilinear interpolation or - nearest-neighbor). User agents which support multiple filtering algorithms may use the value of - the imageSmoothingQuality attribute - to guide the choice of filtering algorithm. When such a filtering algorithm requires a pixel - value from outside the original image data, it must instead use the value from wrapping the - pixel's coordinates to the original image's dimensions. (That is, the filter uses 'repeat' - behavior, regardless of the value of the pattern's repetition behavior.)

      +

      When the context is created, the miterLimit attribute must + initially have the value 10.0.

      -
    3. Transform the resulting bitmap according to the pattern's transformation matrix.

    4. Transform the resulting bitmap again, this time according to the current transformation matrix.

    5. Replace any part of the image outside the area in which the pattern is to be rendered with - transparent black.

    6. The resulting bitmap is what is to be rendered, with the same origin and same - scale.

    + -
    +
    -

    If a radial gradient or repeated pattern is used when the transformation matrix is singular, - then the resulting style must be transparent black (otherwise the gradient or pattern would be - collapsed to a point or line, leaving the other pixels undefined). Linear gradients and solid - colors always define all points even with singular transformation matrices.

    - +
    4.8.11.1.6 Shadows
    +

    All drawing operations are affected by the four global shadow + attributes.

    +
    context . shadowColor [ = value ]
    +
    -
    4.12.5.1.10 Drawing rectangles to the bitmap
    +

    Returns the current shadow color.

    -

    Objects that implement the CanvasRect interface provide the following methods for - immediately drawing rectangles to the bitmap. The methods each take four arguments; the first two - give the x and y coordinates of the top left of the rectangle, and the - second two give the width w and height h of the rectangle, respectively.

    +

    Can be set, to change the shadow color. Values that cannot be parsed as CSS colors are ignored.

    - +
    -

    The current transformation matrix must be - applied to the following four coordinates, which form the path that must then be closed to get the - specified rectangle: (x, y), (x+w, y), (x+w, y+h), (x, y+h).

    +
    context . shadowOffsetX [ = value ]
    +
    context . shadowOffsetY [ = value ]
    -

    Shapes are painted without affecting the current default path, and are subject to - the clipping region, and, with the exception of clearRect(), also shadow - effects, global alpha, and global composition operators.

    +
    - +

    Returns the current shadow offset.

    -
    context . clearRect(x, y, w, h)
    +

    Can be set, to change the shadow offset. Values that are not finite numbers are ignored.

    -

    Clears all pixels on the bitmap in the given rectangle to transparent black.

    +
    -
    context . fillRect(x, y, w, h)
    +
    context . shadowBlur [ = value ]
    -

    Paints the given rectangle onto the bitmap, using the current fill style.

    +
    -
    context . strokeRect(x, y, w, h)
    +

    Returns the current level of blur applied to shadows.

    -

    Paints the box that outlines the given rectangle onto the bitmap, using the current stroke - style.

    +

    Can be set, to change the blur level. Values that are not finite numbers greater than or equal to zero are ignored.

    -
    + - +
    -

    The clearRect(x, y, - w, h) method, when invoked, must run these steps:

    +

    The shadowColor + attribute sets the color of the shadow.

    -
    1. If any of the arguments are infinite or NaN, then abort these steps.

    2. Let pixels be the set of pixels in the specified rectangle that also - intersect the current clipping region.

    3. Clear the pixels in pixels to a fully transparent black, erasing any - previous image.

    +

    When the context is created, the shadowColor attribute + initially must be fully-transparent black.

    -

    If either height or width are zero, this method has no effect, since the set of - pixels would be empty.

    +

    On getting, the serialization of the color must be returned.

    -

    The fillRect(x, y, - w, h) method, when invoked, must must run these steps:

    +

    On setting, the new value must be parsed as a CSS + <color> value and the color assigned. If the value + cannot be parsed as a CSS <color> value then it must be + ignored, and the attribute must retain its previous value. [CSSCOLOR]

    -
    1. If any of the arguments are infinite or NaN, then abort these steps.

    2. If either w or h are zero, then abort these steps.

    3. Paint the specified rectangular area using the fillStyle.

      -
    +

    The shadowOffsetX + and shadowOffsetY + attributes specify the distance that the shadow will be offset in + the positive horizontal and positive vertical distance + respectively. Their values are in coordinate space units. They are + not affected by the current transformation matrix.

    -

    The strokeRect(x, y, - w, h) method, when invoked, must run these steps:

    +

    When the context is created, the shadow offset attributes must + initially have the value 0.

    -
    1. If any of the arguments are infinite or NaN, then abort these steps.

    2. Take the result of tracing the path described below, - using the CanvasPathDrawingStyles interface's line styles, and fill it with the - strokeStyle.

    +

    On getting, they must return their current value. On setting, the + attribute being set must be set to the new value, except if the + value is infinite or NaN, in which case the new value must be + ignored.

    -

    If both w and h are zero, the path has a single subpath - with just one point (x, y), and no lines, and this method - thus has no effect (the trace a path algorithm returns an empty path in that - case).

    +

    The shadowBlur + attribute specifies the level of the blurring effect. (The units do + not map to coordinate space units, and are not affected by the + current transformation matrix.)

    -

    If just one of either w or h is zero, then the path has - a single subpath consisting of two points, with coordinates (x, y) and (x+w, y+h), in that order, connected by a single straight line.

    +

    When the context is created, the shadowBlur attribute must + initially have the value 0.

    -

    Otherwise, the path has a single subpath consisting of four points, with coordinates (x, y), (x+w, y), (x+w, - y+h), and (x, y+h), - connected to each other in that order by straight lines.

    +

    On getting, the attribute must return its current value. On + setting the attribute must be set to the new value, except if the + value is negative, infinite or NaN, in which case the new value must + be ignored.

    - +

    Shadows are only drawn + if the opacity component of the alpha component of the color + of shadowColor is + non-zero and either the shadowBlur is non-zero, or + the shadowOffsetX + is non-zero, or the shadowOffsetY is + non-zero.

    +

    It is likely that this will change: browser + vendors have indicated an interest in changing the processing model + for shadows such that they only draw when the composition operator + is "source-over" (the default). Read + more...

    +

    When shadows are drawn, they must be rendered as follows:

    -
    4.12.5.1.11 Drawing text to the bitmap
    +
    1. Let A be an infinite transparent black + bitmap on which the source image for which a shadow is being + created has been rendered.

    2. -
      context . fillText(text, x, y [, maxWidth ] )
      context . strokeText(text, x, y [, maxWidth ] )
      +
    3. Let B be an infinite transparent black + bitmap, with a coordinate space and an origin identical to A.

    4. -

      Fills or strokes (respectively) the given text at the given position. If a maximum width is - provided, the text will be scaled to fit that width if necessary.

      +
    5. Copy the alpha channel of A to B, offset by shadowOffsetX in the + positive x direction, and shadowOffsetY in the + positive y direction.

    6. -
      metrics = context . measureText(text)
      +
    7. If shadowBlur is greater than + 0:

      -

      Returns a TextMetrics object with the metrics of the given text in the current - font.

      +
      1. Let σ be half the value of + shadowBlur.

      2. -
    8. metrics . width
      metrics . actualBoundingBoxLeft
      metrics . actualBoundingBoxRight
      metrics . fontBoundingBoxAscent
      metrics . fontBoundingBoxDescent
      metrics . actualBoundingBoxAscent
      metrics . actualBoundingBoxDescent
      metrics . emHeightAscent
      metrics . emHeightDescent
      metrics . hangingBaseline
      metrics . alphabeticBaseline
      metrics . ideographicBaseline
      +
    9. Perform a 2D Gaussian Blur on B, + using σ as the standard deviation.

      +
    10. -

      Returns the measurement described below.

      +

    User agents may limit values of σ to + an implementation-specific maximum value to avoid exceeding + hardware limitations during the Gaussian blur operation.

    - + - +
  • Set the red, green, and blue components of every pixel in + B to the red, green, and blue components + (respectively) of the color of shadowColor.

  • -

    Objects that implement the CanvasText interface provide the following methods for - rendering text.

    +
  • Multiply the alpha component of every pixel in B by the alpha component of the color of shadowColor.

  • -

    The fillText() and strokeText() methods take three or four arguments, - text, x, y, and optionally maxWidth, and render the - given text at the given (x, y) coordinates ensuring that the text - isn't wider than maxWidth if specified, using the current font, textAlign, and textBaseline values. Specifically, when the methods - are invoked, the user agent must run these steps:

    +
  • The shadow is in the bitmap B, and is + rendered as part of the drawing model described below.

  • -
    1. If any of the arguments are infinite or NaN, then abort these steps.

    2. Run the text preparation algorithm, passing it text, the object - implementing the CanvasText interface, and, if the maxWidth argument was - provided, that argument. Let glyphs be the result.

      +
    -
  • Move all the shapes in glyphs to the right by x - CSS pixels and down by y CSS - pixels.

  • +

    If the current composition operation is copy, shadows effectively won't render + (since the shape will overwrite the shadow).

    -

    Paint the shapes given in glyphs, as transformed by the current transformation matrix, with each CSS pixel in the coordinate space of glyphs mapped to one - coordinate space unit.

    -

    For fillText(), fillStyle must be applied to the shapes and strokeStyle must be ignored. For strokeText(), the reverse holds: strokeStyle must be applied to the result of tracing the shapes using the object implementing the - CanvasText interface for the line styles, and fillStyle must be ignored.

    +
    4.8.11.1.7 Simple shapes (rectangles)
    -

    These shapes are painted without affecting the current path, and are subject to shadow effects, global - alpha, the clipping region, and global composition operators.

    +

    There are three methods that immediately draw rectangles to the + bitmap. They each take four arguments; the first two give the x and y coordinates of the top + left of the rectangle, and the second two give the width w and height h of the rectangle, + respectively.

    -
  • +
    +

    The current + transformation matrix must be applied to the following four + coordinates, which form the path that must then be closed to get the + specified rectangle: (x, y), (x+w, y), + (x+w, + y+h), + (x, y+h).

    +

    Shapes are painted without affecting the current path, and are + subject to the clipping region, + and, with the exception of clearRect(), also shadow effects, global alpha, and global composition + operators.

    -

    The measureText() method takes one - argument, text. When the method is invoked, the user agent must run the - text preparation algorithm, passing it text and the object implementing - the CanvasText interface, and then using the returned inline box must - create a new TextMetrics object with its attributes set as described in the following - list. +

    - If doing these measurements requires using a font that has an origin that is not the - same as that of the Document object that owns the - canvas element (even if "using a font" means just checking if that font has a - particular glyph in it before falling back to another font), then the method, when invoked, must - throw a "SecurityError" DOMException. +
    context . clearRect(x, y, w, h)
    - Otherwise, it must return the new TextMetrics object. - [CSS] - (This is a fingerprinting vector.) -

    +
    - +

    Clears all pixels on the canvas in the given rectangle to transparent black.

    -
    width attribute

    The width of that inline box, in CSS pixels. (The - text's advance width.)

    actualBoundingBoxLeft attribute
    +
    -

    The distance parallel to the baseline from the alignment point given by the textAlign attribute to the left side of the bounding - rectangle of the given text, in CSS pixels; positive numbers - indicating a distance going left from the given alignment point. +

    context . fillRect(x, y, w, h)
    -

    The sum of this value and the next (actualBoundingBoxRight) can be wider than - the width of the inline box (width), in - particular with slanted fonts where characters overhang their advance width.

    +
    -
    actualBoundingBoxRight attribute
    +

    Paints the given rectangle onto the canvas, using the current fill style.

    -

    The distance parallel to the baseline from the alignment point given by the textAlign attribute to the right side of the bounding - rectangle of the given text, in CSS pixels; positive numbers - indicating a distance going right from the given alignment point.

    +
    -
    fontBoundingBoxAscent attribute
    +
    context . strokeRect(x, y, w, h)
    -

    The distance from the horizontal line indicated by the textBaseline attribute to the top of the highest - bounding rectangle of all the fonts used to render the text, in CSS - pixels; positive numbers indicating a distance going up from the given baseline.

    +
    -

    This value and the next are useful when rendering a background that have to have - a consistent height even if the exact text being rendered changes. The actualBoundingBoxAscent attribute (and - its corresponding attribute for the descent) are useful when drawing a bounding box around - specific text.

    +

    Paints the box that outlines the given rectangle onto the canvas, using the current stroke style.

    -
    fontBoundingBoxDescent attribute

    The distance from the horizontal line indicated by the textBaseline attribute to the bottom of the lowest - bounding rectangle of all the fonts used to render the text, in CSS - pixels; positive numbers indicating a distance going down from the given - baseline.

    actualBoundingBoxAscent attribute
    +
    -

    The distance from the horizontal line indicated by the textBaseline attribute to the top of the bounding - rectangle of the given text, in CSS pixels; positive numbers - indicating a distance going up from the given baseline. +

    -

    This number can vary greatly based on the input text, even if the first font - specified covers all the characters in the input. For example, the actualBoundingBoxAscent of a lowercase - "o" from an alphabetic baseline would be less than that of an uppercase "F". The value can - easily be negative; for example, the distance from the top of the em box (textBaseline value "top") to the top of the bounding rectangle when - the given text is just a single comma "," would likely (unless the font is - quite unusual) be negative.

    +

    The clearRect(x, y, w, h) method must clear the pixels in the + specified rectangle that also intersect the current clipping region + to a fully transparent black, erasing any previous image. If either + height or width are zero, this method has no effect.

    -
    actualBoundingBoxDescent attribute

    The distance from the horizontal line indicated by the textBaseline attribute to the bottom of the bounding - rectangle of the given text, in CSS pixels; positive numbers - indicating a distance going down from the given baseline.

    emHeightAscent attribute

    The distance from the horizontal line indicated by the textBaseline attribute to the highest top of the em - squares in the line box, in CSS pixels; positive numbers - indicating that the given baseline is below the top of that em square (so this value will usually - be positive). Zero if the given baseline is the top of that em square; half the font size if the - given baseline is the middle of that em square.

    emHeightDescent attribute

    The distance from the horizontal line indicated by the textBaseline attribute to the lowest bottom of the em - squares in the line box, in CSS pixels; positive numbers - indicating that the given baseline is below the bottom of that em square (so this value will - usually be negative). (Zero if the given baseline is the bottom of that em square.)

    hangingBaseline attribute

    The distance from the horizontal line indicated by the textBaseline attribute to the hanging baseline of the - line box, in CSS pixels; positive numbers indicating that - the given baseline is below the hanging baseline. (Zero if the given baseline is the hanging - baseline.)

    alphabeticBaseline attribute

    The distance from the horizontal line indicated by the textBaseline attribute to the alphabetic baseline of - the line box, in CSS pixels; positive numbers indicating - that the given baseline is below the alphabetic baseline. (Zero if the given baseline is the - alphabetic baseline.)

    ideographicBaseline attribute

    The distance from the horizontal line indicated by the textBaseline attribute to the ideographic baseline of - the line box, in CSS pixels; positive numbers indicating - that the given baseline is below the ideographic baseline. (Zero if the given baseline is the - ideographic baseline.)

    +

    The fillRect(x, y, w, h) method must paint the specified + rectangular area using the fillStyle. If either height + or width are zero, this method has no effect.

    -

    Glyphs rendered using fillText() and - strokeText() can spill out of the box given by the - font size (the em square size) and the width returned by measureText() (the text width). Authors are encouraged - to use the bounding box values described above if this is an issue.

    +

    The strokeRect(x, y, w, h) method must stroke the specified + rectangle's path using the strokeStyle, lineWidth, lineJoin, and (if + appropriate) miterLimit attributes. If + both height and width are zero, this method has no effect, since + there is no path to stroke (it's a point). If only one of the two is + zero, then the method will draw a line instead (the path for the + outline is just a straight line along the non-zero dimension).

    -

    A future version of the 2D context API might provide a way to render fragments of - documents, rendered using CSS, straight to the canvas. This would be provided in preference to a - dedicated way of doing multiline layout.

    +
    +
    4.8.11.1.8 Complex shapes (paths)
    -
    4.12.5.1.12 Drawing paths to the canvas
    +

    The context always has a current path. There is only one current + path, it is not part of the drawing state.

    -

    Objects that implement the CanvasDrawPath interface have a current default - path. There is only one current default path, it is not part of the - drawing state. The current default path is a path, as described above.

    +

    A path has a list of zero or more subpaths. Each + subpath consists of a list of one or more points, connected by + straight or curved lines, and a flag indicating whether the subpath + is closed or not. A closed subpath is one where the last point of + the subpath is connected to the first point of the subpath by a + straight line. Subpaths with fewer than two points are ignored when + painting the path.

    -
    context . beginPath()
    +
    context . beginPath()
    -

    Resets the current default path.

    +
    -
    context . fill( [ fillRule ] )
    context . fill(path [, fillRule ] )
    +

    Resets the current path.

    -

    Fills the subpaths of the current default path or the given path with the - current fill style, obeying the given fill rule.

    +
    -
    context . stroke()
    context . stroke(path)
    +
    context . moveTo(x, y)
    -

    Strokes the subpaths of the current default path or the given path with the - current stroke style.

    +
    -
    context . clip( [ fillRule ] )
    context . clip(path [, fillRule ] )
    +

    Creates a new subpath with the given point.

    -

    Further constrains the clipping region to the current default path or the given - path, using the given fill rule to determine what points are in the path.

    +
    -
    context . resetClip()
    +
    context . closePath()
    -

    Unconstrains the clipping region.

    +
    -
    context . isPointInPath(x, y [, fillRule ] )
    context . isPointInPath(path, x, y [, fillRule ] )
    +

    Marks the current subpath as closed, and starts a new subpath with a point the same as the start and end of the newly closed subpath.

    -

    Returns true if the given point is in the current default path or the given - path, using the given fill rule to determine what points are in the path.

    +
    -
    context . isPointInStroke(x, y)
    context . isPointInStroke(path, x, y)
    +
    context . lineTo(x, y)
    -

    Returns true if the given point would be in the region covered by the stroke of the - current default path or the given path, given the current stroke style.

    +
    -

    Spec bugs: 28217

    +

    Adds the given point to the current subpath, connected to the previous one by a straight line.

    - + -

    The beginPath() method, when invoked, - must empty the list of subpaths in the context's current default path so that the it - once again has zero subpaths.

    +
    context . quadraticCurveTo(cpx, cpy, x, y)
    -

    Where the following method definitions use the term intended path, it means the - Path2D argument, if one was provided, or the current default path - otherwise.

    +
    -

    When the intended path is a Path2D object, the coordinates and lines of its - subpaths must be transformed according to the - current transformation matrix on the object implementing the - CanvasTransform interface when used by these methods (without affecting the - Path2D object itself). When the intended path is the current default - path, it is not affected by the transform. (This is because transformations already affect - the current default path when it is constructed, so applying it when it is painted as - well would result in a double transformation.)

    +

    Adds the given point to the current subpath, connected to the previous one by a quadratic Bézier curve with the given control point.

    -

    The fill() method, when invoked, must fill - all the subpaths of the intended path, using fillStyle, and using the fill rule indicated - by the fillRule argument. Open subpaths must be implicitly closed when being filled - (without affecting the actual subpaths).

    +
    -

    The stroke() method, when invoked, must - trace the intended path, using this - CanvasPathDrawingStyles object for the line styles, and then fill the resulting path - using the strokeStyle attribute, using the non-zero winding rule.

    +
    context . bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y)
    -

    As a result of how the algorithm to trace a path is defined, - overlapping parts of the paths in one stroke operation are treated as if their union was what was - painted.

    +
    -

    The stroke style is affected by the transformation during painting, even - if the intended path is the current default path.

    +

    Adds the given point to the current subpath, connected to the previous one by a cubic Bézier curve with the given control points.

    -

    Paths, when filled or stroked, must be painted without affecting the current default - path or any Path2D objects, and must be subject to shadow effects, global - alpha, the clipping region, and global composition operators. (The effect - of transformations is described above and varies based on which path is being used.)

    +
    -
    +
    context . arcTo(x1, y1, x2, y2, radius)
    -

    The clip() method, when invoked, must - create a new clipping region by calculating the intersection of the current clipping - region and the area described by the intended path, using the fill rule indicated by - the fillRule argument. Open subpaths must be implicitly closed when computing the - clipping region, without affecting the actual subpaths. The new clipping region replaces the - current clipping region.

    +
    -

    When the context is initialized, the clipping region must be set to the largest infinite - surface (i.e. by default, no clipping occurs).

    +

    Adds an arc with the given control points and radius to the + current subpath, connected to the previous point by a straight + line.

    - +

    Throws an INDEX_SIZE_ERR exception if the given + radius is negative.

    -

    The resetClip() method, when invoked, - must create a new clipping region that is the largest infinite surface. The new +

    + +
    context . arc(x, y, radius, startAngle, endAngle [, anticlockwise ] )
    + +
    + +

    Adds points to the subpath such that the arc described by the + circumference of the circle described by the arguments, starting + at the given start angle and ending at the given end angle, going + in the given direction (defaulting to clockwise), is added to the + path, connected to the previous point by a straight line.

    + +

    Throws an INDEX_SIZE_ERR exception if the given + radius is negative.

    + +
    + +
    context . rect(x, y, w, h)
    + +
    + +

    Adds a new closed subpath to the path, representing the given rectangle.

    + +
    + +
    context . fill()
    + +
    + +

    Fills the subpaths with the current fill style.

    + +
    + +
    context . stroke()
    + +
    + +

    Strokes the subpaths with the current stroke style.

    + +
    + +
    context . drawSystemFocusRing(element)
    + +
    + +

    If the given element is focused, draws a focus ring around the + current path, following the platform conventions for focus + rings.

    + +
    + +
    shouldDraw = context . drawCustomFocusRing(element)
    + +
    + +

    If the given element is focused, and the user has configured + his system to draw focus rings in a particular manner (for + example, high contrast focus rings), draws a focus ring around the + current path and returns false.

    + +

    Otherwise, returns true if the given element is focused, and + false otherwise. This can thus be used to determine when to draw a + focus ring (see the + example below).

    + +
    + +
    context . scrollPathIntoView()
    + +
    + +

    Scrolls the current path into view. This is especially useful + on devices with small screens, where the whole canvas might not be + visible at once.

    + +
    + +
    context . clip()
    + +
    + +

    Further constrains the clipping region to the given path.

    + +
    + +
    context . isPointInPath(x, y)
    + +
    + +

    Returns true if the given point is in the current path.

    + +
    + +
    + +

    Initially, the context's path must have zero subpaths.

    + +

    The points and lines added to the path by these methods must be + transformed according to the current transformation + matrix as they are added.

    + + +

    The beginPath() + method must empty the list of subpaths so that the context once + again has zero subpaths.

    + + +

    The moveTo(x, y) method must + create a new subpath with the specified point as its first (and + only) point.

    + +

    When the user agent is to ensure there is a subpath + for a coordinate (x, y), the + user agent must check to see if the context has any subpaths, and if + it does not, then the user agent must create a new subpath with the + point (x, y) as its first + (and only) point, as if the moveTo() method had been + called.

    + + +

    The closePath() + method must do nothing if the context has no subpaths. Otherwise, it + must mark the last subpath as closed, create a new subpath whose + first point is the same as the previous subpath's first point, and + finally add this new subpath to the path.

    + +

    If the last subpath had more than one point in its + list of points, then this is equivalent to adding a straight line + connecting the last point back to the first point, thus "closing" + the shape, and then repeating the last (possibly implied) moveTo() call.

    + + +

    New points and the lines connecting them are added to subpaths + using the methods described below. In all cases, the methods only + modify the last subpath in the context's paths.

    + + +

    The lineTo(x, y) method must + ensure there is a subpath for (x, y) if the context has + no subpaths. Otherwise, it must connect the last point in the + subpath to the given point (x, y) using a straight line, and must then add the given + point (x, y) to the + subpath.

    + + +

    The quadraticCurveTo(cpx, cpy, x, + y) method must ensure there + is a subpath for (cpx, + cpy), and then must connect the last + point in the subpath to the given point (x, y) using a quadratic Bézier curve with control + point (cpx, cpy), and must + then add the given point (x, y) to the subpath. [BEZIER]

    + + +

    The bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y) method must + ensure there is a subpath for (cp1x, cp1y), and then must + connect the last point in the subpath to the given point (x, y) using a cubic Bézier + curve with control points (cp1x, cp1y) and (cp2x, cp2y). Then, it must add the point (x, y) to the subpath. [BEZIER]

    + +

    The arcTo(x1, y1, x2, + y2, radius) + method must first ensure there is a subpath for (x1, y1). Then, the behavior depends on the + arguments and the last point in the subpath, as described below.

    + +

    Negative values for radius must cause the + implementation to raise an INDEX_SIZE_ERR + exception.

    + +

    Let the point (x0, y0) be + the last point in the subpath.

    + +

    If the point (x0, y0) is + equal to the point (x1, y1), + or if the point (x1, y1) is + equal to the point (x2, y2), + or if the radius radius is zero, then the method + must add the point (x1, y1) + to the subpath, and connect that point to the previous point (x0, y0) by a straight line.

    + +

    Otherwise, if the points (x0, y0), (x1, y1), and (x2, y2) all lie on a single straight line, then the + method must add the point (x1, y1) to the subpath, and connect that point to the + previous point (x0, y0) by a + straight line.

    + +

    Otherwise, let The Arc be the shortest arc + given by circumference of the circle that has radius radius, and that has one point tangent to the + half-infinite line that crosses the point (x0, + y0) and ends at the point (x1, y1), and that has a different + point tangent to the half-infinite line that ends at the point (x1, y1) and crosses the point + (x2, y2). The points at + which this circle touches these two lines are called the start and + end tangent points respectively. The method must connect the point + (x0, y0) to the start + tangent point by a straight line, adding the start tangent point to + the subpath, and then must connect the start tangent point to the + end tangent point by The Arc, adding the end + tangent point to the subpath.

    + +

    The arc(x, y, radius, + startAngle, endAngle, anticlockwise) method draws an arc. If + the context has any subpaths, then the method must add a straight + line from the last point in the subpath to the start point of the + arc. In any case, it must draw the arc between the start point of + the arc and the end point of the arc, and add the start and end + points of the arc to the subpath. The arc and its start and end + points are defined as follows:

    + +

    Consider a circle that has its origin at (x, + y) and that has radius radius. The points at startAngle + and endAngle along this circle's circumference, + measured in radians clockwise from the positive x-axis, are the + start and end points respectively.

    + +

    If the anticlockwise argument is omitted or + false and endAngle-startAngle is equal to or greater than , or, if the anticlockwise + argument is true and startAngle-endAngle is + equal to or greater than , then the arc + is the whole circumference of this circle.

    + +

    Otherwise, the arc is the path along the circumference of this + circle from the start point to the end point, going anti-clockwise + if the anticlockwise argument is true, and + clockwise otherwise. Since the points are on the circle, as opposed + to being simply angles from zero, the arc can never cover an angle + greater than radians. If the two points are the + same, or if the radius is zero, then the arc is defined as being of + zero length in both directions.

    + +

    Negative values for radius must cause the + implementation to raise an INDEX_SIZE_ERR + exception.

    + +

    The rect(x, y, w, h) method must create a new subpath + containing just the four points (x, y), (x+w, + y), (x+w, y+h), + (x, y+h), with those four points connected by straight + lines, and must then mark the subpath as closed. It must then create + a new subpath with the point (x, y) as the only point in the subpath.

    + + + + + +

    The fill() + method must fill all the subpaths of the current path, using + fillStyle, and using + the non-zero winding number rule. Open subpaths must be implicitly + closed when being filled (without affecting the actual + subpaths).

    + +

    Thus, if two overlapping but otherwise independent + subpaths have opposite windings, they cancel out and result in no + fill. If they have the same winding, that area just gets painted + once.

    + +

    The stroke() method + must calculate the strokes of all the subpaths of the current path, + using the lineWidth, + lineCap, lineJoin, and (if + appropriate) miterLimit attributes, and + then fill the combined stroke area using the strokeStyle + attribute.

    + +

    Since the subpaths are all stroked as one, + overlapping parts of the paths in one stroke operation are treated + as if their union was what was painted.

    + +

    Paths, when filled or stroked, must be painted without affecting + the current path, and must be subject to shadow effects, global alpha, the clipping region, and global composition + operators. (Transformations affect the path when the path is + created, not when it is painted, though the stroke style is + still affected by the transformation during painting.)

    + +

    Zero-length line segments must be pruned before stroking a + path. Empty subpaths must be ignored.

    + +

    The drawSystemFocusRing(element) method, when invoked, must run + the following steps:

    + +
    1. If element is not focused or is not a + descendant of the element with whose context the method is + associated, then abort these steps.

    2. + +
    3. + +

      If the user has requested the use of particular focus rings + (e.g. high-contrast focus rings), or if the element would have a focus ring drawn around it, + then draw a focus ring of the appropriate style along the path, + following platform conventions, and abort these steps.

      + +

      Some platforms only draw focus rings around + elements that have been focused from the keyboard, and not those + focused from the mouse. Other platforms simply don't draw focus + rings around some elements at all unless relevant accessibility + features are enabled. This API is intended to follow these + conventions. User agents that implement distinctions based on the + manner in which the element was focused are encouraged to classify + focus driven by the focus() method + based on the kind of user interaction event from which the call + was triggered (if any).

      + +

      The focus ring should not be subject to the shadow effects, the global alpha, or the global composition + operators, but should be subject to the clipping region.

      + +
    4. + +
    5. + +

      Optionally, inform the user that the + focus is at the location given by the path. User agents may wait + until the next time the event loop reaches its + "update the rendering" step to optionally inform the user.

      + +
    6. + +

    The drawCustomFocusRing(element) method, when invoked, must run + the following steps:

    + +
    1. If element is not focused or is not a + descendant of the element with whose context the method is + associated, then return false and abort these steps.

    2. + +
    3. + +

      If the user has requested the use of particular focus rings + (e.g. high-contrast focus rings), then draw a focus ring of the + appropriate style along the path, return false, and abort these + steps.

      + +

      The focus ring should not be subject to the shadow effects, the global alpha, or the global composition + operators, but should be subject to the clipping region.

      + +
    4. + +
    5. + +

      Optionally, inform the user that the + focus is at the location given by the path. User agents may wait + until the next time the event loop reaches its + "update the rendering" step to optionally inform the user.

      + +
    6. + +
    7. Return true.

    8. + +

    The scrollPathIntoView() + method, when invoked, must run the following steps:

    + +
    1. Let notional child be a hypothetical + element that is a rendered child of the canvas element + whose dimensions are exactly the rectangle of the bounding box of + the current path.

    2. + +
    3. Scroll notional child into view with the align to top flag set.

      + +
    4. Optionally, inform the user that the + caret and/or selection cover the specified + rectangle of the canvas. User agents may wait until the next + time the event loop reaches its "update the rendering" + step to optionally inform the user.

    5. + +

    "Inform the user", as used in this + section, could mean calling a system accessibility API, which would + notify assistive technologies such as magnification tools. To + properly drive magnification based on a focus change, a system + accessibility API driving a screen magnifier needs the bounds for + the newly focused object. The methods above are intended to enable + this by allowing the user agent to report the bounding box of the + path used to render the focus ring as the bounds of the element element passed as an argument, if that + element is focused, and the bounding box of the area to which the + user agent is scrolling as the bounding box of the current + selection.

    + +

    The clip() + method must create a new clipping region by calculating + the intersection of the current clipping region and the area + described by the current path, using the non-zero winding number + rule. Open subpaths must be implicitly closed when computing the + clipping region, without affecting the actual subpaths. The new clipping region replaces the current clipping region.

    -
    +

    When the context is initialized, the clipping region must be set + to the rectangle with the top left corner at (0,0) and the width and + height of the coordinate space.

    -

    The isPointInPath() method, when - invoked, must return true if the point given by the x and y coordinates - passed to the method, when treated as coordinates in the canvas coordinate space unaffected by the - current transformation, is inside the intended path as determined by the fill rule - indicated by the fillRule argument; and must return false otherwise. Open subpaths must - be implicitly closed when computing the area inside the path, without affecting the actual - subpaths. Points on the path itself must be considered to be inside the path. If either of the - arguments are infinite or NaN, then the method must return false.

    + -
    +

    The isPointInPath(x, y) method must + return true if the point given by the x and y coordinates passed to the method, when treated as + coordinates in the canvas coordinate space unaffected by the current + transformation, is inside the current path as determined by the + non-zero winding number rule; and must return false + otherwise. Points on the path itself are considered to be inside the + path. If either of the arguments is infinite or NaN, then the method + must return false.

    -

    The isPointInStroke() method, - when invoked, must return true if the point given by the x and y coordinates - passed to the method, when treated as coordinates in the canvas coordinate space unaffected by the - current transformation, is inside the path that results from tracing the intended path, using the non-zero winding rule, and using the - CanvasPathDrawingStyles interface for the line styles; and must return false - otherwise. Points on the resulting path must be considered to be inside the path. If either of the - arguments are infinite or NaN, then the method must return false.

    +
    -
    - -
    -

    This canvas element has a couple of checkboxes. The path-related commands are - highlighted:

    +

    This canvas element has a couple of checkboxes. The + path-related commands are highlighted:

    <canvas height=400 width=750>
      <label><input type=checkbox id=showA> Show As</label>
    @@ -2796,9 +2356,11 @@ context.fillRect(100,0,50,50); // only this square remains
    } context.beginPath(); context.rect(x-7, y-7, 12 + metrics.width+2, 14); - - context.drawFocusIfNeeded(element); - context.restore(); + if (paint && context.drawCustomFocusRing(element)) { + context.strokeStyle = 'silver'; + context.stroke(); + } + context.restore(); } function drawBase() { /* ... */ } function drawAs() { /* ... */ } @@ -2820,7 +2382,6 @@ context.fillRect(100,0,50,50); // only this square remains

    var context = canvas.getContext('2d'); var x = event.clientX; var y = event.clientY; - var node = event.target; while (node) { x -= node.offsetLeft - node.scrollLeft; y -= node.offsetTop - node.scrollTop; @@ -2840,460 +2401,929 @@ context.fillRect(100,0,50,50); // only this square remains
    document.getElementsByTagName('canvas')[0].addEventListener('click', processClick, false); redraw(); </script>
    - +
    -
    4.12.5.1.13 Drawing focus rings and scrolling paths into view
    -
    context . drawFocusIfNeeded(element)
    context . drawFocusIfNeeded(path, element)
    -

    If the given element is focused, draws a focus ring around the current - default path or the given path, following the platform conventions for focus rings.

    -
    context . scrollPathIntoView()
    context . scrollPathIntoView(path)
    +
    4.8.11.1.9 Text
    -

    Scrolls the current default path or the given path into view. This is especially - useful on devices with small screens, where the whole canvas might not be visible at once.

    +
    context . font [ = value ]
    -
    +
    - +

    Returns the current font settings.

    - Objects that implement the CanvasUserInterface interface provide the following - methods to control drawing focus rings and scrolling paths into view. +

    Can be set, to change the font. The syntax is the same as for + the CSS 'font' property; values that cannot be parsed as CSS font + values are ignored.

    -
    +

    Relative keywords and lengths are computed relative to the font + of the canvas element.

    -

    The drawFocusIfNeeded(element) - method, when invoked, must run these steps:

    +
    -
    1. If element is not focused or is not a descendant of the element with - whose context the method is associated, then abort these steps.

    2. +
      context . textAlign [ = value ]
      -

      Draw a focus ring of the appropriate style along the intended path, following platform - conventions.

      +
      -

      Some platforms only draw focus rings around elements that have been focused from - the keyboard, and not those focused from the mouse. Other platforms simply don't draw focus - rings around some elements at all unless relevant accessibility features are enabled. This API - is intended to follow these conventions. User agents that implement distinctions based on the - manner in which the element was focused are encouraged to classify focus driven by the focus() method based on the kind of user interaction event from which - the call was triggered (if any).

      +

      Returns the current text alignment settings.

      -

      The focus ring should not be subject to the shadow effects, the - global alpha, the global composition operators, or any of - the members in the CanvasFillStrokeStyles, CanvasPathDrawingStyles, - CanvasTextDrawingStyles interfaces, but should be subject to the - clipping region. (The effect of transformations is described above and varies based - on which path is being used.)

      +

      Can be set, to change the alignment. The possible values are + start, end, left, right, and center. Other values are ignored. The default is + start.

      -
    3. Inform the user that the focus is at the location given by the - intended path. User agents may wait until the next time the event loop reaches its - update the rendering step to optionally inform the user.

    + -

    User agents should not implicitly close open subpaths in the intended path when drawing the - focus ring.

    +
    context . textBaseline [ = value ]
    -

    This might be a moot point, however. For example, if the focus ring is drawn as an - axis-aligned bounding rectangle around the points in the intended path, then whether the subpaths - are closed or not has no effect. This specification intentionally does not specify precisely how - focus rings are to be drawn: user agents are expected to honor their platform's native - conventions.

    +
    -
    +

    Returns the current baseline alignment settings.

    -

    The scrollPathIntoView() - method, when invoked, must run these steps:

    +

    Can be set, to change the baseline alignment. The possible + values and their meanings are given below. Other values are + ignored. The default is alphabetic.

    -
    1. Let the specified rectangle be the rectangle of the bounding box of - the intended path.

    2. Let notional child be a hypothetical element that is a rendered child - of the canvas element whose dimensions are those of the specified - rectangle.

    3. Scroll notional child into - view with the align to top flag set.

      +
    -
  • Optionally, inform the user that the caret or selection (or both) - cover the specified rectangle of the canvas. The user agent may wait until the next - time the event loop reaches its update the rendering step to - optionally inform the user.

  • +
    context . fillText(text, x, y [, maxWidth ] )
    +
    context . strokeText(text, x, y [, maxWidth ] )
    -

    "Inform the user", as used in this section, does not imply any persistent state - change. It could mean, for instance, calling a system accessibility API to notify assistive - technologies such as magnification tools so that the user's magnifier moves to the given area of - the canvas. However, it does not associate the path with the element, or provide a region for - tactile feedback, etc.

    +
    - +

    Fills or strokes (respectively) the given text at the given + position. If a maximum width is provided, the text will be scaled + to fit that width if necessary.

    -
    4.12.5.1.14 Drawing images
    +
    -

    Objects that implement the CanvasDrawImage interface have the drawImage method to draw images.

    +
    metrics = context . measureText(text)
    - +
    + +

    Returns a TextMetrics object with the metrics of the given text in the current font.

    + +
    + +
    metrics . width
    + +
    + +

    Returns the advance width of the text that was passed to the + measureText() + method.

    + +
    + +
    + +

    The font IDL + attribute, on setting, must be parsed the same way as the 'font' + property of CSS (but without supporting property-independent style + sheet syntax like 'inherit'), and the resulting font must be + assigned to the context, with the 'line-height' component forced to + 'normal', with the 'font-size' component converted to CSS pixels, + and with system fonts being computed to explicit values. If the new + value is syntactically incorrect (including using + property-independent style sheet syntax like 'inherit' or + 'initial'), then it must be ignored, without assigning a new font + value. [CSS]

    + +

    Font names must be interpreted in the context of the + canvas element's stylesheets; any fonts embedded using + @font-face must therefore be available once + they are loaded. (If a font is referenced before it is fully loaded, + then it must be treated as if it was an unknown font, falling back + to another as described by the relevant CSS specifications.) [CSSFONTS]

    + +

    Only vector fonts should be used by the user agent; if a user + agent were to use bitmap fonts then transformations would likely + make the font look very ugly.

    + +

    On getting, the font + attribute must return the serialized form of the current font of the context + (with no 'line-height' component). [CSSOM]

    + +
    + +

    For example, after the following statement:

    + +
    context.font = 'italic 400 12px/2 Unknown Font, sans-serif';
    + +

    ...the expression context.font would + evaluate to the string "italic 12px "Unknown Font", sans-serif". The + "400" font-weight doesn't appear because that is the default + value. The line-height doesn't appear because it is forced to + "normal", the default value.

    + +
    + +

    When the context is created, the font of the context must be set + to 10px sans-serif. When the 'font-size' component is set to lengths + using percentages, 'em' or 'ex' units, or the 'larger' or 'smaller' + keywords, these must be interpreted relative to the computed value + of the 'font-size' property of the corresponding canvas + element at the time that the attribute is set. When the + 'font-weight' component is set to the relative values 'bolder' and + 'lighter', these must be interpreted relative to the computed value + of the 'font-weight' property of the corresponding + canvas element at the time that the attribute is + set. If the computed values are undefined for a particular case + (e.g. because the canvas element is not in a + Document), then the relative keywords must be + interpreted relative to the normal-weight 10px sans-serif + default.

    + +

    The textAlign IDL + attribute, on getting, must return the current value. On setting, if + the value is one of start, end, left, right, or center, then the + value must be changed to the new value. Otherwise, the new value + must be ignored. When the context is created, the textAlign attribute must + initially have the value start.

    + +

    The textBaseline + IDL attribute, on getting, must return the current value. On + setting, if the value is one of top, hanging, middle, alphabetic, + ideographic, + or bottom, + then the value must be changed to the new value. Otherwise, the new + value must be ignored. When the context is created, the textBaseline attribute + must initially have the value alphabetic.

    + +
    + +

    The textBaseline + attribute's allowed keywords correspond to alignment points in the + font:

    + +

    The top of the em square is roughly at the top of the glyphs in a font, the hanging baseline is where some glyphs like आ are anchored, the middle is half-way between the top of the em square and the bottom of the em square, the alphabetic baseline is where characters like Á, ÿ, f, and Ω are anchored, the ideographic baseline is where glyphs like 私 and 達 are anchored, and the bottom of the em square is roughly at the bottom of the glyphs in a font. The top and bottom of the bounding box can be far from these baselines, due to glyphs extending far outside the em square.

    + +

    The keywords map to these alignment points as follows:

    + +
    top +
    The top of the em square
    + +
    hanging +
    The hanging baseline
    + +
    middle +
    The middle of the em square
    + +
    alphabetic +
    The alphabetic baseline
    + +
    ideographic +
    The ideographic baseline
    + +
    bottom +
    The bottom of the em square
    + +
    + +

    The fillText() and + strokeText() + methods take three or four arguments, text, x, y, and optionally maxWidth, and render the given text at the given (x, y) coordinates ensuring that the text isn't wider + than maxWidth if specified, using the current + font, textAlign, and textBaseline + values. Specifically, when the methods are called, the user agent + must run the following steps:

    + +
    1. If maxWidth is present but less than or + equal to zero, return without doing anything; abort these + steps.

    2. + +
    3. Let font be the current font of the + context, as given by the font attribute.

    4. + +
    5. Replace all the space + characters in text with U+0020 SPACE + characters.

    6. + +
    7. Form a hypothetical infinitely wide CSS line box containing + a single inline box containing the text text, + with all the properties at their initial values except the 'font' + property of the inline box set to font, the + 'direction' property of the inline box set to the + directionality of the canvas element, and the + 'white-space' property set to 'pre'. [CSS]

    8. + + + +
    9. If the maxWidth argument was specified + and the hypothetical width of the inline box in the hypothetical + line box is greater than maxWidth CSS pixels, + then change font to have a more condensed font + (if one is available or if a reasonably readable one can be + synthesized by applying a horizontal scale factor to the font) or a + smaller font, and return to the previous step.

    10. + +
    11. + +

      Let the anchor point be a point on the + inline box, determined by the textAlign and textBaseline values, as + follows:

      + +

      Horizontal position:

      + +
      If textAlign is left
      +
      If textAlign is start and the directionality of the + canvas element is 'ltr'
      +
      If textAlign is end and the directionality of the + canvas element is 'rtl'
      + +
      Let the anchor point's horizontal + position be the left edge of the inline box.
      + + +
      If textAlign is right
      +
      If textAlign is end and the directionality of the + canvas element is 'ltr'
      +
      If textAlign is start and the directionality of the + canvas element is 'rtl'
      + +
      Let the anchor point's horizontal + position be the right edge of the inline box.
      + + +
      If textAlign is center
      + +
      Let the anchor point's horizontal + position be half way between the left and right edges of the + inline box.
      + +

      Vertical position:

      + +
      If textBaseline is top
      + +
      Let the anchor point's vertical position + be the top of the em box of the first available font of the + inline box.
      + + +
      If textBaseline is hanging
      + +
      Let the anchor point's vertical position + be the hanging baseline of the first available font of the inline + box.
      + + +
      If textBaseline is middle
      + +
      Let the anchor point's vertical position + be half way between the bottom and the top of the em box of the + first available font of the inline box.
      + + +
      If textBaseline is alphabetic
      + +
      Let the anchor point's vertical position + be the alphabetic baseline of the first available font of the inline + box.
      + + +
      If textBaseline is ideographic
      + +
      Let the anchor point's vertical position + be the ideographic baseline of the first available font of the inline + box.
      + + +
      If textBaseline is bottom
      + +
      Let the anchor point's vertical position + be the bottom of the em box of the first available font of the + inline box.
      + +
    12. + +
    13. + +

      Paint the hypothetical inline box as the shape given by the + text's glyphs, as transformed by the current transformation + matrix, and anchored and sized so that before applying the + current transformation + matrix, the anchor point is at (x, y) and each CSS pixel is + mapped to one coordinate space unit.

      + +

      For fillText() + fillStyle must be + applied to the glyphs and strokeStyle must be + ignored. For strokeText() the reverse + holds and strokeStyle must be + applied to the glyph outlines and fillStyle must be + ignored.

      + +

      Text is painted without affecting the current path, and is + subject to shadow effects, global alpha, the clipping region, and global composition + operators.

      + +
    14. + +

    The measureText() + method takes one argument, text. When the method + is invoked, the user agent must replace all the space characters in text with + U+0020 SPACE characters, and then must form a hypothetical + infinitely wide CSS line box containing a single inline box + containing the text text, with all the + properties at their initial values except the 'white-space' property + of the inline element set to 'pre' and the 'font' property of the + inline element set to the current font of the context as given by + the font attribute, and + must then return a new TextMetrics object with its + width attribute set to + the width of that inline box, in CSS pixels. [CSS]

    + +

    The TextMetrics interface is used for the objects + returned from measureText(). It has one + attribute, width, which is set + by the measureText() + method.

    + +

    Glyphs rendered using fillText() and strokeText() can spill out + of the box given by the font size (the em square size) and the width + returned by measureText() (the text + width). This version of the specification does not provide a way to + obtain the bounding box dimensions of the text. If the text is to be + rendered and removed, care needs to be taken to replace the entire + area of the canvas that the clipping region covers, not just the box + given by the em square height and measured text width.

    + + + + + + +
    + +

    A future version of the 2D context API may provide a + way to render fragments of documents, rendered using CSS, straight + to the canvas. This would be provided in preference to a dedicated + way of doing multiline layout.

    + + + +
    4.8.11.1.10 Images
    + +

    To draw images onto the canvas, the drawImage method + can be used.

    This method can be invoked with three different sets of arguments:

    - +

    Each of those three can take either an + HTMLImageElement, an HTMLCanvasElement, or + an HTMLVideoElement for the image + argument.

    - +
    context . drawImage(image, dx, dy)
    +
    context . drawImage(image, dx, dy, dw, dh)
    +
    context . drawImage(image, sx, sy, sw, sh, dx, dy, dw, dh)
    -
    context . drawImage(image, dx, dy)
    context . drawImage(image, dx, dy, dw, dh)
    context . drawImage(image, sx, sy, sw, sh, dx, dy, dw, dh)
    +

    Draws the given image onto the canvas. The arguments are interpreted as follows:

    -

    The sx and sy parameters give the x and y coordinates of the source rectangle; the sw and sh arguments give the width and height of the source rectangle; the dx and dy give the x and y coordinates of the destination rectangle; and the dw and dh arguments give the width and height of the destination rectangle.

    +

    The sx and sy parameters give the x and y coordinates of the source rectangle; the sw and sh arguments give the width and height of the source rectangle; the dx and dy give the x and y coordinates of the destination rectangle; and the dw and dh arguments give the width and height of the destination rectangle.

    + +

    If the first argument isn't an img, + canvas, or video element, throws a + TYPE_MISMATCH_ERR exception. If the image has no + image data, throws an INVALID_STATE_ERR exception. If + the one of the source rectangle dimensions is zero, throws an + INDEX_SIZE_ERR exception. If the image isn't yet + fully decoded, then nothing is drawn.

    + +
    + +
    + +

    If not specified, the dw and dh arguments must default to the values of sw and sh, interpreted such that + one CSS pixel in the image is treated as one unit in the canvas + coordinate space. If the sx, sy, sw, and sh arguments are omitted, they must default to 0, 0, + the image's intrinsic width in image pixels, and the image's + intrinsic height in image pixels, respectively. If the image has no + intrinsic dimensions, the concrete object size must be used + instead, as determined using the CSS "Concrete + Object Size Resolution" algorithm, with the specified + size having neither a definite width nor height, nor any + additional contraints, the object's intrinsic properties being those + of the image argument, and the default object + size being the size of the canvas element. [CSSIMAGES]

    + +

    The image argument is an instance of either + HTMLImageElement, HTMLCanvasElement, or + HTMLVideoElement.

    + +

    If the image argument is an + HTMLImageElement object that is not fully decodable, or if the image argument is an HTMLVideoElement + object whose readyState + attribute is either HAVE_NOTHING or HAVE_METADATA, then the + implementation must return without drawing anything.

    + +

    If the image argument is an + HTMLCanvasElement object with either a horizontal + dimension or a vertical dimension equal to zero, then the + implementation must raise an INVALID_STATE_ERR + exception.

    + + +

    The source rectangle is the rectangle whose corners are the four + points (sx, sy), (sx+sw, sy), (sx+sw, sy+sh), (sx, sy+sh).

    + +

    If one of the sw or sh + arguments is zero, the implementation must raise an + INDEX_SIZE_ERR exception.

    + +

    The destination rectangle is the rectangle whose corners are the + four points (dx, dy), + (dx+dw, dy), (dx+dw, dy+dh), (dx, dy+dh).

    + +

    When drawImage() is + invoked, the region of the image specified by the source rectangle + must be painted on the region of the canvas specified by the + destination rectangle, after applying the current transformation + matrix to the points of the destination rectangle.

    -

    If the image isn't yet fully decoded, then nothing is drawn. If the image is a canvas with no - data, throws an "InvalidStateError" DOMException.

    +

    The original image data of the source image must be used, not the + image as it is rendered (e.g. width and height attributes on the source + element have no effect). The image data must be processed in the + original direction, even if the dimensions given are negative.

    -
    +

    This specification does not define the algorithm to + use when scaling the image, if necessary.

    - +

    When a canvas is drawn onto itself, the drawing + model requires the source to be copied before the image is drawn + back onto the canvas, so it is possible to copy parts of a canvas + onto overlapping parts of itself.

    -

    When the drawImage() method is invoked, the user - agent must run these steps:

    +

    If the original image data is a bitmap image, the value painted + at a point in the destination rectangle is computed by filtering the + original image data. The user agent may use any filtering algorithm + (for example bilinear interpolation or nearest-neighbor). When the + filtering algorithm requires a pixel value from outside the original + image data, it must instead use the value from the nearest edge + pixel. (That is, the filter uses 'clamp-to-edge' behavior.)

    + + -
    1. If any of the arguments are infinite or NaN, then abort these steps.

    2. Check the usability of the image argument. If this - returns aborted, then an exception has been thrown and the method doesn't return anything; - abort these steps. If it returns bad, then abort these steps without drawing anything. - Otherwise it returns good; continue with these steps.

    3. +

      When the drawImage() method + is passed an animated image as its image + argument, the user agent must use the poster frame of the animation, + or, if there is no poster frame, the first frame of the + animation.

      + -

      Establish the source and destination rectangles as follows:

      +

      When the image argument is an + HTMLVideoElement, then the frame at the current + playback position must be used as the source image, and the + source image's dimensions must be the intrinsic width and + intrinsic height + of the media resource (i.e. after any aspect-ratio + correction has been applied).

      + -

      If not specified, the dw and dh arguments must default to the values of - sw and sh, interpreted such that one CSS pixel - in the image is treated as one unit in the output bitmap's coordinate space. If the - sx, sy, sw, and sh arguments are omitted, then they - must default to 0, 0, the image's intrinsic width in image pixels, and the image's - intrinsic height in image pixels, respectively. If the image has no intrinsic - dimensions, then the concrete object size must be used instead, as determined - using the CSS "Concrete Object - Size Resolution" algorithm, with the specified size having neither a definite width - nor height, nor any additional constraints, the object's intrinsic properties being those of the - image argument, and the default object size being the size of the - output bitmap. [CSSIMAGES]

      +

      Images are painted without affecting the current path, and are + subject to shadow effects, global alpha, the clipping region, and global composition + operators.

      -

      The source rectangle is the rectangle whose corners are the four points (sx, sy), (sx+sw, sy), (sx+sw, sy+sh), - (sx, sy+sh).

      + + + + +
      4.8.11.1.11 Pixel manipulation
      + +
      imagedata = context . createImageData(sw, sh)
      + +
      -

      The destination rectangle is the rectangle whose corners are the four points (dx, dy), (dx+dw, dy), (dx+dw, dy+dh), - (dx, dy+dh).

      +

      Returns an ImageData object with the given + dimensions in CSS pixels (which might map to a different number of + actual device pixels exposed by the object itself). All the pixels + in the returned object are transparent black.

      -

      When the source rectangle is outside the source image, the source rectangle must be clipped - to the source image and the destination rectangle must be clipped in the same proportion.

      +
      + +
      imagedata = context . createImageData(imagedata)
      + +
      + +

      Returns an ImageData object with the same + dimensions as the argument. All the pixels in the returned object + are transparent black.

      + +
      + +
      imagedata = context . getImageData(sx, sy, sw, sh)
      + +
      + +

      Returns an ImageData object containing the image + data for the given rectangle of the canvas.

      + +

      Throws a NOT_SUPPORTED_ERR exception if any of the + arguments are not finite. Throws an INDEX_SIZE_ERR + exception if the either of the width or height arguments are + zero.

      + +
      + +
      imagedata . width
      +
      imagedata . height
      + +
      + +

      Returns the actual dimensions of the data in the ImageData object, in device pixels.

      + +
      + +
      imagedata . data
      + +
      + +

      Returns the one-dimensional array containing the data in RGBA order, as integers in the range 0 to 255.

      -

      When the destination rectangle is outside the destination image (the - output bitmap), the pixels that land outside the output bitmap are - discarded, as if the destination was an infinite canvas whose rendering was clipped to the - dimensions of the output bitmap.

      +
      -
    4. If one of the sw or sh arguments is zero, then abort - these steps. Nothing is painted.

    5. +
      context . putImageData(imagedata, dx, dy [, dirtyX, dirtyY, dirtyWidth, dirtyHeight ])
      -

      Paint the region of the image argument specified by the source rectangle - on the region of the rendering context's output bitmap specified by the - destination rectangle, after applying the current - transformation matrix to the destination rectangle.

      +
      -

      The image data must be processed in the original direction, even if the dimensions given are - negative.

      +

      Paints the data from the given ImageData object + onto the canvas. If a dirty rectangle is provided, only the pixels + from that rectangle are painted.

      -

      When scaling up, if the imageSmoothingEnabled attribute is set to - true, the user agent should attempt to apply a smoothing algorithm to the image data when it is - scaled. User agents which support multiple filtering algorithms may use the value of the imageSmoothingQuality attribute to guide - the choice of filtering algorithm when the imageSmoothingEnabled attribute is set to - true. Otherwise, the image must be rendered using nearest-neighbor interpolation.

      +

      The globalAlpha + and globalCompositeOperation + attributes, as well as the shadow attributes, are ignored for the + purposes of this method call; pixels in the canvas are replaced + wholesale, with no composition, alpha blending, no shadows, + etc.

      -

      This specification does not define the precise algorithm to use when scaling an - image down, or when scaling an image up when the imageSmoothingEnabled attribute is set to - true.

      +

      If the first argument is null, throws a + TYPE_MISMATCH_ERR exception. Throws a + NOT_SUPPORTED_ERR exception if any of the other + arguments are not finite.

      -

      When a canvas element is drawn onto itself, the drawing - model requires the source to be copied before the image is drawn, so it is possible to - copy parts of a canvas element onto overlapping parts of itself.

      +
      -

      If the original image data is a bitmap image, then the value painted at a point in the - destination rectangle is computed by filtering the original image data. The user agent may use - any filtering algorithm (for example bilinear interpolation or nearest-neighbor). When the - filtering algorithm requires a pixel value from outside the original image data, it must instead - use the value from the nearest edge pixel. (That is, the filter uses 'clamp-to-edge' behavior.) - When the filtering algorithm requires a pixel value from outside the source rectangle but inside - the original image data, then the value from the original image data must be used.

      - - +
      -

      Thus, scaling an image in parts or in whole will have the same effect. This does - mean that when sprites coming from a single sprite sheet are to be scaled, adjacent images in - the sprite sheet can interfere. This can be avoided by ensuring each sprite in the sheet is - surrounded by a border of transparent black, or by copying sprites to be scaled into temporary - canvas elements and drawing the scaled sprites from there.

      +

      The createImageData() + method is used to instantiate new blank ImageData + objects. When the method is invoked with two arguments sw and sh, it must return an + ImageData object representing a rectangle with a width + in CSS pixels equal to the absolute magnitude of sw and a height in CSS pixels equal to the absolute + magnitude of sh. When invoked with a single imagedata argument, it must return an + ImageData object representing a rectangle with the same + dimensions as the ImageData object passed as the + argument. The ImageData object returned must be filled + with transparent black.

      -

      Images are painted without affecting the current path, and are subject to shadow effects, global - alpha, the clipping region, and global composition operators.

      +

      The getImageData(sx, sy, sw, + sh) method must return an + ImageData object representing the underlying pixel data + for the area of the canvas denoted by the rectangle whose corners are + the four points (sx, sy), + (sx+sw, sy), (sx+sw, sy+sh), (sx, sy+sh), in canvas + coordinate space units. Pixels outside the canvas must be returned + as transparent black. Pixels must be returned as non-premultiplied + alpha values.

      -
    6. If the image argument is not origin-clean, then set the - CanvasRenderingContext2D's origin-clean flag to false.

    +

    If any of the arguments to createImageData() or + getImageData() + are infinite or NaN, the method must instead raise a + NOT_SUPPORTED_ERR exception. If either the sw or sh arguments are zero, + the method must instead raise an INDEX_SIZE_ERR + exception.

    - +

    ImageData objects must be initialized so that their + width attribute + is set to w, the number of physical device + pixels per row in the image data, their height attribute is + set to h, the number of rows in the image data, + and their data + attribute is initialized to a CanvasPixelArray object + holding the image data. At least one pixel's worth of image data + must be returned.

    - -
    4.12.5.1.15 Pixel manipulation
    - -
    imagedata = new ImageData(sw, sh)
    imagedata = context . createImageData(sw, sh)
    - -

    Returns an ImageData object with the given dimensions. All the pixels in the - returned object are transparent black.

    - -

    Throws an "IndexSizeError" DOMException if either of - the width or height arguments are zero.

    - -
    imagedata = context . createImageData(imagedata)
    - -

    Returns an ImageData object with the same dimensions as the argument. All the - pixels in the returned object are transparent black.

    - -
    imagedata = new ImageData(data, sw [, sh ] )
    - -

    Returns an ImageData object using the data provided in the Uint8ClampedArray argument, interpreted using the given - dimensions.

    - -

    As each pixel in the data is represented by four numbers, the length of the data needs to be - a multiple of four times the given width. If the height is provided as well, then the length - needs to be exactly the width times the height times 4.

    - -

    Throws an "IndexSizeError" DOMException if the given - data and dimensions can't be interpreted consistently, or if either dimension is zero.

    - -
    imagedata = context . getImageData(sx, sy, sw, sh)
    - -

    Returns an ImageData object containing the image data for the given rectangle of - the bitmap.

    - -

    Throws an "IndexSizeError" DOMException if the either - of the width or height arguments are zero.

    - -
    imagedata . width
    imagedata . height
    - -

    Returns the actual dimensions of the data in the ImageData object, in - pixels.

    - -
    imagedata . data
    - -

    Returns the one-dimensional array containing the data in RGBA order, as integers in the range - 0 to 255.

    - -
    context . putImageData(imagedata, dx, dy [, dirtyX, dirtyY, dirtyWidth, dirtyHeight ] )
    - -

    Paints the data from the given ImageData object onto the bitmap. If a dirty - rectangle is provided, only the pixels from that rectangle are painted.

    - -

    The globalAlpha and globalCompositeOperation attributes, as - well as the shadow attributes, are ignored for the purposes of this method call; pixels in the - canvas are replaced wholesale, with no composition, alpha blending, no shadows, etc.

    - -

    Throws an "InvalidStateError" DOMException if the - imagedata object's data's [[Detached]] internal slot value is true.

    - -
    - - - -

    Objects that implement the CanvasImageData interface provide the following methods - for reading and writing pixel data to the bitmap.

    - -

    The ImageData() constructors and the - createImageData() methods are - used to instantiate new ImageData objects.

    - -

    When the ImageData() constructor is invoked with two - numeric arguments sw and sh, it must create an ImageData - object with parameter pixelsPerRow set to sw, and rows set - to sh. The image data of the newly created ImageData object must be - initialized to transparent black. If both sw and sh are non-zero, then - return the new ImageData object. If one or both of sw and sh - are zero, then the constructor must throw an "IndexSizeError" - DOMException instead.

    - -

    When the ImageData() constructor is invoked with its first - argument being an Uint8ClampedArray source - and its second and optional third arguments being numeric arguments sw and - sh, it must run these steps:

    - -
    1. Let length be the number of bytes in source.

    2. If length is not a non-zero integral multiple of four, then throw an - "InvalidStateError" DOMException and abort these - steps.

    3. Let length be length divided by four.

      - -
    4. - -

      If length is not an integral multiple of sw, then throw an - "IndexSizeError" DOMException and abort these steps.

      - -

      At this step, the length is guaranteed to be greater than zero (otherwise the - second step above would have aborted the steps), so if sw is zero, this - step will throw the exception and abort these steps.

      - -
    5. Let height be length divided by sw.

    6. If the sh argument was not omitted, and its value is not equal to - height, then throw an "IndexSizeError" - DOMException and abort these steps.

    7. - -

      Create an ImageData object, with parameter pixelsPerRow - set to sw, rows set to sh, and using source. - Return the newly created ImageData object.

      - -

      The resulting object's data is not a copy of source, it's - the actual Uint8ClampedArray object passed as the - first argument to the constructor.

      - -
    - -

    When the createImageData() method is - invoked with two numeric arguments sw and sh, it must create an - ImageData object, with parameter pixelsPerRow set to the - absolute magnitude of sw, and parameter rows set to the absolute magnitude - of sh. Initialize the image data of the new ImageData object to - transparent black. If both sw and sh are non-zero, then return - the new ImageData object. If one or both of sw and sh are - zero, then throw an "IndexSizeError" DOMException - instead.

    - -

    When the createImageData() method is - invoked with a single imagedata argument, it must create an - ImageData object, with parameter pixelsPerRow set to the value of - the width attribute of the ImageData - object passed as the argument, and the rows parameter set to the value of the - height attribute. - Initialize the image data of the new ImageData object to transparent black. Return - the newly created ImageData object.

    - -

    The getImageData(sx, - sy, sw, sh) method, when invoked, must, - if either the sw or sh arguments are zero, throw an - "IndexSizeError" DOMException; otherwise, - - if the CanvasRenderingContext2D's origin-clean flag is set to false, it must throw a - "SecurityError" DOMException; - - otherwise, it must create an ImageData object, with parameter - pixelsPerRow set to sw, and parameter rows set to sh. - Set the pixel values of the image data of the newly created ImageData object to - represent the output bitmap for the area of that bitmap denoted by the rectangle - whose corners are the four points (sx, sy), (sx+sw, sy), (sx+sw, sy+sh), (sx, - sy+sh), in the bitmap's coordinate space units. - Pixels outside the output bitmap must be set to transparent black. Pixel values - must not be premultiplied by alpha.

    - -

    When the user agent is required to create an ImageData object, given a - positive integer number of rows rows, a positive integer number of pixels per row - pixelsPerRow, and an optional Uint8ClampedArray source, it must run these - steps:

    - -
    1. Let imageData be a new uninitialized ImageData object.

    2. If source is specified, then assign the data attribute of imageData to - source.

    3. -

      If source is not specified, then initialize the data attribute of imageData to a new Uint8ClampedArray object. The Uint8ClampedArray object must use a new Canvas - Pixel ArrayBuffer for its storage, and must have a - zero start offset and a length equal to the length of its storage, in bytes. The Canvas - Pixel ArrayBuffer must have the correct size to - store rows × pixelsPerRow pixels.

      - -

      If the Canvas Pixel ArrayBuffer cannot be - allocated, then rethrow the RangeError thrown by JavaScript, - and abort these steps.

      -
    4. Initialize the width attribute of - imageData to pixelsPerRow.

    5. Initialize the height attribute of - imageData to rows.

    6. Return imageData.

    - -

    ImageData objects are serializable objects. Their serialization - steps, given value and serialized, are:

    - -
    1. Set serialized.[[Data]] to the sub-serialization of the value of - value's data attribute.

    2. Set serialized.[[Width]] to the value of value's width attribute.

    3. Set serialized.[[Height]] to the value of value's height attribute.

    - -

    Their deserialization steps, given serialized and value, - are:

    - -
    1. Initialize value's data attribute - to the sub-deserialization of serialized.[[Data]].

    2. Initialize value's width attribute - to serialized.[[Width]].

    3. Initialize value's height attribute - to serialized.[[Height]].

    - -

    A Canvas Pixel ArrayBuffer is an ArrayBuffer whose data is represented in left-to-right order, row - by row top to bottom, starting with the top left, with each pixel's red, green, blue, and alpha - components being given in that order for each pixel. Each component of each pixel represented in - this array must be in the range 0..255, representing the 8 bit value for that component. The - components must be assigned consecutive indices starting with 0 for the top left pixel's red - component.

    - -

    The putImageData() method writes - data from ImageData structures back to the rendering context's output - bitmap. Its arguments are: imagedata, dx, dy, - dirtyX, dirtyY, dirtyWidth, and dirtyHeight.

    - -

    When the last four arguments to this method are omitted, they must be assumed to have the - values 0, 0, the width member of the imagedata structure, and the height - member of the imagedata structure, respectively.

    - -

    The method, when invoked, must act as follows:

    +

    The CanvasPixelArray object provides ordered, + indexed access to the color components of each pixel of the image + data. The data must be represented in left-to-right order, row by + row top to bottom, starting with the top left, with each pixel's + red, green, blue, and alpha components being given in that order for + each pixel. Each component of each device pixel represented in this + array must be in the range 0..255, representing the 8 bit value for + that component. The components must be assigned consecutive indices + starting with 0 for the top left pixel's red component.

    + +

    The CanvasPixelArray object thus represents h×w×4 integers. The + length + attribute of a CanvasPixelArray object must return this + number.

    + +

    The object's supported property indices are the + numbers in the range 0 .. h×w×4-1.

    + +

    To determine the value of + an indexed property index, the user agent + must return the value of the indexth component + in the array.

    + +

    To set the value of an + existing indexed property index to value + value, the value of the indexth component in the array must be set to value.

    + +

    The width and height (w and h) might be different from the sw + and sh arguments to the above methods, e.g. if + the canvas is backed by a high-resolution bitmap, or if the sw and sh arguments are + negative.

    + +

    The putImageData(imagedata, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight) method writes data from + ImageData structures back to the canvas.

    + +

    If any of the arguments to the method are infinite or NaN, the + method must raise a NOT_SUPPORTED_ERR exception.

    + +

    When the last four arguments are omitted, they must be assumed to + have the values 0, 0, the width member of the imagedata structure, and the height member of the imagedata structure, respectively.

    + +

    When invoked with arguments that do not, per the last few + paragraphs, cause an exception to be raised, the putImageData() method + must act as follows:

    1. -

      If imagedata's data attribute value's - [[Detached]] internal slot value is true, then throw an - "InvalidStateError" DOMException and abort these - steps.

      +

      Let dxdevice be the x-coordinate + of the device pixel in the underlying pixel data of the canvas + corresponding to the dx coordinate in the + canvas coordinate space.

      -
    2. +

      Let dydevice be the y-coordinate + of the device pixel in the underlying pixel data of the canvas + corresponding to the dy coordinate in the + canvas coordinate space.

      -

      If dirtyWidth is negative, then let dirtyX be dirtyX+dirtyWidth, and let dirtyWidth be equal - to the absolute magnitude of dirtyWidth.

      +
    3. -

      If dirtyHeight is negative, then let dirtyY be dirtyY+dirtyHeight, and let dirtyHeight be - equal to the absolute magnitude of dirtyHeight.

      +
    4. -
    5. +

      If dirtyWidth is negative, let dirtyX be dirtyX+dirtyWidth, and let dirtyWidth be equal to the absolute magnitude of + dirtyWidth.

      -

      If dirtyX is negative, then let dirtyWidth be dirtyWidth+dirtyX, and let dirtyX be zero.

      +

      If dirtyHeight is negative, let dirtyY be dirtyY+dirtyHeight, and let dirtyHeight be equal to the absolute magnitude of + dirtyHeight.

      -

      If dirtyY is negative, then let dirtyHeight be dirtyHeight+dirtyY, and let dirtyY be zero.

      +
    6. -
    7. +
    8. -

      If dirtyX+dirtyWidth is greater than the width attribute of the imagedata argument, then - let dirtyWidth be the value of that width - attribute, minus the value of dirtyX.

      +

      If dirtyX is negative, let dirtyWidth be dirtyWidth+dirtyX, and + let dirtyX be zero.

      -

      If dirtyY+dirtyHeight is greater than the height attribute of the imagedata argument, then - let dirtyHeight be the value of that height attribute, minus the value of dirtyY.

      +

      If dirtyY is negative, let dirtyHeight be dirtyHeight+dirtyY, and + let dirtyY be zero.

      -
    9. +
    10. -

      If, after those changes, either dirtyWidth or dirtyHeight are negative - or zero, then abort these steps without affecting any bitmaps.

      +
    11. -
    12. For all integer values of x and y where dirtyX ≤ x < dirtyX+dirtyWidth and dirtyY ≤ y < dirtyY+dirtyHeight, copy the - four channels of the pixel with coordinate (x, y) in - the imagedata data structure's Canvas Pixel - ArrayBuffer to the pixel with coordinate (dx+x, dy+y) - in the rendering context's output bitmap.

    +

    If dirtyX+dirtyWidth is greater than the width attribute of the imagedata argument, let dirtyWidth be the value of that width attribute, minus the + value of dirtyX.

    -

    Due to the lossy nature of converting to and from premultiplied alpha color - values, pixels that have just been set using putImageData() might be returned to an equivalent - getImageData() as different values.

    +

    If dirtyY+dirtyHeight is greater than the height attribute of the imagedata argument, let dirtyHeight be the value of that height attribute, minus the + value of dirtyY.

    -

    The current path, transformation matrix, - shadow attributes, global - alpha, the clipping region, and global composition operator must not - affect the methods described in this section.

    + - +
  • + +

    If, after those changes, either dirtyWidth + or dirtyHeight is negative or zero, stop these + steps without affecting the canvas.

    + +
  • + +
  • Otherwise, for all integer values of x + and y where dirtyX ≤ x < dirtyX+dirtyWidth + and dirtyY ≤ y < dirtyY+dirtyHeight, copy the four channels of + the pixel with coordinate (x, y) in the imagedata data + structure to the pixel with coordinate (dxdevice+x, + dydevice+y) in the underlying pixel data of the + canvas.

  • + +

    The handling of pixel rounding when the specified coordinates do + not exactly map to the device coordinate space is not defined by + this specification, except that the following must result in no + visible changes to the rendering:

    + +
    context.putImageData(context.getImageData(x, y, w, h), p, q);
    + +

    ...for any value of x, y, + w, and h and where p is the smaller of x and the sum + of x and w, and q is the smaller of y and the sum + of y and h; and except that + the following two calls:

    + +
    context.createImageData(w, h);
    +context.getImageData(0, 0, w, h);
    + +

    ...must return ImageData objects with the same + dimensions, for any value of w and h. In other words, while user agents may round the + arguments of these methods so that they map to device pixel + boundaries, any rounding performed must be performed consistently + for all of the createImageData(), getImageData() and putImageData() + operations.

    + +

    Due to the lossy nature of converting to and from + premultiplied alpha color values, pixels that have just been set + using putImageData() might be + returned to an equivalent getImageData() as + different values.

    + +

    The current path, transformation matrix, + shadow attributes, global alpha, the clipping region, and global composition + operator must not affect the getImageData() and putImageData() + methods.

    + +
    -

    In the following example, the script generates an ImageData object so that it can - draw onto it.

    +

    The data returned by getImageData() is at the + resolution of the canvas backing store, which is likely to not be + one device pixel to each CSS pixel if the display used is a high + resolution display.

    + +

    In the following example, the script generates an + ImageData object so that it can draw onto it.

    // canvas is a reference to a <canvas> element
     var context = canvas.getContext('2d');
    @@ -3318,11 +3348,11 @@ function AddCloud(data, x, y) { ... }
    -

    Here is an example of using getImageData() and putImageData() to implement an edge detection - filter.

    +

    Here is an example of using getImageData() and putImageData() to + implement an edge detection filter.

    <!DOCTYPE HTML>
    -<html lang="en">
    +<html>
      <head>
       <title>Edge detection demo</title>
       <script>
    @@ -3345,9 +3375,9 @@ function AddCloud(data, x, y) { ... }
    var output = context.createImageData(canvas.width, canvas.height); // alias some variables for convenience - // In this case input.width and input.height - // match canvas.width and canvas.height - // but we'll use the former to keep the code generic. + // notice that we are using input.width and input.height here + // as they might not be the same as canvas.width and canvas.height + // (in particular, they might be different on high-res displays) var w = input.width, h = input.height; var inputData = input.data; var outputData = output.data; @@ -3378,322 +3408,102 @@ function AddCloud(data, x, y) { ... }
    +
    +
    4.8.11.1.12 Drawing model
    -
    4.12.5.1.16 Compositing
    +

    When a shape or image is painted, user agents must follow these + steps, in the order given (or act as if they do):

    -
    context . globalAlpha [ = value ]
    +
    1. Render the shape or image onto an infinite transparent black + bitmap, creating image A, as described in the + previous sections. For shapes, the current fill, stroke, and line + styles must be honored, and the stroke must itself also be + subjected to the current transformation matrix.

    2. -

      Returns the current alpha value applied to rendering operations.

      +
    3. When shadows are drawn, render the shadow from + image A, using the current shadow styles, + creating image B.

    4. -

      Can be set, to change the alpha value. Values outside of the range 0.0 .. 1.0 are - ignored.

      +
    5. When shadows are drawn, multiply the alpha + component of every pixel in B by globalAlpha.

    6. -
    context . globalCompositeOperation [ = value ]
    +
  • When shadows are drawn, composite B within the clipping region over the + current canvas bitmap using the current composition + operator.

  • -

    Returns the current composition operation, from the values defined in the Compositing and - Blending specification. [COMPOSITE].

    +
  • Multiply the alpha component of every pixel in A by globalAlpha.

  • -

    Can be set, to change the composition operation. Unknown values are ignored.

    +
  • Composite A within the clipping + region over the current canvas bitmap using the current + composition operator.

  • -

    Spec bugs: 27313

    +
    - -

    All drawing operations on an object which implements the CanvasCompositing - interface are affected by the global compositing attributes, globalAlpha and globalCompositeOperation.

    - - - -

    The globalAlpha attribute gives an - alpha value that is applied to shapes and images before they are composited onto the output - bitmap. The value must be in the range from 0.0 (fully transparent) to 1.0 (no additional - transparency). If an attempt is made to set the attribute to a value outside this range, including - Infinity and Not-a-Number (NaN) values, then the attribute must retain its previous value. When - the context is created, the globalAlpha attribute - must initially have the value 1.0.

    - -

    The globalCompositeOperation attribute - sets the current composition operator, which controls how shapes and images are drawn onto the - output bitmap, once they have had globalAlpha and the current transformation matrix - applied. The possible values are those defined in the Compositing and Blending specification, and - include the values source-over - and copy. - [COMPOSITE]

    - -

    These values are all case-sensitive — they must be used exactly as defined. User agents - must not recognize values that are not a case-sensitive match for one of the values - given in the Compositing and Blending specification. [COMPOSITE]

    - -

    On setting, if the user agent does not recognize the specified value, it must be ignored, - leaving the value of globalCompositeOperation unaffected. - Otherwise, the attribute must be set to the given new value.

    - -

    When the context is created, the globalCompositeOperation attribute must - initially have the value source-over.

    - - - - - -
    4.12.5.1.17 Image smoothing
    - -
    context . imageSmoothingEnabled [ = value ]
    - -

    Returns whether pattern fills and the drawImage() method will attempt to smooth images if - their pixels don't line up exactly with the display, when scaling images up.

    - -

    Can be set, to change whether images are smoothed (true) or not (false).

    - -
    context . imageSmoothingQuality [ = value ]
    - -

    Returns the current image-smoothing-quality preference.

    - -

    Can be set, to change the preferred quality of image smoothing. The possible values are - "low", "medium" and "high". Unknown values are ignored.

    - -
    - - - -

    Objects that implement the CanvasImageSmoothing interface have attributes that - control how image smoothing is performed.

    - -

    The imageSmoothingEnabled - attribute, on getting, must return the last value it was set to. On setting, it must be set to the - new value. When the object implementing the CanvasImageSmoothing interface is - created, the attribute must be set to true.

    - -

    The imageSmoothingQuality - attribute, on getting, must return the last value it was set to. On setting, it must be set to the - new value. When the object implementing the CanvasImageSmoothing interface is - created, the attribute must be set to "low".

    - - - - -
    4.12.5.1.18 Shadows
    - -

    All drawing operations on an object which implements the CanvasShadowStyles - interface are affected by the four global shadow attributes.

    - -
    context . shadowColor [ = value ]
    - -

    Returns the current shadow color.

    - -

    Can be set, to change the shadow color. Values that cannot be parsed as CSS colors are ignored.

    - -
    context . shadowOffsetX [ = value ]
    context . shadowOffsetY [ = value ]
    - -

    Returns the current shadow offset.

    - -

    Can be set, to change the shadow offset. Values that are not finite numbers are ignored.

    - -
    context . shadowBlur [ = value ]
    - -

    Returns the current level of blur applied to shadows.

    - -

    Can be set, to change the blur level. Values that are not finite numbers greater than or - equal to zero are ignored.

    - -
    - - - -

    The shadowColor attribute sets the - color of the shadow.

    - -

    When the context is created, the shadowColor - attribute initially must be fully-transparent black.

    - -

    On getting, the serialization of the color - must be returned.

    - -

    On setting, the new value must be parsed as a CSS <color> value and the - color assigned. If the value cannot be parsed as a CSS <color> value then it - must be ignored, and the attribute must retain its previous value. [CSSCOLOR]

    - -

    The shadowOffsetX and shadowOffsetY attributes specify the distance - that the shadow will be offset in the positive horizontal and positive vertical distance - respectively. Their values are in coordinate space units. They are not affected by the current - transformation matrix.

    - -

    When the context is created, the shadow offset attributes must initially have the value - 0.

    - -

    On getting, they must return their current value. On setting, the attribute being set must be - set to the new value, except if the value is infinite or NaN, in which case the new value must be - ignored.

    - -

    The shadowBlur attribute specifies - the level of the blurring effect. (The units do not map to coordinate space units, and are not - affected by the current transformation matrix.)

    - -

    When the context is created, the shadowBlur - attribute must initially have the value 0.

    - -

    On getting, the attribute must return its current value. On setting the attribute must be set - to the new value, except if the value is negative, infinite or NaN, in which case the new value - must be ignored.

    - -

    Shadows are only drawn if the opacity component of - the alpha component of the color of shadowColor is - non-zero and either the shadowBlur is non-zero, or - the shadowOffsetX is non-zero, or the shadowOffsetY is non-zero.

    - -

    When shadows are drawn, they must be rendered as follows:

    - -
    1. Let A be an infinite transparent black bitmap on which the source - image for which a shadow is being created has been rendered.

    2. Let B be an infinite transparent black bitmap, with a coordinate - space and an origin identical to A.

    3. Copy the alpha channel of A to B, offset by shadowOffsetX in the positive x - direction, and shadowOffsetY in the positive - y direction.

    4. - -

      If shadowBlur is greater than 0:

      - -
      1. Let σ be half the value of shadowBlur.

      2. Perform a 2D Gaussian Blur on B, using σ - as the standard deviation.

      - -

      User agents may limit values of σ to an implementation-specific - maximum value to avoid exceeding hardware limitations during the Gaussian blur operation.

      - -
    5. Set the red, green, and blue components of every pixel in B to the - red, green, and blue components (respectively) of the color of shadowColor.

    6. Multiply the alpha component of every pixel in B by the alpha - component of the color of shadowColor.

    7. The shadow is in the bitmap B, and is rendered as part of the - drawing model described below.

    - - - -

    If the current composition operation is copy, then shadows - effectively won't render (since the shape will overwrite the shadow).

    - -
    4.12.5.1.19 Filters
    - -

    All drawing operations on an object which implements the CanvasFilters - interface are affected by the global filter - attribute.

    - -
    context . filter [ = value ]
    - -

    Returns the current filter.

    - -

    Can be set, to change the filter. Values that cannot be parsed as a - <filter-function-list> value are ignored.

    - -
    - - - -

    The filter attribute, on getting, must - return the last value it was successfully set to. The value must not be re-serialized. On setting, - if the new value is 'none' (not the empty string, null, or undefined), filters must be disabled - for the context. Otherwise, the value must be parsed as a - <filter-function-list> value. If the value cannot be parsed as a - <filter-function-list> value, where using property-independent style sheet - syntax like 'inherit' or 'initial' is considered an invalid value, then it must be ignored, and - the attribute must retain its previous value. When creating the object implementing the - CanvasFilters interface, the attribute must be set to 'none'.

    - -

    A <filter-function-list> value consists of a sequence of one or more - filter functions or references to SVG filters. The input to the filter is used as the input - to the first item in the list. Subsequent items take the output of the previous item as - their input. [FILTERS]

    - -

    Coordinates used in the value of the filter attribute are interpreted such that one pixel is - equivalent to one SVG user space unit and to one canvas coordinate space unit. Filter coordinates - are not affected by the current transformation - matrix. The current transformation matrix affects only the input to the filter. Filters - are applied in the output bitmap's coordinate space.

    - -

    When the value of the filter attribute defines - lengths using percentages or using 'em' or 'ex' units, these must be - interpreted relative to the computed value of the 'font-size' property - of the font style source object at the time that the attribute is set, if it is an - element. If the computed values are undefined for a - particular case (e.g. because the font style source object is not an element or is - not being rendered), then the relative keywords must be interpreted relative to the - default value of the font attribute. The 'larger' and - 'smaller' keywords are not supported.

    - -

    If the value of the filter attribute refers to an - SVG filter in the same document, and this SVG filter changes, then the changed filter is used for - the next draw operation.

    - -

    If the value of the filter attribute refers to an - SVG filter in an external resource document and that document is not loaded when a drawing - operation is invoked, then the drawing operation must proceed with no filtering.

    - - - -
    4.12.5.1.20 Working with externally-defined SVG filters
    +
    4.8.11.1.13 Best practices

    This section is non-normative.

    -

    Since drawing is performed using filter value 'none' until an externally-defined - filter has finished loading, authors might wish to determine whether such a filter - has finished loading before proceeding with a drawing operation. One way to accomplish - this is to load the externally-defined filter elsewhere within the same page in some - element that sends a load event (for example, an SVG - use element), and wait for the load event to be - dispatched.

    +

    When a canvas is interactive, authors should include focusable + elements in the element's fallback content corresponding to each + focusable part of the canvas, as in the example above.

    - - -
    4.12.5.1.21 Drawing model
    - -

    When a shape or image is painted, user agents must follow these steps, in the order given (or - act as if they do):

    - -
    1. Render the shape or image onto an infinite transparent black bitmap, creating image A, as described in the previous sections. For shapes, the current fill, stroke, - and line styles must be honored, and the stroke must itself also be subjected to the current - transformation matrix.

    2. When the filter attribute is set to a value other than 'none' and all the - externally-defined filters it references, if any, are in documents that are currently loaded, - then use image A as the input to the filter, creating image B. Otherwise, let - B be an alias for A.

    3. When shadows are drawn, render the shadow from image B, - using the current shadow styles, creating image C.

    4. When shadows are drawn, multiply the alpha component of every pixel in C by globalAlpha.

    5. When shadows are drawn, composite C within the - clipping region over the current output bitmap using the current - composition operator.

    6. Multiply the alpha component of every pixel in B by globalAlpha.

    7. Composite B within the clipping region over the current - output bitmap using the current composition operator.

    - -

    When compositing onto the output bitmap, pixels that would fall outside of the - output bitmap must be discarded.

    - - - - - - -
    4.12.5.1.22 Best practices
    - -

    When a canvas is interactive, authors should include focusable elements in the element's - fallback content corresponding to each focusable part of the canvas, as in the example above.

    - -

    When rendering focus rings, to ensure that focus rings have the appearance of native focus - rings, authors should use the drawFocusIfNeeded() method, passing it the - element for which a ring is being drawn. This method only draws the focus ring if the element is - focused, so that it can simply be called whenever drawing the element, without +

    To indicate which focusable part of the canvas is currently + focused, authors should use the drawSystemFocusRing() + method, passing it the element for which a ring is being drawn. This + method only draws the focus ring if the element is focused, so that + it can simply be called whenever drawing the element, without checking whether the element is focused or not first.

    -

    In addition to drawing focus rings, authors should use the scrollPathIntoView() method when an element in - the canvas is focused, to make sure it is visible on the screen (if applicable).

    +

    Authors should avoid implementing text editing controls using the + canvas element. Doing so has a large number of + disadvantages:

    -

    Authors should avoid implementing text editing controls - using the canvas element. Doing so has a large number of disadvantages:

    +

    This is a huge amount of work, and authors are most strongly + encouraged to avoid doing any of it by instead using the + input element, the textarea element, or + the contenteditable + attribute.

    -
    4.12.5.1.23 Examples
    +
    4.8.11.1.14 Examples

    This section is non-normative.

    @@ -3744,835 +3554,140 @@ function AddCloud(data, x, y) { ... }
    -
    -

    The 2D rendering context for canvas is often used for sprite-based games. The - following example demonstrates this:

    - - - diff --git a/testing/web-platform/tests/XMLHttpRequest/access-control-sandboxed-iframe-allow.htm b/testing/web-platform/tests/XMLHttpRequest/access-control-sandboxed-iframe-allow.htm deleted file mode 100644 index 21413f386639..000000000000 --- a/testing/web-platform/tests/XMLHttpRequest/access-control-sandboxed-iframe-allow.htm +++ /dev/null @@ -1,32 +0,0 @@ - - - - Tests that sandboxed iframe has CORS XHR access to a server that accepts all domains - - - - - - - - - diff --git a/testing/web-platform/tests/XMLHttpRequest/access-control-sandboxed-iframe-denied-without-wildcard.htm b/testing/web-platform/tests/XMLHttpRequest/access-control-sandboxed-iframe-denied-without-wildcard.htm deleted file mode 100644 index 7c375f606684..000000000000 --- a/testing/web-platform/tests/XMLHttpRequest/access-control-sandboxed-iframe-denied-without-wildcard.htm +++ /dev/null @@ -1,43 +0,0 @@ - - - - Tests that sandboxed iframe does not have CORS XHR access to server with "Access-Control-Allow-Origin" set to the original origin - - - - - - - - - diff --git a/testing/web-platform/tests/XMLHttpRequest/access-control-sandboxed-iframe-denied.htm b/testing/web-platform/tests/XMLHttpRequest/access-control-sandboxed-iframe-denied.htm deleted file mode 100644 index a87dd7d1f255..000000000000 --- a/testing/web-platform/tests/XMLHttpRequest/access-control-sandboxed-iframe-denied.htm +++ /dev/null @@ -1,41 +0,0 @@ - - - - Tests that sandboxed iframe does not have CORS XHR access to its server - - - - - - - - - diff --git a/testing/web-platform/tests/XMLHttpRequest/allow-lists-starting-with-comma.htm b/testing/web-platform/tests/XMLHttpRequest/allow-lists-starting-with-comma.htm index 4a4e5e2218c7..03cc7cb8cd97 100644 --- a/testing/web-platform/tests/XMLHttpRequest/allow-lists-starting-with-comma.htm +++ b/testing/web-platform/tests/XMLHttpRequest/allow-lists-starting-with-comma.htm @@ -4,30 +4,30 @@ Allow lists starting with a comma should be parsed correctly - + diff --git a/testing/web-platform/tests/XMLHttpRequest/resources/access-control-allow-lists.py b/testing/web-platform/tests/XMLHttpRequest/resources/access-control-allow-lists.py index 526d365b3111..c020cd2d59c2 100644 --- a/testing/web-platform/tests/XMLHttpRequest/resources/access-control-allow-lists.py +++ b/testing/web-platform/tests/XMLHttpRequest/resources/access-control-allow-lists.py @@ -8,13 +8,15 @@ def main(request, response): response.headers.set("Access-Control-Allow-Origin", request.GET["origin"]) if "headers" in request.GET: - response.headers.set("Access-Control-Allow-Headers", request.GET["headers"]) + response.headers.set("Access-Control-Allow-Headers", '{'+request.GET["headers"]+'}') if "methods" in request.GET: - response.headers.set("Access-Control-Allow-Methods", request.GET["methods"]) + response.headers.set("Access-Control-Allow-Methods", '{'+request.GET["methods"]+'}') headers = dict(request.headers) for header in headers: headers[header] = headers[header][0] + headers["get_value"] = "" if "get_value" not in request.GET else request.GET["get_value"] + return json.dumps(headers) diff --git a/testing/web-platform/tests/XMLHttpRequest/resources/access-control-allow-with-body.py b/testing/web-platform/tests/XMLHttpRequest/resources/access-control-allow-with-body.py deleted file mode 100644 index 221343567354..000000000000 --- a/testing/web-platform/tests/XMLHttpRequest/resources/access-control-allow-with-body.py +++ /dev/null @@ -1,15 +0,0 @@ -def main(request, response): - headers = { - "Cache-Control": "no-store", - "Access-Control-Allow-Headers": "X-Requested-With", - "Access-Control-Max-Age": 0, - "Access-Control-Allow-Origin": "*", - "Access-Control-Allow-Methods": "*", - "Vary": "Accept-Encoding", - "Content-Type": "text/plain" - } - - for (name, value) in headers.items(): - response.headers.set(name, value) - - response.content = "PASS" diff --git a/testing/web-platform/tests/XMLHttpRequest/resources/access-control-basic-cors-safelisted-request-headers.py b/testing/web-platform/tests/XMLHttpRequest/resources/access-control-basic-cors-safelisted-request-headers.py deleted file mode 100644 index eba0e7d4c5ca..000000000000 --- a/testing/web-platform/tests/XMLHttpRequest/resources/access-control-basic-cors-safelisted-request-headers.py +++ /dev/null @@ -1,14 +0,0 @@ -def main(request, response): - response.headers.set("Cache-Control", "no-store") - - # This should be a simple request; deny preflight - if request.method != "POST": - response.status = 400 - return - - response.headers.set("Access-Control-Allow-Credentials", "true") - response.headers.set("Access-Control-Allow-Origin", request.headers.get("origin")) - - for header in ["Accept", "Accept-Language", "Content-Language", "Content-Type"]: - value = request.headers.get(header) - response.content += header + ": " + (value if value else "") + '\n' diff --git a/testing/web-platform/tests/XMLHttpRequest/resources/access-control-basic-whitelist-response-headers.py b/testing/web-platform/tests/XMLHttpRequest/resources/access-control-basic-whitelist-response-headers.py deleted file mode 100644 index e7c15bb8b300..000000000000 --- a/testing/web-platform/tests/XMLHttpRequest/resources/access-control-basic-whitelist-response-headers.py +++ /dev/null @@ -1,19 +0,0 @@ -def main(request, response): - headers = { - # CORS-safelisted - "content-type": "text/plain", - "cache-control": "no cache", - "content-language": "en", - "expires": "Fri, 30 Oct 1998 14:19:41 GMT", - "last-modified": "Tue, 15 Nov 1994 12:45:26 GMT", - "pragma": "no-cache", - - # Non-CORS-safelisted - "x-test": "foobar", - - "Access-Control-Allow-Origin": "*" - } - for header in headers: - response.headers.set(header, headers[header]) - - response.content = "PASS: Cross-domain access allowed." diff --git a/testing/web-platform/tests/XMLHttpRequest/resources/access-control-cookie.py b/testing/web-platform/tests/XMLHttpRequest/resources/access-control-cookie.py deleted file mode 100644 index 1e0d41d22eaa..000000000000 --- a/testing/web-platform/tests/XMLHttpRequest/resources/access-control-cookie.py +++ /dev/null @@ -1,16 +0,0 @@ -import datetime - -def main(request, response): - cookie_name = request.GET.first("cookie_name", "") - - response.headers.set("Cache-Control", "no-store") - response.headers.set("Access-Control-Allow-Origin", request.headers.get("origin")) - response.headers.set("Access-Control-Allow-Credentials", "true") - - for cookie in request.cookies: - # Set cookie to expire yesterday - response.set_cookie(cookie, "deleted", expires=-datetime.timedelta(days=1)) - - if cookie_name: - # Set cookie to expire tomorrow - response.set_cookie(cookie_name, "COOKIE", expires=datetime.timedelta(days=1)) diff --git a/testing/web-platform/tests/XMLHttpRequest/resources/access-control-preflight-request-header-sorted.py b/testing/web-platform/tests/XMLHttpRequest/resources/access-control-preflight-request-header-sorted.py deleted file mode 100644 index e40da43fe3dc..000000000000 --- a/testing/web-platform/tests/XMLHttpRequest/resources/access-control-preflight-request-header-sorted.py +++ /dev/null @@ -1,18 +0,0 @@ -def main(request, response): - response.headers.set('Cache-Control', 'no-store') - response.headers.set('Access-Control-Allow-Origin', - request.headers.get('origin')) - - headers = 'x-custom-s,x-custom-test,x-custom-u,x-custom-ua,x-custom-v' - if request.method == 'OPTIONS': - response.headers.set('Access-Control-Max-Age', '0') - response.headers.set('Access-Control-Allow-Headers', headers) - # Access-Control-Request-Headers should be sorted. - if headers != request.headers.get('Access-Control-Request-Headers'): - response.status = 400 - else: - if request.headers.get('x-custom-s'): - response.content = 'PASS' - else: - response.status = 400 - response.content = 'FAIL' diff --git a/testing/web-platform/tests/XMLHttpRequest/resources/access-control-preflight-request-headers-origin.py b/testing/web-platform/tests/XMLHttpRequest/resources/access-control-preflight-request-headers-origin.py deleted file mode 100644 index 6fbb96e557b1..000000000000 --- a/testing/web-platform/tests/XMLHttpRequest/resources/access-control-preflight-request-headers-origin.py +++ /dev/null @@ -1,12 +0,0 @@ -def main(request, response): - response.headers.set("Cache-Control", "no-store") - response.headers.set("Access-Control-Allow-Origin", "*") - - if request.method == "OPTIONS": - if "origin" in request.headers.get("Access-Control-Request-Headers").lower(): - response.status = 400 - response.content = "Error: 'origin' included in Access-Control-Request-Headers" - else: - response.headers.set("Access-Control-Allow-Headers", "x-pass") - else: - response.content = request.headers.get("x-pass") diff --git a/testing/web-platform/tests/XMLHttpRequest/resources/access-control-preflight-request-must-not-contain-cookie.py b/testing/web-platform/tests/XMLHttpRequest/resources/access-control-preflight-request-must-not-contain-cookie.py deleted file mode 100644 index eb49bf562d18..000000000000 --- a/testing/web-platform/tests/XMLHttpRequest/resources/access-control-preflight-request-must-not-contain-cookie.py +++ /dev/null @@ -1,12 +0,0 @@ -def main(request, response): - if request.method == "OPTIONS" and request.cookies.get("foo"): - response.status = 400 - else: - response.headers.set("Cache-Control", "no-store") - response.headers.set("Access-Control-Allow-Origin", request.headers.get("origin")) - response.headers.set("Access-Control-Allow-Credentials", "true") - response.headers.set("Access-Control-Allow-Headers", "X-Proprietary-Header") - response.headers.set("Connection", "close") - - if request.cookies.get("foo"): - response.content = request.cookies["foo"].value diff --git a/testing/web-platform/tests/XMLHttpRequest/resources/access-control-sandboxed-iframe.html b/testing/web-platform/tests/XMLHttpRequest/resources/access-control-sandboxed-iframe.html deleted file mode 100644 index 7e47275b6ce5..000000000000 --- a/testing/web-platform/tests/XMLHttpRequest/resources/access-control-sandboxed-iframe.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - diff --git a/testing/web-platform/tests/accelerometer/idlharness.https.html b/testing/web-platform/tests/accelerometer/idlharness.https.html index b6d9ce559948..6c9c9bbc1afa 100644 --- a/testing/web-platform/tests/accelerometer/idlharness.https.html +++ b/testing/web-platform/tests/accelerometer/idlharness.https.html @@ -8,20 +8,32 @@ +
    - + - + diff --git a/testing/web-platform/tests/ambient-light/idlharness.https.html b/testing/web-platform/tests/ambient-light/idlharness.https.html index cf43d5476e26..80da34178b84 100644 --- a/testing/web-platform/tests/ambient-light/idlharness.https.html +++ b/testing/web-platform/tests/ambient-light/idlharness.https.html @@ -8,20 +8,32 @@ +
    - + - + diff --git a/testing/web-platform/tests/auxclick/OWNERS b/testing/web-platform/tests/auxclick/OWNERS new file mode 100644 index 000000000000..fe0105ee9651 --- /dev/null +++ b/testing/web-platform/tests/auxclick/OWNERS @@ -0,0 +1 @@ +@NavidZ diff --git a/testing/web-platform/tests/background-fetch/content-security-policy.https.window.js b/testing/web-platform/tests/background-fetch/content-security-policy.https.window.js deleted file mode 100644 index a6dc7c302c01..000000000000 --- a/testing/web-platform/tests/background-fetch/content-security-policy.https.window.js +++ /dev/null @@ -1,20 +0,0 @@ -// META: script=/service-workers/service-worker/resources/test-helpers.sub.js -// META: script=resources/utils.js -'use strict'; - -// Tests that requests blocked by Content Security Policy are rejected. -// https://w3c.github.io/webappsec-csp/#should-block-request - -// This is not a comprehensive test of Content Security Policy - it is just -// intended to check that CSP checks are enabled. - -var meta = document.createElement('meta'); -meta.setAttribute('http-equiv', 'Content-Security-Policy'); -meta.setAttribute('content', "connect-src 'none'"); -document.head.appendChild(meta); - -backgroundFetchTest((t, bgFetch) => { - return promise_rejects( - t, new TypeError(), - bgFetch.fetch(uniqueTag(), 'https://example.com')); -}, 'fetch blocked by CSP should reject'); diff --git a/testing/web-platform/tests/background-fetch/credentials-in-url.https.window.js b/testing/web-platform/tests/background-fetch/credentials-in-url.https.window.js deleted file mode 100644 index 28b37b340b96..000000000000 --- a/testing/web-platform/tests/background-fetch/credentials-in-url.https.window.js +++ /dev/null @@ -1,32 +0,0 @@ -// META: script=/service-workers/service-worker/resources/test-helpers.sub.js -// META: script=resources/utils.js -'use strict'; - -// "If parsedURL includes credentials, then throw a TypeError." -// https://fetch.spec.whatwg.org/#dom-request -// (Added by https://github.com/whatwg/fetch/issues/26). -// "A URL includes credentials if its username or password is not the empty -// string." -// https://url.spec.whatwg.org/#include-credentials - -backgroundFetchTest((t, bgFetch) => { - return bgFetch.fetch(uniqueTag(), 'https://example.com'); -}, 'fetch without credentials in URL should register ok'); - -backgroundFetchTest((t, bgFetch) => { - return promise_rejects( - t, new TypeError(), - bgFetch.fetch(uniqueTag(), 'https://username:password@example.com')); -}, 'fetch with username and password in URL should reject'); - -backgroundFetchTest((t, bgFetch) => { - return promise_rejects( - t, new TypeError(), - bgFetch.fetch(uniqueTag(), 'https://username:@example.com')); -}, 'fetch with username and empty password in URL should reject'); - -backgroundFetchTest((t, bgFetch) => { - return promise_rejects( - t, new TypeError(), - bgFetch.fetch(uniqueTag(), 'https://:password@example.com')); -}, 'fetch with empty username and password in URL should reject'); diff --git a/testing/web-platform/tests/background-fetch/dangling-markup.https.window.js b/testing/web-platform/tests/background-fetch/dangling-markup.https.window.js deleted file mode 100644 index af7c395d7510..000000000000 --- a/testing/web-platform/tests/background-fetch/dangling-markup.https.window.js +++ /dev/null @@ -1,17 +0,0 @@ -// META: script=/service-workers/service-worker/resources/test-helpers.sub.js -// META: script=resources/utils.js -'use strict'; - -// "If request's url's potentially-dangling-markup flag is set, and request's -// url's scheme is an HTTP(S) scheme, then set response to a network error." -// https://github.com/whatwg/fetch/pull/519 -// https://github.com/whatwg/fetch/issues/546 - -// This is not a comprehensive test of dangling markup detection - it is just -// intended to check that detection is enabled. - -backgroundFetchTest((t, bgFetch) => { - return promise_rejects( - t, new TypeError(), - bgFetch.fetch(uniqueTag(), 'https://example.com/?\n<')); -}, 'fetch to URL containing \\n and < should reject'); diff --git a/testing/web-platform/tests/background-fetch/mixed-content-and-allowed-schemes.https.window.js b/testing/web-platform/tests/background-fetch/mixed-content-and-allowed-schemes.https.window.js deleted file mode 100644 index 50614a3565b0..000000000000 --- a/testing/web-platform/tests/background-fetch/mixed-content-and-allowed-schemes.https.window.js +++ /dev/null @@ -1,80 +0,0 @@ -// META: script=/service-workers/service-worker/resources/test-helpers.sub.js -// META: script=resources/utils.js -'use strict'; - -// Tests that Mixed Content requests are blocked. -// https://w3c.github.io/webappsec-mixed-content/#should-block-fetch -// https://w3c.github.io/webappsec-mixed-content/#a-priori-authenticated-url -// https://w3c.github.io/webappsec-secure-contexts/#is-origin-trustworthy - -// With an additional restriction that only https:// and loopback http:// -// requests are allowed. Hence the wss:, file:, data:, etc schemes are blocked. -// https://github.com/WICG/background-fetch/issues/44 - -// This is not a comprehensive test of mixed content blocking - it is just -// intended to check that blocking is enabled. - -backgroundFetchTest((t, bgFetch) => { - return bgFetch.fetch(uniqueTag(), 'https://example.com'); -}, 'https: fetch should register ok'); - -backgroundFetchTest((t, bgFetch) => { - return bgFetch.fetch(uniqueTag(), 'http://127.0.0.1'); -}, 'loopback IPv4 http: fetch should register ok'); - -backgroundFetchTest((t, bgFetch) => { - return bgFetch.fetch(uniqueTag(), 'http://[::1]'); -}, 'loopback IPv6 http: fetch should register ok'); - -// http://localhost is not tested here since the correct behavior from -// https://w3c.github.io/webappsec-secure-contexts/#is-origin-trustworthy -// depends on whether the UA conforms to the name resolution rules in -// https://tools.ietf.org/html/draft-west-let-localhost-be-localhost - -backgroundFetchTest((t, bgFetch) => { - return promise_rejects(t, new TypeError(), - bgFetch.fetch(uniqueTag(), 'http://example.com')); -}, 'non-loopback http: fetch should reject'); - -backgroundFetchTest((t, bgFetch) => { - return promise_rejects(t, new TypeError(), - bgFetch.fetch(uniqueTag(), 'http://192.0.2.0')); -}, 'non-loopback IPv4 http: fetch should reject'); - -backgroundFetchTest((t, bgFetch) => { - return promise_rejects(t, new TypeError(), - bgFetch.fetch(uniqueTag(), 'http://[2001:db8::1]')); -}, 'non-loopback IPv6 http: fetch should reject'); - -backgroundFetchTest((t, bgFetch) => { - return promise_rejects(t, new TypeError(), - bgFetch.fetch(uniqueTag(), ['https://example.com', - 'http://example.com'])); -}, 'https: and non-loopback http: fetch should reject'); - -backgroundFetchTest((t, bgFetch) => { - return promise_rejects(t, new TypeError(), - bgFetch.fetch(uniqueTag(), ['http://example.com', - 'https://example.com'])); -}, 'non-loopback http: and https: fetch should reject'); - - -backgroundFetchTest((t, bgFetch) => { - return promise_rejects(t, new TypeError(), - bgFetch.fetch(uniqueTag(), 'wss:127.0.0.1')); -}, 'wss: fetch should reject'); - -backgroundFetchTest((t, bgFetch) => { - return promise_rejects(t, new TypeError(), - bgFetch.fetch(uniqueTag(), 'file:///')); -}, 'file: fetch should reject'); - -backgroundFetchTest((t, bgFetch) => { - return promise_rejects(t, new TypeError(), - bgFetch.fetch(uniqueTag(), 'data:text/plain,foo')); -}, 'data: fetch should reject'); - -backgroundFetchTest((t, bgFetch) => { - return promise_rejects(t, new TypeError(), - bgFetch.fetch(uniqueTag(), 'foobar:bazqux')); -}, 'unknown scheme fetch should reject'); diff --git a/testing/web-platform/tests/background-fetch/port-blocking.https.window.js b/testing/web-platform/tests/background-fetch/port-blocking.https.window.js deleted file mode 100644 index dbf8a1a4d9f2..000000000000 --- a/testing/web-platform/tests/background-fetch/port-blocking.https.window.js +++ /dev/null @@ -1,35 +0,0 @@ -// META: script=/service-workers/service-worker/resources/test-helpers.sub.js -// META: script=resources/utils.js -'use strict'; - -// Tests that requests to bad ports are blocked. -// https://fetch.spec.whatwg.org/#port-blocking - -// This is not a comprehensive test of blocked ports - it is just intended to -// check that blocking is enabled. - -backgroundFetchTest((t, bgFetch) => { - return bgFetch.fetch(uniqueTag(), 'https://example.com'); -}, 'fetch to default https port should register ok'); - -backgroundFetchTest((t, bgFetch) => { - return bgFetch.fetch(uniqueTag(), 'http://127.0.0.1'); -}, 'fetch to default http port should register ok'); - -backgroundFetchTest((t, bgFetch) => { - return bgFetch.fetch(uniqueTag(), 'https://example.com:443'); -}, 'fetch to port 443 should register ok'); - -backgroundFetchTest((t, bgFetch) => { - return bgFetch.fetch(uniqueTag(), 'https://example.com:80'); -}, 'fetch to port 80 should register ok, even over https'); - -backgroundFetchTest((t, bgFetch) => { - return bgFetch.fetch(uniqueTag(), 'https://example.com:8080'); -}, 'fetch to non-default non-bad port (8080) should register ok'); - -backgroundFetchTest((t, bgFetch) => { - return promise_rejects( - t, new TypeError(), - bgFetch.fetch(uniqueTag(), 'https://example.com:587')); -}, 'fetch to bad port (SMTP) should reject'); diff --git a/testing/web-platform/tests/background-fetch/resources/sw.js b/testing/web-platform/tests/background-fetch/resources/sw.js deleted file mode 100644 index d4dc941796a1..000000000000 --- a/testing/web-platform/tests/background-fetch/resources/sw.js +++ /dev/null @@ -1 +0,0 @@ -// Deliberately left empty for now. \ No newline at end of file diff --git a/testing/web-platform/tests/background-fetch/resources/utils.js b/testing/web-platform/tests/background-fetch/resources/utils.js deleted file mode 100644 index f630f1085d4c..000000000000 --- a/testing/web-platform/tests/background-fetch/resources/utils.js +++ /dev/null @@ -1,26 +0,0 @@ -'use strict'; - -// Depends on /service-workers/service-worker/resources/test-helpers.sub.js -async function registerAndActivateServiceWorker(test) { - const script = 'resources/sw.js'; - const scope = 'resources/scope' + location.pathname; - let serviceWorkerRegistration = - await service_worker_unregister_and_register(test, script, scope); - add_completion_callback(() => { - serviceWorkerRegistration.unregister(); - }); - await wait_for_state(test, serviceWorkerRegistration.installing, 'activated'); - return serviceWorkerRegistration; -} - -function backgroundFetchTest(func, description) { - promise_test(async t => { - const serviceWorkerRegistration = await registerAndActivateServiceWorker(t); - return func(t, serviceWorkerRegistration.backgroundFetch); - }, description); -} - -let _nextBackgroundFetchTag = 0; -function uniqueTag() { - return 'tag' + _nextBackgroundFetchTag++; -} \ No newline at end of file diff --git a/testing/web-platform/tests/clipboard-apis/OWNERS b/testing/web-platform/tests/clipboard/OWNERS similarity index 100% rename from testing/web-platform/tests/clipboard-apis/OWNERS rename to testing/web-platform/tests/clipboard/OWNERS diff --git a/testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-archive-codebase.sub.html b/testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-archive-codebase.sub.html new file mode 100644 index 000000000000..d770278401fc --- /dev/null +++ b/testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-archive-codebase.sub.html @@ -0,0 +1,41 @@ + + + + + + object-src-applet-archive-codebase + + + + + + + + + + + This test passes if there is a CSP violation saying the plugin was blocked. + +
    + + + diff --git a/testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-archive-codebase.sub.html.sub.headers b/testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-archive-codebase.sub.html.sub.headers new file mode 100644 index 000000000000..0b71a188bab2 --- /dev/null +++ b/testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-archive-codebase.sub.html.sub.headers @@ -0,0 +1,6 @@ +Expires: Mon, 26 Jul 1997 05:00:00 GMT +Cache-Control: no-store, no-cache, must-revalidate +Cache-Control: post-check=0, pre-check=0, false +Pragma: no-cache +Set-Cookie: object-src-applet-archive-codebase={{$id:uuid()}}; Path=/content-security-policy/blink-contrib +Content-Security-Policy: object-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-archive.sub.html b/testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-archive.sub.html new file mode 100644 index 000000000000..69c71986e9f4 --- /dev/null +++ b/testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-archive.sub.html @@ -0,0 +1,41 @@ + + + + + + object-src-applet-archive + + + + + + + + + + + This test passes if there is a CSP violation saying the plugin was blocked. + +
    + + + diff --git a/testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-archive.sub.html.sub.headers b/testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-archive.sub.html.sub.headers new file mode 100644 index 000000000000..4bd5ec149f68 --- /dev/null +++ b/testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-archive.sub.html.sub.headers @@ -0,0 +1,6 @@ +Expires: Mon, 26 Jul 1997 05:00:00 GMT +Cache-Control: no-store, no-cache, must-revalidate +Cache-Control: post-check=0, pre-check=0, false +Pragma: no-cache +Set-Cookie: object-src-applet-archive={{$id:uuid()}}; Path=/content-security-policy/blink-contrib +Content-Security-Policy: object-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-code-codebase.sub.html b/testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-code-codebase.sub.html new file mode 100644 index 000000000000..6121dad56b28 --- /dev/null +++ b/testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-code-codebase.sub.html @@ -0,0 +1,41 @@ + + + + + + object-src-applet-archive-code-codebase + + + + + + + + + + + This test passes if there is a CSP violation saying the plugin was blocked. + +
    + + + diff --git a/testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-code-codebase.sub.html.sub.headers b/testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-code-codebase.sub.html.sub.headers new file mode 100644 index 000000000000..1ced1a8e2c0a --- /dev/null +++ b/testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-code-codebase.sub.html.sub.headers @@ -0,0 +1,6 @@ +Expires: Mon, 26 Jul 1997 05:00:00 GMT +Cache-Control: no-store, no-cache, must-revalidate +Cache-Control: post-check=0, pre-check=0, false +Pragma: no-cache +Set-Cookie: object-src-applet-code-codebase={{$id:uuid()}}; Path=/content-security-policy/blink-contrib +Content-Security-Policy: object-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-code.sub.html b/testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-code.sub.html new file mode 100644 index 000000000000..af598bfd1803 --- /dev/null +++ b/testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-code.sub.html @@ -0,0 +1,41 @@ + + + + + + object-src-applet-code + + + + + + + + + + + This test passes if there is a CSP violation saying the plugin was blocked. + +
    + + + diff --git a/testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-code.sub.html.sub.headers b/testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-code.sub.html.sub.headers new file mode 100644 index 000000000000..44bd725f8179 --- /dev/null +++ b/testing/web-platform/tests/content-security-policy/blink-contrib/object-src-applet-code.sub.html.sub.headers @@ -0,0 +1,6 @@ +Expires: Mon, 26 Jul 1997 05:00:00 GMT +Cache-Control: no-store, no-cache, must-revalidate +Cache-Control: post-check=0, pre-check=0, false +Pragma: no-cache +Set-Cookie: object-src-applet-code={{$id:uuid()}}; Path=/content-security-policy/blink-contrib +Content-Security-Policy: object-src 'none'; script-src 'self' 'unsafe-inline'; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/testing/web-platform/tests/core-aam/OWNERS b/testing/web-platform/tests/core-aam/OWNERS deleted file mode 100644 index 2a4c47ed4df0..000000000000 --- a/testing/web-platform/tests/core-aam/OWNERS +++ /dev/null @@ -1,2 +0,0 @@ -@halindrome -@joanmarie diff --git a/testing/web-platform/tests/core-aam/README.md b/testing/web-platform/tests/core-aam/README.md deleted file mode 100644 index 8728628a6dc7..000000000000 --- a/testing/web-platform/tests/core-aam/README.md +++ /dev/null @@ -1,59 +0,0 @@ -core-aam: Tests for the Core Accessibility API Mappings Recommendation -====================================================================== - -The [Core Accessibility API Mappings Recommendation](https://www.w3.org/TR/core-aam-1.1/) -describes how user agents should expose semantics of web content languages to accessibility -APIs. This helps users with disabilities to obtain and interact with information using -assistive technologies. Documenting these mappings promotes interoperable exposure of roles, -states, properties, and events implemented by accessibility APIs and helps to ensure that -this information appears in a manner consistent with author intent. - -The purpose of these tests is to help ensure that user agents support the requirements of -the Recommendation. - -The general approach for this testing is to enable both manual and automated testing, with -a preference for automation. - - -Running Tests -------------- - -In order to run these tests in an automated fashion, you will need to have a special -Assistive Technology Test Adapter (ATTA) for the platform under test. We will provide -a list of these for popular platforms here as they are made available. - -The ATTA will monitor the window under test via the platforms Accessibility Layer, -forwarding information about the Accessibility Tree to the running test so that it -can evaluate support for the various features under test. - -The workflow for running these tests is something like: - -1. Start up the ATTA for the platform under test. -2. Start up the test driver window, select the core-aam tests to be run, - and click "Start" -3. A window pops up that shows a test, the description of which tells the - tester what is being tested. In an automated test, the test will proceed - without user intervention. In a manual test, some user input or verification - may be required. -4. The test runs. Success or failure is determined and reported to the test - driver window, which then cycles to the next test in the sequence. -5. Repeat steps 2-4 until done. -6. Download the JSON format report of test results, which can then be visually - inspected, reported on using various tools, or passed on to W3C for evaluation - and collection in the Implementation Report via github. - -**Remember that while these tests are written to help exercise implementations, -their other (important) purpose is to increase confidence that there are -interoperable implementations.** So, implementers are the audience, but these -tests are not meant to be a comprehensive collection of tests for a client that -might implement the Recommendation. - - -Capturing and Reporting Results -------------------------------- - -As tests are run against implementations, if the results of testing are -submitted to [test-results](https://github.com/w3c/test-results/) then they will -be automatically included in documents generated by -[wptreport](https://www.github.com/w3c/wptreport). The same tool can be used -locally to view reports about recorded results. diff --git a/testing/web-platform/tests/core-aam/alert-manual.html b/testing/web-platform/tests/core-aam/alert-manual.html deleted file mode 100644 index e1a482205acc..000000000000 --- a/testing/web-platform/tests/core-aam/alert-manual.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - alert - - - - - - - - - -

    This test examines the ARIA properties for alert.

    - - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/alertdialog-manual.html b/testing/web-platform/tests/core-aam/alertdialog-manual.html deleted file mode 100644 index 87c625c8a18a..000000000000 --- a/testing/web-platform/tests/core-aam/alertdialog-manual.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - alertdialog - - - - - - - - - -

    This test examines the ARIA properties for alertdialog.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/application-manual.html b/testing/web-platform/tests/core-aam/application-manual.html deleted file mode 100644 index 38c1e461f7d3..000000000000 --- a/testing/web-platform/tests/core-aam/application-manual.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - application - - - - - - - - - -

    This test examines the ARIA properties for application.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-atomic_false-manual.html b/testing/web-platform/tests/core-aam/aria-atomic_false-manual.html deleted file mode 100644 index c66e9956f9a3..000000000000 --- a/testing/web-platform/tests/core-aam/aria-atomic_false-manual.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - aria-atomic=false - - - - - - - - - -

    This test examines the ARIA properties for aria-atomic=false.

    -
    -
    content
    -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-atomic_true-manual.html b/testing/web-platform/tests/core-aam/aria-atomic_true-manual.html deleted file mode 100644 index f6235305a4bf..000000000000 --- a/testing/web-platform/tests/core-aam/aria-atomic_true-manual.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - aria-atomic=true - - - - - - - - - -

    This test examines the ARIA properties for aria-atomic=true.

    -
    -
    content
    -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-autocomplete_both_new-manual.html b/testing/web-platform/tests/core-aam/aria-autocomplete_both_new-manual.html deleted file mode 100644 index f59b0d64335e..000000000000 --- a/testing/web-platform/tests/core-aam/aria-autocomplete_both_new-manual.html +++ /dev/null @@ -1,70 +0,0 @@ - - - - aria-autocomplete=both NEW - - - - - - - - - -

    This test examines the ARIA properties for aria-autocomplete=both NEW.

    -
    -
    content
    -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-autocomplete_inline_new-manual.html b/testing/web-platform/tests/core-aam/aria-autocomplete_inline_new-manual.html deleted file mode 100644 index 9ad775ae4f62..000000000000 --- a/testing/web-platform/tests/core-aam/aria-autocomplete_inline_new-manual.html +++ /dev/null @@ -1,70 +0,0 @@ - - - - aria-autocomplete=inline NEW - - - - - - - - - -

    This test examines the ARIA properties for aria-autocomplete=inline NEW.

    -
    -
    content
    -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-autocomplete_list_new-manual.html b/testing/web-platform/tests/core-aam/aria-autocomplete_list_new-manual.html deleted file mode 100644 index c9404c56d747..000000000000 --- a/testing/web-platform/tests/core-aam/aria-autocomplete_list_new-manual.html +++ /dev/null @@ -1,70 +0,0 @@ - - - - aria-autocomplete=list NEW - - - - - - - - - -

    This test examines the ARIA properties for aria-autocomplete=list NEW.

    -
    -
    content
    -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-busy_false-manual.html b/testing/web-platform/tests/core-aam/aria-busy_false-manual.html deleted file mode 100644 index a42aa08cfa7b..000000000000 --- a/testing/web-platform/tests/core-aam/aria-busy_false-manual.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - aria-busy=false - - - - - - - - - -

    This test examines the ARIA properties for aria-busy=false.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-busy_true-manual.html b/testing/web-platform/tests/core-aam/aria-busy_true-manual.html deleted file mode 100644 index f1207573a65e..000000000000 --- a/testing/web-platform/tests/core-aam/aria-busy_true-manual.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - aria-busy=true - - - - - - - - - -

    This test examines the ARIA properties for aria-busy=true.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-checked_false_on_checkbox-manual.html b/testing/web-platform/tests/core-aam/aria-checked_false_on_checkbox-manual.html deleted file mode 100644 index 9b8073142649..000000000000 --- a/testing/web-platform/tests/core-aam/aria-checked_false_on_checkbox-manual.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - aria-checked=false on checkbox - - - - - - - - - -

    This test examines the ARIA properties for aria-checked=false on checkbox.

    - - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-checked_false_on_menuitemradio-manual.html b/testing/web-platform/tests/core-aam/aria-checked_false_on_menuitemradio-manual.html deleted file mode 100644 index 3180ef56dbca..000000000000 --- a/testing/web-platform/tests/core-aam/aria-checked_false_on_menuitemradio-manual.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - aria-checked=false on menuitemradio - - - - - - - - - -

    This test examines the ARIA properties for aria-checked=false on menuitemradio.

    -
    -
    content
    -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-checked_mixed-manual.html b/testing/web-platform/tests/core-aam/aria-checked_mixed-manual.html deleted file mode 100644 index 3eb149d81ec9..000000000000 --- a/testing/web-platform/tests/core-aam/aria-checked_mixed-manual.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - aria-checked=mixed - - - - - - - - - -

    This test examines the ARIA properties for aria-checked=mixed.

    - - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-checked_true_on_checkbox-manual.html b/testing/web-platform/tests/core-aam/aria-checked_true_on_checkbox-manual.html deleted file mode 100644 index bb44d317795d..000000000000 --- a/testing/web-platform/tests/core-aam/aria-checked_true_on_checkbox-manual.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - aria-checked=true on checkbox - - - - - - - - - -

    This test examines the ARIA properties for aria-checked=true on checkbox.

    - - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-checked_true_on_menuitemradio-manual.html b/testing/web-platform/tests/core-aam/aria-checked_true_on_menuitemradio-manual.html deleted file mode 100644 index 49c048274423..000000000000 --- a/testing/web-platform/tests/core-aam/aria-checked_true_on_menuitemradio-manual.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - aria-checked=true on menuitemradio - - - - - - - - - -

    This test examines the ARIA properties for aria-checked=true on menuitemradio.

    -
    -
    content
    -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-colcount_new-manual.html b/testing/web-platform/tests/core-aam/aria-colcount_new-manual.html deleted file mode 100644 index bfe93b7a4b5e..000000000000 --- a/testing/web-platform/tests/core-aam/aria-colcount_new-manual.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - aria-colcount NEW - - - - - - - - - -

    This test examines the ARIA properties for aria-colcount NEW.

    -
    -
    -
    content
    -
    -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-colindex_new-manual.html b/testing/web-platform/tests/core-aam/aria-colindex_new-manual.html deleted file mode 100644 index 7839ea4346f4..000000000000 --- a/testing/web-platform/tests/core-aam/aria-colindex_new-manual.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - aria-colindex NEW - - - - - - - - - -

    This test examines the ARIA properties for aria-colindex NEW.

    -
    -
    -
    content
    -
    -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-colspan_new-manual.html b/testing/web-platform/tests/core-aam/aria-colspan_new-manual.html deleted file mode 100644 index 8d74444a898b..000000000000 --- a/testing/web-platform/tests/core-aam/aria-colspan_new-manual.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - aria-colspan NEW - - - - - - - - - -

    This test examines the ARIA properties for aria-colspan NEW.

    -
    -
    -
    content
    -
    -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-controls-manual.html b/testing/web-platform/tests/core-aam/aria-controls-manual.html deleted file mode 100644 index 69b693cc665e..000000000000 --- a/testing/web-platform/tests/core-aam/aria-controls-manual.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - aria-controls - - - - - - - - - -

    This test examines the ARIA properties for aria-controls.

    -
    -
    content
    -
    -
    -
    content
    -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-current_with_non-false_allowed_value_new-manual.html b/testing/web-platform/tests/core-aam/aria-current_with_non-false_allowed_value_new-manual.html deleted file mode 100644 index 5f6119d8e5ae..000000000000 --- a/testing/web-platform/tests/core-aam/aria-current_with_non-false_allowed_value_new-manual.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - aria-current with non-false allowed value NEW - - - - - - - - - -

    This test examines the ARIA properties for aria-current with non-false allowed value NEW.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-current_with_unrecognized_value_new-manual.html b/testing/web-platform/tests/core-aam/aria-current_with_unrecognized_value_new-manual.html deleted file mode 100644 index fb29913c8f4b..000000000000 --- a/testing/web-platform/tests/core-aam/aria-current_with_unrecognized_value_new-manual.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - aria-current with unrecognized value NEW - - - - - - - - - -

    This test examines the ARIA properties for aria-current with unrecognized value NEW.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-describedby-manual.html b/testing/web-platform/tests/core-aam/aria-describedby-manual.html deleted file mode 100644 index d47732809ea0..000000000000 --- a/testing/web-platform/tests/core-aam/aria-describedby-manual.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - aria-describedby - - - - - - - - - -

    This test examines the ARIA properties for aria-describedby.

    -
    content
    -
    hello world
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-details_new-manual.html b/testing/web-platform/tests/core-aam/aria-details_new-manual.html deleted file mode 100644 index fed7982d7916..000000000000 --- a/testing/web-platform/tests/core-aam/aria-details_new-manual.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - aria-details NEW - - - - - - - - - -

    This test examines the ARIA properties for aria-details NEW.

    -
    content
    -
    hello world
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-disabled_false-manual.html b/testing/web-platform/tests/core-aam/aria-disabled_false-manual.html deleted file mode 100644 index 3981dd65e28e..000000000000 --- a/testing/web-platform/tests/core-aam/aria-disabled_false-manual.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - aria-disabled=false - - - - - - - - - -

    This test examines the ARIA properties for aria-disabled=false.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-disabled_true-manual.html b/testing/web-platform/tests/core-aam/aria-disabled_true-manual.html deleted file mode 100644 index 944ef5d454ab..000000000000 --- a/testing/web-platform/tests/core-aam/aria-disabled_true-manual.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - aria-disabled=true - - - - - - - - - -

    This test examines the ARIA properties for aria-disabled=true.

    -
    - -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-dropeffect_copy-manual.html b/testing/web-platform/tests/core-aam/aria-dropeffect_copy-manual.html deleted file mode 100644 index 28809a5c03be..000000000000 --- a/testing/web-platform/tests/core-aam/aria-dropeffect_copy-manual.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - aria-dropeffect=copy - - - - - - - - - -

    This test examines the ARIA properties for aria-dropeffect=copy.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-dropeffect_execute-manual.html b/testing/web-platform/tests/core-aam/aria-dropeffect_execute-manual.html deleted file mode 100644 index 834d092f6771..000000000000 --- a/testing/web-platform/tests/core-aam/aria-dropeffect_execute-manual.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - aria-dropeffect=execute - - - - - - - - - -

    This test examines the ARIA properties for aria-dropeffect=execute.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-dropeffect_link-manual.html b/testing/web-platform/tests/core-aam/aria-dropeffect_link-manual.html deleted file mode 100644 index 1ada887c98c0..000000000000 --- a/testing/web-platform/tests/core-aam/aria-dropeffect_link-manual.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - aria-dropeffect=link - - - - - - - - - -

    This test examines the ARIA properties for aria-dropeffect=link.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-dropeffect_move-manual.html b/testing/web-platform/tests/core-aam/aria-dropeffect_move-manual.html deleted file mode 100644 index 8b074c8cdeb6..000000000000 --- a/testing/web-platform/tests/core-aam/aria-dropeffect_move-manual.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - aria-dropeffect=move - - - - - - - - - -

    This test examines the ARIA properties for aria-dropeffect=move.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-dropeffect_none-manual.html b/testing/web-platform/tests/core-aam/aria-dropeffect_none-manual.html deleted file mode 100644 index e410ff2fdc1d..000000000000 --- a/testing/web-platform/tests/core-aam/aria-dropeffect_none-manual.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - aria-dropeffect=none - - - - - - - - - -

    This test examines the ARIA properties for aria-dropeffect=none.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-dropeffect_popup-manual.html b/testing/web-platform/tests/core-aam/aria-dropeffect_popup-manual.html deleted file mode 100644 index e98952dc6f24..000000000000 --- a/testing/web-platform/tests/core-aam/aria-dropeffect_popup-manual.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - aria-dropeffect=popup - - - - - - - - - -

    This test examines the ARIA properties for aria-dropeffect=popup.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-errormessage-manual.html b/testing/web-platform/tests/core-aam/aria-errormessage-manual.html deleted file mode 100644 index 648133d75107..000000000000 --- a/testing/web-platform/tests/core-aam/aria-errormessage-manual.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - aria-errormessage - - - - - - - - - -

    This test examines the ARIA properties for aria-errormessage.

    -
    content
    -
    hello world
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-expanded_false-manual.html b/testing/web-platform/tests/core-aam/aria-expanded_false-manual.html deleted file mode 100644 index 5c00c7edd243..000000000000 --- a/testing/web-platform/tests/core-aam/aria-expanded_false-manual.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - aria-expanded=false - - - - - - - - - -

    This test examines the ARIA properties for aria-expanded=false.

    - - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-expanded_true-manual.html b/testing/web-platform/tests/core-aam/aria-expanded_true-manual.html deleted file mode 100644 index 3e32d1d866b1..000000000000 --- a/testing/web-platform/tests/core-aam/aria-expanded_true-manual.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - aria-expanded=true - - - - - - - - - -

    This test examines the ARIA properties for aria-expanded=true.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-flowto-manual.html b/testing/web-platform/tests/core-aam/aria-flowto-manual.html deleted file mode 100644 index eaace494717a..000000000000 --- a/testing/web-platform/tests/core-aam/aria-flowto-manual.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - aria-flowto - - - - - - - - - -

    This test examines the ARIA properties for aria-flowto.

    -
    content
    - - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-grabbed_false-manual.html b/testing/web-platform/tests/core-aam/aria-grabbed_false-manual.html deleted file mode 100644 index e75ba9f036a7..000000000000 --- a/testing/web-platform/tests/core-aam/aria-grabbed_false-manual.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - aria-grabbed=false - - - - - - - - - -

    This test examines the ARIA properties for aria-grabbed=false.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-grabbed_true-manual.html b/testing/web-platform/tests/core-aam/aria-grabbed_true-manual.html deleted file mode 100644 index e830149bbed0..000000000000 --- a/testing/web-platform/tests/core-aam/aria-grabbed_true-manual.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - aria-grabbed=true - - - - - - - - - -

    This test examines the ARIA properties for aria-grabbed=true.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-haspopup_dialog_new-manual.html b/testing/web-platform/tests/core-aam/aria-haspopup_dialog_new-manual.html deleted file mode 100644 index 1352a26d8105..000000000000 --- a/testing/web-platform/tests/core-aam/aria-haspopup_dialog_new-manual.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - aria-haspopup=dialog NEW - - - - - - - - - -

    This test examines the ARIA properties for aria-haspopup=dialog NEW.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-haspopup_false-manual.html b/testing/web-platform/tests/core-aam/aria-haspopup_false-manual.html deleted file mode 100644 index 1082c4f178e9..000000000000 --- a/testing/web-platform/tests/core-aam/aria-haspopup_false-manual.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - aria-haspopup=false - - - - - - - - - -

    This test examines the ARIA properties for aria-haspopup=false.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-haspopup_listbox_new-manual.html b/testing/web-platform/tests/core-aam/aria-haspopup_listbox_new-manual.html deleted file mode 100644 index 993e90bfc982..000000000000 --- a/testing/web-platform/tests/core-aam/aria-haspopup_listbox_new-manual.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - aria-haspopup=listbox NEW - - - - - - - - - -

    This test examines the ARIA properties for aria-haspopup=listbox NEW.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-haspopup_menu_new-manual.html b/testing/web-platform/tests/core-aam/aria-haspopup_menu_new-manual.html deleted file mode 100644 index 536ba11e73d0..000000000000 --- a/testing/web-platform/tests/core-aam/aria-haspopup_menu_new-manual.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - aria-haspopup=menu NEW - - - - - - - - - -

    This test examines the ARIA properties for aria-haspopup=menu NEW.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-haspopup_tree_new-manual.html b/testing/web-platform/tests/core-aam/aria-haspopup_tree_new-manual.html deleted file mode 100644 index 41cf2283245b..000000000000 --- a/testing/web-platform/tests/core-aam/aria-haspopup_tree_new-manual.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - aria-haspopup=tree NEW - - - - - - - - - -

    This test examines the ARIA properties for aria-haspopup=tree NEW.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-haspopup_true-manual.html b/testing/web-platform/tests/core-aam/aria-haspopup_true-manual.html deleted file mode 100644 index 73bc951d33b7..000000000000 --- a/testing/web-platform/tests/core-aam/aria-haspopup_true-manual.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - aria-haspopup=true - - - - - - - - - -

    This test examines the ARIA properties for aria-haspopup=true.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-hidden_true-manual.html b/testing/web-platform/tests/core-aam/aria-hidden_true-manual.html deleted file mode 100644 index 5f4e340c3a34..000000000000 --- a/testing/web-platform/tests/core-aam/aria-hidden_true-manual.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - aria-hidden=true - - - - - - - - - -

    This test examines the ARIA properties for aria-hidden=true.

    - - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-invalid_false-manual.html b/testing/web-platform/tests/core-aam/aria-invalid_false-manual.html deleted file mode 100644 index badea7a8fbd2..000000000000 --- a/testing/web-platform/tests/core-aam/aria-invalid_false-manual.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - aria-invalid=false - - - - - - - - - -

    This test examines the ARIA properties for aria-invalid=false.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-invalid_grammar-manual.html b/testing/web-platform/tests/core-aam/aria-invalid_grammar-manual.html deleted file mode 100644 index 1a98c4cb7567..000000000000 --- a/testing/web-platform/tests/core-aam/aria-invalid_grammar-manual.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - aria-invalid=grammar - - - - - - - - - -

    This test examines the ARIA properties for aria-invalid=grammar.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-invalid_spelling-manual.html b/testing/web-platform/tests/core-aam/aria-invalid_spelling-manual.html deleted file mode 100644 index e287e47231a8..000000000000 --- a/testing/web-platform/tests/core-aam/aria-invalid_spelling-manual.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - aria-invalid=spelling - - - - - - - - - -

    This test examines the ARIA properties for aria-invalid=spelling.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-invalid_true-manual.html b/testing/web-platform/tests/core-aam/aria-invalid_true-manual.html deleted file mode 100644 index 7fd9d74ecdc3..000000000000 --- a/testing/web-platform/tests/core-aam/aria-invalid_true-manual.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - aria-invalid=true - - - - - - - - - -

    This test examines the ARIA properties for aria-invalid=true.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-invalid_with_unrecognized_value-manual.html b/testing/web-platform/tests/core-aam/aria-invalid_with_unrecognized_value-manual.html deleted file mode 100644 index 11e018d2c692..000000000000 --- a/testing/web-platform/tests/core-aam/aria-invalid_with_unrecognized_value-manual.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - aria-invalid with unrecognized value - - - - - - - - - -

    This test examines the ARIA properties for aria-invalid with unrecognized value.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-keyshortcuts_new-manual.html b/testing/web-platform/tests/core-aam/aria-keyshortcuts_new-manual.html deleted file mode 100644 index 90364193b200..000000000000 --- a/testing/web-platform/tests/core-aam/aria-keyshortcuts_new-manual.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - aria-keyshortcuts NEW - - - - - - - - - -

    This test examines the ARIA properties for aria-keyshortcuts NEW.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-label-manual.html b/testing/web-platform/tests/core-aam/aria-label-manual.html deleted file mode 100644 index ca3b16f7ed69..000000000000 --- a/testing/web-platform/tests/core-aam/aria-label-manual.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - aria-label - - - - - - - - - -

    This test examines the ARIA properties for aria-label.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-labelledby-manual.html b/testing/web-platform/tests/core-aam/aria-labelledby-manual.html deleted file mode 100644 index 27ab265dcc7c..000000000000 --- a/testing/web-platform/tests/core-aam/aria-labelledby-manual.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - aria-labelledby - - - - - - - - - -

    This test examines the ARIA properties for aria-labelledby.

    -
    content
    -
    hello world
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-level_on_heading_new-manual.html b/testing/web-platform/tests/core-aam/aria-level_on_heading_new-manual.html deleted file mode 100644 index 6bd58cfbc9e0..000000000000 --- a/testing/web-platform/tests/core-aam/aria-level_on_heading_new-manual.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - aria-level on heading NEW - - - - - - - - - -

    This test examines the ARIA properties for aria-level on heading NEW.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-level_on_non-heading-manual.html b/testing/web-platform/tests/core-aam/aria-level_on_non-heading-manual.html deleted file mode 100644 index 54e145958f88..000000000000 --- a/testing/web-platform/tests/core-aam/aria-level_on_non-heading-manual.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - aria-level on non-heading - - - - - - - - - -

    This test examines the ARIA properties for aria-level on non-heading.

    -
    -
    content
    -
    then expose the element with id of 'test' with the platform mappings for aria-level on non-heading. - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-live_assertive-manual.html b/testing/web-platform/tests/core-aam/aria-live_assertive-manual.html deleted file mode 100644 index a41f71f85327..000000000000 --- a/testing/web-platform/tests/core-aam/aria-live_assertive-manual.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - aria-live=assertive - - - - - - - - - -

    This test examines the ARIA properties for aria-live=assertive.

    -
    -
    content
    -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-live_off-manual.html b/testing/web-platform/tests/core-aam/aria-live_off-manual.html deleted file mode 100644 index 5985820b8025..000000000000 --- a/testing/web-platform/tests/core-aam/aria-live_off-manual.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - aria-live=off - - - - - - - - - -

    This test examines the ARIA properties for aria-live=off.

    -
    -
    content
    -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-live_polite-manual.html b/testing/web-platform/tests/core-aam/aria-live_polite-manual.html deleted file mode 100644 index 7f334c1c9e4c..000000000000 --- a/testing/web-platform/tests/core-aam/aria-live_polite-manual.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - aria-live=polite - - - - - - - - - -

    This test examines the ARIA properties for aria-live=polite.

    -
    -
    content
    -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-modal_false_new-manual.html b/testing/web-platform/tests/core-aam/aria-modal_false_new-manual.html deleted file mode 100644 index f06ff736a4ae..000000000000 --- a/testing/web-platform/tests/core-aam/aria-modal_false_new-manual.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - aria-modal=false NEW - - - - - - - - - -

    This test examines the ARIA properties for aria-modal=false NEW.

    -
    content
    - - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-modal_true_new-manual.html b/testing/web-platform/tests/core-aam/aria-modal_true_new-manual.html deleted file mode 100644 index 96541dd0fcb2..000000000000 --- a/testing/web-platform/tests/core-aam/aria-modal_true_new-manual.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - aria-modal=true NEW - - - - - - - - - -

    This test examines the ARIA properties for aria-modal=true NEW.

    -
    content
    - - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-multiline_false-manual.html b/testing/web-platform/tests/core-aam/aria-multiline_false-manual.html deleted file mode 100644 index 18d5e96f61bd..000000000000 --- a/testing/web-platform/tests/core-aam/aria-multiline_false-manual.html +++ /dev/null @@ -1,68 +0,0 @@ - - - - aria-multiline=false - - - - - - - - - -

    This test examines the ARIA properties for aria-multiline=false.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-multiline_true-manual.html b/testing/web-platform/tests/core-aam/aria-multiline_true-manual.html deleted file mode 100644 index 58781644755a..000000000000 --- a/testing/web-platform/tests/core-aam/aria-multiline_true-manual.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - aria-multiline=true - - - - - - - - - -

    This test examines the ARIA properties for aria-multiline=true.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-multiselectable_false-manual.html b/testing/web-platform/tests/core-aam/aria-multiselectable_false-manual.html deleted file mode 100644 index f370bc4581e5..000000000000 --- a/testing/web-platform/tests/core-aam/aria-multiselectable_false-manual.html +++ /dev/null @@ -1,66 +0,0 @@ - - - - aria-multiselectable=false - - - - - - - - - -

    This test examines the ARIA properties for aria-multiselectable=false.

    -
    -
    -
    content
    -
    -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-multiselectable_true-manual.html b/testing/web-platform/tests/core-aam/aria-multiselectable_true-manual.html deleted file mode 100644 index 38df7ec63697..000000000000 --- a/testing/web-platform/tests/core-aam/aria-multiselectable_true-manual.html +++ /dev/null @@ -1,74 +0,0 @@ - - - - aria-multiselectable=true - - - - - - - - - -

    This test examines the ARIA properties for aria-multiselectable=true.

    -
    -
    -
    content
    -
    -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-orientation_horizontal-manual.html b/testing/web-platform/tests/core-aam/aria-orientation_horizontal-manual.html deleted file mode 100644 index 50af2cd2847e..000000000000 --- a/testing/web-platform/tests/core-aam/aria-orientation_horizontal-manual.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - aria-orientation=horizontal - - - - - - - - - -

    This test examines the ARIA properties for aria-orientation=horizontal.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-orientation_undefined_new-manual.html b/testing/web-platform/tests/core-aam/aria-orientation_undefined_new-manual.html deleted file mode 100644 index 0019312b4828..000000000000 --- a/testing/web-platform/tests/core-aam/aria-orientation_undefined_new-manual.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - aria-orientation=undefined NEW - - - - - - - - - -

    This test examines the ARIA properties for aria-orientation=undefined NEW.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-orientation_vertical-manual.html b/testing/web-platform/tests/core-aam/aria-orientation_vertical-manual.html deleted file mode 100644 index b7d4470b9f57..000000000000 --- a/testing/web-platform/tests/core-aam/aria-orientation_vertical-manual.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - aria-orientation=vertical - - - - - - - - - -

    This test examines the ARIA properties for aria-orientation=vertical.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-owns_may_need_manual_verification-manual.html b/testing/web-platform/tests/core-aam/aria-owns_may_need_manual_verification-manual.html deleted file mode 100644 index c00e238b2c0b..000000000000 --- a/testing/web-platform/tests/core-aam/aria-owns_may_need_manual_verification-manual.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - aria-owns may need manual verification - - - - - - - - - -

    This test examines the ARIA properties for aria-owns may need manual verification.

    -
    content
    -
    content
    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-placeholder_new-manual.html b/testing/web-platform/tests/core-aam/aria-placeholder_new-manual.html deleted file mode 100644 index ea885b3dc70d..000000000000 --- a/testing/web-platform/tests/core-aam/aria-placeholder_new-manual.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - aria-placeholder NEW - - - - - - - - - -

    This test examines the ARIA properties for aria-placeholder NEW.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-posinset-manual.html b/testing/web-platform/tests/core-aam/aria-posinset-manual.html deleted file mode 100644 index 271cd9e35a5b..000000000000 --- a/testing/web-platform/tests/core-aam/aria-posinset-manual.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - aria-posinset - - - - - - - - - -

    This test examines the ARIA properties for aria-posinset.

    -
    -
    content
    -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-pressed_false-manual.html b/testing/web-platform/tests/core-aam/aria-pressed_false-manual.html deleted file mode 100644 index 537bc90f5fe7..000000000000 --- a/testing/web-platform/tests/core-aam/aria-pressed_false-manual.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - aria-pressed=false - - - - - - - - - -

    This test examines the ARIA properties for aria-pressed=false.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-pressed_mixed-manual.html b/testing/web-platform/tests/core-aam/aria-pressed_mixed-manual.html deleted file mode 100644 index 399d67423e96..000000000000 --- a/testing/web-platform/tests/core-aam/aria-pressed_mixed-manual.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - aria-pressed=mixed - - - - - - - - - -

    This test examines the ARIA properties for aria-pressed=mixed.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-pressed_true-manual.html b/testing/web-platform/tests/core-aam/aria-pressed_true-manual.html deleted file mode 100644 index 1ca8832b4f3b..000000000000 --- a/testing/web-platform/tests/core-aam/aria-pressed_true-manual.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - aria-pressed=true - - - - - - - - - -

    This test examines the ARIA properties for aria-pressed=true.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-readonly_false-manual.html b/testing/web-platform/tests/core-aam/aria-readonly_false-manual.html deleted file mode 100644 index d0b28abca5c8..000000000000 --- a/testing/web-platform/tests/core-aam/aria-readonly_false-manual.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - aria-readonly=false - - - - - - - - - -

    This test examines the ARIA properties for aria-readonly=false.

    - - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-readonly_is_unspecified_on_gridcell_new-manual.html b/testing/web-platform/tests/core-aam/aria-readonly_is_unspecified_on_gridcell_new-manual.html deleted file mode 100644 index 1373295da628..000000000000 --- a/testing/web-platform/tests/core-aam/aria-readonly_is_unspecified_on_gridcell_new-manual.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - aria-readonly is unspecified on gridcell NEW - - - - - - - - - -

    This test examines the ARIA properties for aria-readonly is unspecified on gridcell NEW.

    -
    -
    -
    content
    -
    -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-readonly_true_on_checkbox-manual.html b/testing/web-platform/tests/core-aam/aria-readonly_true_on_checkbox-manual.html deleted file mode 100644 index d131707fa5f8..000000000000 --- a/testing/web-platform/tests/core-aam/aria-readonly_true_on_checkbox-manual.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - aria-readonly=true on checkbox - - - - - - - - - -

    This test examines the ARIA properties for aria-readonly=true on checkbox.

    - - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-readonly_true_on_radiogroup-manual.html b/testing/web-platform/tests/core-aam/aria-readonly_true_on_radiogroup-manual.html deleted file mode 100644 index 7f20bc42449a..000000000000 --- a/testing/web-platform/tests/core-aam/aria-readonly_true_on_radiogroup-manual.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - aria-readonly=true on radiogroup - - - - - - - - - -

    This test examines the ARIA properties for aria-readonly=true on radiogroup.

    -
    - -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-readonly_true_on_textbox-manual.html b/testing/web-platform/tests/core-aam/aria-readonly_true_on_textbox-manual.html deleted file mode 100644 index 556dad152b43..000000000000 --- a/testing/web-platform/tests/core-aam/aria-readonly_true_on_textbox-manual.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - aria-readonly=true on textbox - - - - - - - - - -

    This test examines the ARIA properties for aria-readonly=true on textbox.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-relevant-manual.html b/testing/web-platform/tests/core-aam/aria-relevant-manual.html deleted file mode 100644 index 516f1a028507..000000000000 --- a/testing/web-platform/tests/core-aam/aria-relevant-manual.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - aria-relevant - - - - - - - - - -

    This test examines the ARIA properties for aria-relevant.

    -
    -
    content
    -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-required_true-manual.html b/testing/web-platform/tests/core-aam/aria-required_true-manual.html deleted file mode 100644 index 8774576e1196..000000000000 --- a/testing/web-platform/tests/core-aam/aria-required_true-manual.html +++ /dev/null @@ -1,74 +0,0 @@ - - - - aria-required=true - - - - - - - - - -

    This test examines the ARIA properties for aria-required=true.

    -
    -
    content
    -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-roledescription_is_empty_or_whitespace_characters_new-manual.html b/testing/web-platform/tests/core-aam/aria-roledescription_is_empty_or_whitespace_characters_new-manual.html deleted file mode 100644 index 74e1bdcfdb2d..000000000000 --- a/testing/web-platform/tests/core-aam/aria-roledescription_is_empty_or_whitespace_characters_new-manual.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - aria-roledescription is empty or whitespace characters NEW - - - - - - - - - -

    This test examines the ARIA properties for aria-roledescription is empty or whitespace characters NEW.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-roledescription_new-manual.html b/testing/web-platform/tests/core-aam/aria-roledescription_new-manual.html deleted file mode 100644 index 16a5f4564ec5..000000000000 --- a/testing/web-platform/tests/core-aam/aria-roledescription_new-manual.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - aria-roledescription NEW - - - - - - - - - -

    This test examines the ARIA properties for aria-roledescription NEW.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-rowcount_new-manual.html b/testing/web-platform/tests/core-aam/aria-rowcount_new-manual.html deleted file mode 100644 index 2a687fda8a48..000000000000 --- a/testing/web-platform/tests/core-aam/aria-rowcount_new-manual.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - aria-rowcount NEW - - - - - - - - - -

    This test examines the ARIA properties for aria-rowcount NEW.

    -
    -
    -
    content
    -
    -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-rowindex_new-manual.html b/testing/web-platform/tests/core-aam/aria-rowindex_new-manual.html deleted file mode 100644 index 307433ba32d5..000000000000 --- a/testing/web-platform/tests/core-aam/aria-rowindex_new-manual.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - aria-rowindex NEW - - - - - - - - - -

    This test examines the ARIA properties for aria-rowindex NEW.

    -
    -
    -
    content
    -
    -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-rowspan_new-manual.html b/testing/web-platform/tests/core-aam/aria-rowspan_new-manual.html deleted file mode 100644 index 55cca15fd1d2..000000000000 --- a/testing/web-platform/tests/core-aam/aria-rowspan_new-manual.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - aria-rowspan NEW - - - - - - - - - -

    This test examines the ARIA properties for aria-rowspan NEW.

    -
    -
    -
    content
    -
    -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-selected_false-manual.html b/testing/web-platform/tests/core-aam/aria-selected_false-manual.html deleted file mode 100644 index 81154600c926..000000000000 --- a/testing/web-platform/tests/core-aam/aria-selected_false-manual.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - aria-selected=false - - - - - - - - - -

    This test examines the ARIA properties for aria-selected=false.

    -
    -
    -
    content
    -
    -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-selected_true-manual.html b/testing/web-platform/tests/core-aam/aria-selected_true-manual.html deleted file mode 100644 index 44704cc9b563..000000000000 --- a/testing/web-platform/tests/core-aam/aria-selected_true-manual.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - aria-selected=true - - - - - - - - - -

    This test examines the ARIA properties for aria-selected=true.

    -
    -
    -
    content
    -
    -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-setsize_-1-manual.html b/testing/web-platform/tests/core-aam/aria-setsize_-1-manual.html deleted file mode 100644 index cf32c26dfc69..000000000000 --- a/testing/web-platform/tests/core-aam/aria-setsize_-1-manual.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - aria-setsize=-1 - - - - - - - - - -

    This test examines the ARIA properties for aria-setsize=-1.

    -
    -
    content
    -
    content
    -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-setsize_3-manual.html b/testing/web-platform/tests/core-aam/aria-setsize_3-manual.html deleted file mode 100644 index 8b173bceb7f5..000000000000 --- a/testing/web-platform/tests/core-aam/aria-setsize_3-manual.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - aria-setsize=3 - - - - - - - - - -

    This test examines the ARIA properties for aria-setsize=3.

    -
    -
    content
    -
    content
    -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-sort_ascending-manual.html b/testing/web-platform/tests/core-aam/aria-sort_ascending-manual.html deleted file mode 100644 index adfebc22908e..000000000000 --- a/testing/web-platform/tests/core-aam/aria-sort_ascending-manual.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - aria-sort=ascending - - - - - - - - - -

    This test examines the ARIA properties for aria-sort=ascending.

    -
    -
    -
    content
    -
    -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-sort_descending-manual.html b/testing/web-platform/tests/core-aam/aria-sort_descending-manual.html deleted file mode 100644 index f954977ce90f..000000000000 --- a/testing/web-platform/tests/core-aam/aria-sort_descending-manual.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - aria-sort=descending - - - - - - - - - -

    This test examines the ARIA properties for aria-sort=descending.

    -
    -
    -
    content
    -
    -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-sort_none-manual.html b/testing/web-platform/tests/core-aam/aria-sort_none-manual.html deleted file mode 100644 index 95a1b9f0cba6..000000000000 --- a/testing/web-platform/tests/core-aam/aria-sort_none-manual.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - aria-sort=none - - - - - - - - - -

    This test examines the ARIA properties for aria-sort=none.

    -
    -
    -
    content
    -
    -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-sort_other-manual.html b/testing/web-platform/tests/core-aam/aria-sort_other-manual.html deleted file mode 100644 index 4dd87ac0df8e..000000000000 --- a/testing/web-platform/tests/core-aam/aria-sort_other-manual.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - aria-sort=other - - - - - - - - - -

    This test examines the ARIA properties for aria-sort=other.

    -
    -
    -
    content
    -
    -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-valuemax-manual.html b/testing/web-platform/tests/core-aam/aria-valuemax-manual.html deleted file mode 100644 index 1d5d09eb9a33..000000000000 --- a/testing/web-platform/tests/core-aam/aria-valuemax-manual.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - aria-valuemax - - - - - - - - - -

    This test examines the ARIA properties for aria-valuemax.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-valuemin-manual.html b/testing/web-platform/tests/core-aam/aria-valuemin-manual.html deleted file mode 100644 index cee996a76461..000000000000 --- a/testing/web-platform/tests/core-aam/aria-valuemin-manual.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - aria-valuemin - - - - - - - - - -

    This test examines the ARIA properties for aria-valuemin.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-valuenow-manual.html b/testing/web-platform/tests/core-aam/aria-valuenow-manual.html deleted file mode 100644 index bcef8d731420..000000000000 --- a/testing/web-platform/tests/core-aam/aria-valuenow-manual.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - aria-valuenow - - - - - - - - - -

    This test examines the ARIA properties for aria-valuenow.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/aria-valuetext-manual.html b/testing/web-platform/tests/core-aam/aria-valuetext-manual.html deleted file mode 100644 index ebf8b79881c6..000000000000 --- a/testing/web-platform/tests/core-aam/aria-valuetext-manual.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - aria-valuetext - - - - - - - - - -

    This test examines the ARIA properties for aria-valuetext.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/article-manual.html b/testing/web-platform/tests/core-aam/article-manual.html deleted file mode 100644 index ca5c992291d1..000000000000 --- a/testing/web-platform/tests/core-aam/article-manual.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - article - - - - - - - - - -

    This test examines the ARIA properties for article.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/banner_new-manual.html b/testing/web-platform/tests/core-aam/banner_new-manual.html deleted file mode 100644 index a992d90a8a31..000000000000 --- a/testing/web-platform/tests/core-aam/banner_new-manual.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - banner NEW - - - - - - - - - -

    This test examines the ARIA properties for banner NEW.

    - - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/button_with_aria-haspopup_dialog_new-manual.html b/testing/web-platform/tests/core-aam/button_with_aria-haspopup_dialog_new-manual.html deleted file mode 100644 index 8a6f0a75ed79..000000000000 --- a/testing/web-platform/tests/core-aam/button_with_aria-haspopup_dialog_new-manual.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - button with aria-haspopup="dialog" NEW - - - - - - - - - -

    This test examines the ARIA properties for button with aria-haspopup="dialog" NEW.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/button_with_aria-haspopup_true_new-manual.html b/testing/web-platform/tests/core-aam/button_with_aria-haspopup_true_new-manual.html deleted file mode 100644 index 34835c31ad6c..000000000000 --- a/testing/web-platform/tests/core-aam/button_with_aria-haspopup_true_new-manual.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - button with aria-haspopup="true" NEW - - - - - - - - - -

    This test examines the ARIA properties for button with aria-haspopup="true" NEW.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/button_with_default_values_for_aria-pressed_and_aria-haspopup-manual.html b/testing/web-platform/tests/core-aam/button_with_default_values_for_aria-pressed_and_aria-haspopup-manual.html deleted file mode 100644 index 9e1c0399a546..000000000000 --- a/testing/web-platform/tests/core-aam/button_with_default_values_for_aria-pressed_and_aria-haspopup-manual.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - button with default values for aria-pressed and aria-haspopup - - - - - - - - - -

    This test examines the ARIA properties for button with default values for aria-pressed and aria-haspopup.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/button_with_defined_value_for_aria-pressed-manual.html b/testing/web-platform/tests/core-aam/button_with_defined_value_for_aria-pressed-manual.html deleted file mode 100644 index 9169307568ed..000000000000 --- a/testing/web-platform/tests/core-aam/button_with_defined_value_for_aria-pressed-manual.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - button with defined value for aria-pressed - - - - - - - - - -

    This test examines the ARIA properties for button with defined value for aria-pressed.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/cell_new-manual.html b/testing/web-platform/tests/core-aam/cell_new-manual.html deleted file mode 100644 index 88588dd3d6cd..000000000000 --- a/testing/web-platform/tests/core-aam/cell_new-manual.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - cell NEW - - - - - - - - - -

    This test examines the ARIA properties for cell NEW.

    -
    -
    -
    content
    -
    -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/checkbox-manual.html b/testing/web-platform/tests/core-aam/checkbox-manual.html deleted file mode 100644 index 88d7ece7c7b0..000000000000 --- a/testing/web-platform/tests/core-aam/checkbox-manual.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - checkbox - - - - - - - - - -

    This test examines the ARIA properties for checkbox.

    - - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/columnheader-manual.html b/testing/web-platform/tests/core-aam/columnheader-manual.html deleted file mode 100644 index 015155c723eb..000000000000 --- a/testing/web-platform/tests/core-aam/columnheader-manual.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - columnheader - - - - - - - - - -

    This test examines the ARIA properties for columnheader.

    -
    -
    -
    content
    -
    -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/combobox-manual.html b/testing/web-platform/tests/core-aam/combobox-manual.html deleted file mode 100644 index a6dacc3dc25b..000000000000 --- a/testing/web-platform/tests/core-aam/combobox-manual.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - combobox - - - - - - - - - -

    This test examines the ARIA properties for combobox.

    - - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/complementary_new-manual.html b/testing/web-platform/tests/core-aam/complementary_new-manual.html deleted file mode 100644 index 681ecb681a5c..000000000000 --- a/testing/web-platform/tests/core-aam/complementary_new-manual.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - complementary NEW - - - - - - - - - -

    This test examines the ARIA properties for complementary NEW.

    - - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/contentinfo_new-manual.html b/testing/web-platform/tests/core-aam/contentinfo_new-manual.html deleted file mode 100644 index 5288f4e9b584..000000000000 --- a/testing/web-platform/tests/core-aam/contentinfo_new-manual.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - contentinfo NEW - - - - - - - - - -

    This test examines the ARIA properties for contentinfo NEW.

    - - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/definition-manual.html b/testing/web-platform/tests/core-aam/definition-manual.html deleted file mode 100644 index 95b31e89c1ff..000000000000 --- a/testing/web-platform/tests/core-aam/definition-manual.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - definition - - - - - - - - - -

    This test examines the ARIA properties for definition.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/dialog-manual.html b/testing/web-platform/tests/core-aam/dialog-manual.html deleted file mode 100644 index 4f5a57b1e3ed..000000000000 --- a/testing/web-platform/tests/core-aam/dialog-manual.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - dialog - - - - - - - - - -

    This test examines the ARIA properties for dialog.

    - - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/directory-manual.html b/testing/web-platform/tests/core-aam/directory-manual.html deleted file mode 100644 index 57908e4f25c2..000000000000 --- a/testing/web-platform/tests/core-aam/directory-manual.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - directory - - - - - - - - - -

    This test examines the ARIA properties for directory.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/document-manual.html b/testing/web-platform/tests/core-aam/document-manual.html deleted file mode 100644 index 865bb80e8b5f..000000000000 --- a/testing/web-platform/tests/core-aam/document-manual.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - document - - - - - - - - - -

    This test examines the ARIA properties for document.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/feed_new-manual.html b/testing/web-platform/tests/core-aam/feed_new-manual.html deleted file mode 100644 index d32f374f211a..000000000000 --- a/testing/web-platform/tests/core-aam/feed_new-manual.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - feed NEW - - - - - - - - - -

    This test examines the ARIA properties for feed NEW.

    -
    -
    content
    -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/figure_new-manual.html b/testing/web-platform/tests/core-aam/figure_new-manual.html deleted file mode 100644 index b510168f8952..000000000000 --- a/testing/web-platform/tests/core-aam/figure_new-manual.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - figure NEW - - - - - - - - - -

    This test examines the ARIA properties for figure NEW.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/form_new-manual.html b/testing/web-platform/tests/core-aam/form_new-manual.html deleted file mode 100644 index da1feab87e7f..000000000000 --- a/testing/web-platform/tests/core-aam/form_new-manual.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - form NEW - - - - - - - - - -

    This test examines the ARIA properties for form NEW.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/grid-manual.html b/testing/web-platform/tests/core-aam/grid-manual.html deleted file mode 100644 index ae258e582411..000000000000 --- a/testing/web-platform/tests/core-aam/grid-manual.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - grid - - - - - - - - - -

    This test examines the ARIA properties for grid.

    -
    -
    -
    content
    -
    content
    -
    -
    -
    content
    -
    content
    -
    -
    -
    content
    -
    content
    -
    -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/gridcell-manual.html b/testing/web-platform/tests/core-aam/gridcell-manual.html deleted file mode 100644 index 40daab1a67d7..000000000000 --- a/testing/web-platform/tests/core-aam/gridcell-manual.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - gridcell - - - - - - - - - -

    This test examines the ARIA properties for gridcell.

    -
    -
    -
    content
    -
    -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/group-manual.html b/testing/web-platform/tests/core-aam/group-manual.html deleted file mode 100644 index e2baad538d6b..000000000000 --- a/testing/web-platform/tests/core-aam/group-manual.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - group - - - - - - - - - -

    This test examines the ARIA properties for group.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/heading-manual.html b/testing/web-platform/tests/core-aam/heading-manual.html deleted file mode 100644 index 008f78982a74..000000000000 --- a/testing/web-platform/tests/core-aam/heading-manual.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - heading - - - - - - - - - -

    This test examines the ARIA properties for heading.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/img-manual.html b/testing/web-platform/tests/core-aam/img-manual.html deleted file mode 100644 index 749965472c37..000000000000 --- a/testing/web-platform/tests/core-aam/img-manual.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - img - - - - - - - - - -

    This test examines the ARIA properties for img.

    - - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/link-manual.html b/testing/web-platform/tests/core-aam/link-manual.html deleted file mode 100644 index 48bbea34446d..000000000000 --- a/testing/web-platform/tests/core-aam/link-manual.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - link - - - - - - - - - -

    This test examines the ARIA properties for link.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/list-manual.html b/testing/web-platform/tests/core-aam/list-manual.html deleted file mode 100644 index aabc368ff58a..000000000000 --- a/testing/web-platform/tests/core-aam/list-manual.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - list - - - - - - - - - -

    This test examines the ARIA properties for list.

    -
    -
    content
    -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/listbox_not_owned_by_or_child_of_combobox-manual.html b/testing/web-platform/tests/core-aam/listbox_not_owned_by_or_child_of_combobox-manual.html deleted file mode 100644 index fefb0995371c..000000000000 --- a/testing/web-platform/tests/core-aam/listbox_not_owned_by_or_child_of_combobox-manual.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - listbox not owned by or child of combobox - - - - - - - - - -

    This test examines the ARIA properties for listbox not owned by or child of combobox.

    -
    -
    content
    -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/listbox_owned_by_or_child_of_combobox-manual.html b/testing/web-platform/tests/core-aam/listbox_owned_by_or_child_of_combobox-manual.html deleted file mode 100644 index 32da806782c2..000000000000 --- a/testing/web-platform/tests/core-aam/listbox_owned_by_or_child_of_combobox-manual.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - listbox owned by or child of combobox - - - - - - - - - -

    This test examines the ARIA properties for listbox owned by or child of combobox.

    -
    -
    content
    -
    -
    content
    -
    -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/listitem-manual.html b/testing/web-platform/tests/core-aam/listitem-manual.html deleted file mode 100644 index 886269f1d96d..000000000000 --- a/testing/web-platform/tests/core-aam/listitem-manual.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - listitem - - - - - - - - - -

    This test examines the ARIA properties for listitem.

    -
    -
    content
    -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/log-manual.html b/testing/web-platform/tests/core-aam/log-manual.html deleted file mode 100644 index ecfc6bd22be1..000000000000 --- a/testing/web-platform/tests/core-aam/log-manual.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - log - - - - - - - - - -

    This test examines the ARIA properties for log.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/main_new-manual.html b/testing/web-platform/tests/core-aam/main_new-manual.html deleted file mode 100644 index a91e5bb9277f..000000000000 --- a/testing/web-platform/tests/core-aam/main_new-manual.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - main NEW - - - - - - - - - -

    This test examines the ARIA properties for main NEW.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/marquee-manual.html b/testing/web-platform/tests/core-aam/marquee-manual.html deleted file mode 100644 index a47a906aeab2..000000000000 --- a/testing/web-platform/tests/core-aam/marquee-manual.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - marquee - - - - - - - - - -

    This test examines the ARIA properties for marquee.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/math-manual.html b/testing/web-platform/tests/core-aam/math-manual.html deleted file mode 100644 index 28d48d8f9055..000000000000 --- a/testing/web-platform/tests/core-aam/math-manual.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - math - - - - - - - - - -

    This test examines the ARIA properties for math.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/menu-manual.html b/testing/web-platform/tests/core-aam/menu-manual.html deleted file mode 100644 index 757edfd0b5b2..000000000000 --- a/testing/web-platform/tests/core-aam/menu-manual.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - menu - - - - - - - - - -

    This test examines the ARIA properties for menu.

    - - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/menubar-manual.html b/testing/web-platform/tests/core-aam/menubar-manual.html deleted file mode 100644 index 6c18e8cc6553..000000000000 --- a/testing/web-platform/tests/core-aam/menubar-manual.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - menubar - - - - - - - - - -

    This test examines the ARIA properties for menubar.

    - - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/menuitem_not_owned_by_or_child_of_group-manual.html b/testing/web-platform/tests/core-aam/menuitem_not_owned_by_or_child_of_group-manual.html deleted file mode 100644 index 70a1733612e8..000000000000 --- a/testing/web-platform/tests/core-aam/menuitem_not_owned_by_or_child_of_group-manual.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - menuitem not owned by or child of group - - - - - - - - - -

    This test examines the ARIA properties for menuitem not owned by or child of group.

    -
    - -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/menuitem_owned_by_or_child_of_group-manual.html b/testing/web-platform/tests/core-aam/menuitem_owned_by_or_child_of_group-manual.html deleted file mode 100644 index 4aea3855ce26..000000000000 --- a/testing/web-platform/tests/core-aam/menuitem_owned_by_or_child_of_group-manual.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - menuitem owned by or child of group - - - - - - - - - -

    This test examines the ARIA properties for menuitem owned by or child of group.

    -
    -
    - -
    -
    content 2
    -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/menuitemcheckbox-manual.html b/testing/web-platform/tests/core-aam/menuitemcheckbox-manual.html deleted file mode 100644 index 69595cd255ed..000000000000 --- a/testing/web-platform/tests/core-aam/menuitemcheckbox-manual.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - menuitemcheckbox - - - - - - - - - -

    This test examines the ARIA properties for menuitemcheckbox.

    -
    -
    content
    -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/menuitemradio-manual.html b/testing/web-platform/tests/core-aam/menuitemradio-manual.html deleted file mode 100644 index ad556b27c460..000000000000 --- a/testing/web-platform/tests/core-aam/menuitemradio-manual.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - menuitemradio - - - - - - - - - -

    This test examines the ARIA properties for menuitemradio.

    -
    -
    content
    -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/navigation_new-manual.html b/testing/web-platform/tests/core-aam/navigation_new-manual.html deleted file mode 100644 index 775f5835a3de..000000000000 --- a/testing/web-platform/tests/core-aam/navigation_new-manual.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - navigation NEW - - - - - - - - - -

    This test examines the ARIA properties for navigation NEW.

    - - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/none_new-manual.html b/testing/web-platform/tests/core-aam/none_new-manual.html deleted file mode 100644 index b9d095151246..000000000000 --- a/testing/web-platform/tests/core-aam/none_new-manual.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - none NEW - - - - - - - - - -

    This test examines the ARIA properties for none NEW.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/note-manual.html b/testing/web-platform/tests/core-aam/note-manual.html deleted file mode 100644 index 7657800d68f8..000000000000 --- a/testing/web-platform/tests/core-aam/note-manual.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - note - - - - - - - - - -

    This test examines the ARIA properties for note.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/option_inside_combobox-manual.html b/testing/web-platform/tests/core-aam/option_inside_combobox-manual.html deleted file mode 100644 index 82f1a9872c60..000000000000 --- a/testing/web-platform/tests/core-aam/option_inside_combobox-manual.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - option inside combobox - - - - - - - - - -

    This test examines the ARIA properties for option inside combobox.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/option_not_inside_combobox-manual.html b/testing/web-platform/tests/core-aam/option_not_inside_combobox-manual.html deleted file mode 100644 index 49c27bc95653..000000000000 --- a/testing/web-platform/tests/core-aam/option_not_inside_combobox-manual.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - option not inside combobox - - - - - - - - - -

    This test examines the ARIA properties for option not inside combobox.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/presentation-manual.html b/testing/web-platform/tests/core-aam/presentation-manual.html deleted file mode 100644 index 519bd7561e6d..000000000000 --- a/testing/web-platform/tests/core-aam/presentation-manual.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - presentation - - - - - - - - - -

    This test examines the ARIA properties for presentation.

    - - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/progressbar-manual.html b/testing/web-platform/tests/core-aam/progressbar-manual.html deleted file mode 100644 index 3841552c9493..000000000000 --- a/testing/web-platform/tests/core-aam/progressbar-manual.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - progressbar - - - - - - - - - -

    This test examines the ARIA properties for progressbar.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/radio-manual.html b/testing/web-platform/tests/core-aam/radio-manual.html deleted file mode 100644 index fad488d9edc9..000000000000 --- a/testing/web-platform/tests/core-aam/radio-manual.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - radio - - - - - - - - - -

    This test examines the ARIA properties for radio.

    - - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/radiogroup-manual.html b/testing/web-platform/tests/core-aam/radiogroup-manual.html deleted file mode 100644 index 965422ee1e95..000000000000 --- a/testing/web-platform/tests/core-aam/radiogroup-manual.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - radiogroup - - - - - - - - - -

    This test examines the ARIA properties for radiogroup.

    -
    -
    content
    -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/region_with_an_accessible_name_new-manual.html b/testing/web-platform/tests/core-aam/region_with_an_accessible_name_new-manual.html deleted file mode 100644 index 0b43affea1ff..000000000000 --- a/testing/web-platform/tests/core-aam/region_with_an_accessible_name_new-manual.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - region with an accessible name NEW - - - - - - - - - -

    This test examines the ARIA properties for region with an accessible name NEW.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/region_without_an_accessible_name_new-manual.html b/testing/web-platform/tests/core-aam/region_without_an_accessible_name_new-manual.html deleted file mode 100644 index 42377a4d427f..000000000000 --- a/testing/web-platform/tests/core-aam/region_without_an_accessible_name_new-manual.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - region without an accessible name NEW - - - - - - - - - -

    This test examines the ARIA properties for region without an accessible name NEW.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/row_inside_treegrid-manual.html b/testing/web-platform/tests/core-aam/row_inside_treegrid-manual.html deleted file mode 100644 index a20db3078dc6..000000000000 --- a/testing/web-platform/tests/core-aam/row_inside_treegrid-manual.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - row inside treegrid - - - - - - - - - -

    This test examines the ARIA properties for row inside treegrid.

    -
    -
    -
    content
    -
    -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/row_not_inside_treegrid-manual.html b/testing/web-platform/tests/core-aam/row_not_inside_treegrid-manual.html deleted file mode 100644 index 2574b37b88db..000000000000 --- a/testing/web-platform/tests/core-aam/row_not_inside_treegrid-manual.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - row not inside treegrid - - - - - - - - - -

    This test examines the ARIA properties for row not inside treegrid.

    -
    -
    -
    content
    -
    -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/rowgroup-manual.html b/testing/web-platform/tests/core-aam/rowgroup-manual.html deleted file mode 100644 index 0b4f6e750cd6..000000000000 --- a/testing/web-platform/tests/core-aam/rowgroup-manual.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - rowgroup - - - - - - - - - -

    This test examines the ARIA properties for rowgroup.

    -
    -
    -
    -
    content
    -
    -
    -
    content
    -
    -
    -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/rowheader-manual.html b/testing/web-platform/tests/core-aam/rowheader-manual.html deleted file mode 100644 index 599173a3410f..000000000000 --- a/testing/web-platform/tests/core-aam/rowheader-manual.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - rowheader - - - - - - - - - -

    This test examines the ARIA properties for rowheader.

    -
    -
    -
    content
    -
    -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/scrollbar-manual.html b/testing/web-platform/tests/core-aam/scrollbar-manual.html deleted file mode 100644 index 994b511f7b39..000000000000 --- a/testing/web-platform/tests/core-aam/scrollbar-manual.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - scrollbar - - - - - - - - - -

    This test examines the ARIA properties for scrollbar.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/search_new-manual.html b/testing/web-platform/tests/core-aam/search_new-manual.html deleted file mode 100644 index 340374d83461..000000000000 --- a/testing/web-platform/tests/core-aam/search_new-manual.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - search NEW - - - - - - - - - -

    This test examines the ARIA properties for search NEW.

    - - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/searchbox_new-manual.html b/testing/web-platform/tests/core-aam/searchbox_new-manual.html deleted file mode 100644 index ecbceecfbb92..000000000000 --- a/testing/web-platform/tests/core-aam/searchbox_new-manual.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - searchbox NEW - - - - - - - - - -

    This test examines the ARIA properties for searchbox NEW.

    - - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/separator_focusable_new-manual.html b/testing/web-platform/tests/core-aam/separator_focusable_new-manual.html deleted file mode 100644 index 931f2c7e9411..000000000000 --- a/testing/web-platform/tests/core-aam/separator_focusable_new-manual.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - separator focusable NEW - - - - - - - - - -

    This test examines the ARIA properties for separator focusable NEW.

    - - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/separator_non-focusable-manual.html b/testing/web-platform/tests/core-aam/separator_non-focusable-manual.html deleted file mode 100644 index 7907217678ae..000000000000 --- a/testing/web-platform/tests/core-aam/separator_non-focusable-manual.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - separator non-focusable - - - - - - - - - -

    This test examines the ARIA properties for separator non-focusable.

    - - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/slider-manual.html b/testing/web-platform/tests/core-aam/slider-manual.html deleted file mode 100644 index 202f39d39a7b..000000000000 --- a/testing/web-platform/tests/core-aam/slider-manual.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - slider - - - - - - - - - -

    This test examines the ARIA properties for slider.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/spinbutton-manual.html b/testing/web-platform/tests/core-aam/spinbutton-manual.html deleted file mode 100644 index 1c64826024d3..000000000000 --- a/testing/web-platform/tests/core-aam/spinbutton-manual.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - spinbutton - - - - - - - - - -

    This test examines the ARIA properties for spinbutton.

    -
    10
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/status-manual.html b/testing/web-platform/tests/core-aam/status-manual.html deleted file mode 100644 index e80df9107b8b..000000000000 --- a/testing/web-platform/tests/core-aam/status-manual.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - status - - - - - - - - - -

    This test examines the ARIA properties for status.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/switch_new-manual.html b/testing/web-platform/tests/core-aam/switch_new-manual.html deleted file mode 100644 index 51dcdfa6d673..000000000000 --- a/testing/web-platform/tests/core-aam/switch_new-manual.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - switch NEW - - - - - - - - - -

    This test examines the ARIA properties for switch NEW.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/tab-manual.html b/testing/web-platform/tests/core-aam/tab-manual.html deleted file mode 100644 index e0505e42e228..000000000000 --- a/testing/web-platform/tests/core-aam/tab-manual.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - tab - - - - - - - - - -

    This test examines the ARIA properties for tab.

    -
    - -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/table_new-manual.html b/testing/web-platform/tests/core-aam/table_new-manual.html deleted file mode 100644 index 846cf2d1a237..000000000000 --- a/testing/web-platform/tests/core-aam/table_new-manual.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - table NEW - - - - - - - - - -

    This test examines the ARIA properties for table NEW.

    -
    -
    -
    content
    -
    content
    -
    -
    -
    content
    -
    content
    -
    -
    -
    content
    -
    content
    -
    -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/tablist-manual.html b/testing/web-platform/tests/core-aam/tablist-manual.html deleted file mode 100644 index 076e9499224f..000000000000 --- a/testing/web-platform/tests/core-aam/tablist-manual.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - tablist - - - - - - - - - -

    This test examines the ARIA properties for tablist.

    -
    -
    content
    -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/tabpanel-manual.html b/testing/web-platform/tests/core-aam/tabpanel-manual.html deleted file mode 100644 index 5820d98f320b..000000000000 --- a/testing/web-platform/tests/core-aam/tabpanel-manual.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - tabpanel - - - - - - - - - -

    This test examines the ARIA properties for tabpanel.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/term_new-manual.html b/testing/web-platform/tests/core-aam/term_new-manual.html deleted file mode 100644 index 458068d59d6b..000000000000 --- a/testing/web-platform/tests/core-aam/term_new-manual.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - term NEW - - - - - - - - - -

    This test examines the ARIA properties for term NEW.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/textbox_when_aria-multiline_is_false-manual.html b/testing/web-platform/tests/core-aam/textbox_when_aria-multiline_is_false-manual.html deleted file mode 100644 index eb7cce3148ce..000000000000 --- a/testing/web-platform/tests/core-aam/textbox_when_aria-multiline_is_false-manual.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - textbox when aria-multiline is false - - - - - - - - - -

    This test examines the ARIA properties for textbox when aria-multiline is false.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/textbox_when_aria-multiline_is_true-manual.html b/testing/web-platform/tests/core-aam/textbox_when_aria-multiline_is_true-manual.html deleted file mode 100644 index f1858dc7696c..000000000000 --- a/testing/web-platform/tests/core-aam/textbox_when_aria-multiline_is_true-manual.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - textbox when aria-multiline is true - - - - - - - - - -

    This test examines the ARIA properties for textbox when aria-multiline is true.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/timer-manual.html b/testing/web-platform/tests/core-aam/timer-manual.html deleted file mode 100644 index 0ca484f144a4..000000000000 --- a/testing/web-platform/tests/core-aam/timer-manual.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - timer - - - - - - - - - -

    This test examines the ARIA properties for timer.

    -
    content
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/toolbar-manual.html b/testing/web-platform/tests/core-aam/toolbar-manual.html deleted file mode 100644 index de1ef614752b..000000000000 --- a/testing/web-platform/tests/core-aam/toolbar-manual.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - toolbar - - - - - - - - - -

    This test examines the ARIA properties for toolbar.

    - - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/tooltip-manual.html b/testing/web-platform/tests/core-aam/tooltip-manual.html deleted file mode 100644 index a43327ec58fd..000000000000 --- a/testing/web-platform/tests/core-aam/tooltip-manual.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - tooltip - - - - - - - - - -

    This test examines the ARIA properties for tooltip.

    - - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/tree-manual.html b/testing/web-platform/tests/core-aam/tree-manual.html deleted file mode 100644 index c4dabcb4d4a2..000000000000 --- a/testing/web-platform/tests/core-aam/tree-manual.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - tree - - - - - - - - - -

    This test examines the ARIA properties for tree.

    -
    -
    content
    -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/treegrid-manual.html b/testing/web-platform/tests/core-aam/treegrid-manual.html deleted file mode 100644 index c21d44aeb012..000000000000 --- a/testing/web-platform/tests/core-aam/treegrid-manual.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - treegrid - - - - - - - - - -

    This test examines the ARIA properties for treegrid.

    -
    -
    -
    content
    -
    -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/core-aam/treeitem-manual.html b/testing/web-platform/tests/core-aam/treeitem-manual.html deleted file mode 100644 index afeeae541ea8..000000000000 --- a/testing/web-platform/tests/core-aam/treeitem-manual.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - treeitem - - - - - - - - - -

    This test examines the ARIA properties for treeitem.

    -
    -
    content
    -
    - -
    -
    -
    - - - diff --git a/testing/web-platform/tests/css-fonts/font-display/font-display-ref.html b/testing/web-platform/tests/css-font-display/font-display-ref.html similarity index 100% rename from testing/web-platform/tests/css-fonts/font-display/font-display-ref.html rename to testing/web-platform/tests/css-font-display/font-display-ref.html diff --git a/testing/web-platform/tests/css-fonts/font-display/font-display.html b/testing/web-platform/tests/css-font-display/font-display.html similarity index 100% rename from testing/web-platform/tests/css-fonts/font-display/font-display.html rename to testing/web-platform/tests/css-font-display/font-display.html diff --git a/testing/web-platform/tests/css-fonts/font-display/resources/slow-ahem-loading.py b/testing/web-platform/tests/css-font-display/resources/slow-ahem-loading.py similarity index 80% rename from testing/web-platform/tests/css-fonts/font-display/resources/slow-ahem-loading.py rename to testing/web-platform/tests/css-font-display/resources/slow-ahem-loading.py index bb556d1990e1..45989505ceeb 100644 --- a/testing/web-platform/tests/css-fonts/font-display/resources/slow-ahem-loading.py +++ b/testing/web-platform/tests/css-font-display/resources/slow-ahem-loading.py @@ -2,7 +2,7 @@ import os import time def main(request, response): - body = open(os.path.join(os.path.dirname(__file__), "../../../css/fonts/ahem/ahem.ttf"), "rb").read() + body = open(os.path.join(os.path.dirname(__file__), "../../css/fonts/ahem/ahem.ttf"), "rb").read() delay = float(request.GET.first("ms", 500)) if delay > 0: time.sleep(delay / 1E3); diff --git a/testing/web-platform/tests/css-paint-api/background-image-alpha.html b/testing/web-platform/tests/css-paint-api/background-image-alpha.html index de8a0d7c7fb5..ac69aa0749cb 100644 --- a/testing/web-platform/tests/css-paint-api/background-image-alpha.html +++ b/testing/web-platform/tests/css-paint-api/background-image-alpha.html @@ -30,7 +30,7 @@ - - -
    - - - - - - diff --git a/testing/web-platform/tests/css-paint-api/parse-input-arguments-020.html b/testing/web-platform/tests/css-paint-api/parse-input-arguments-020.html deleted file mode 100644 index b582555e30de..000000000000 --- a/testing/web-platform/tests/css-paint-api/parse-input-arguments-020.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - -
    - - - - - - diff --git a/testing/web-platform/tests/css-paint-api/parse-input-arguments-021.html b/testing/web-platform/tests/css-paint-api/parse-input-arguments-021.html deleted file mode 100644 index 666d4c485c24..000000000000 --- a/testing/web-platform/tests/css-paint-api/parse-input-arguments-021.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - -
    - - - - - - diff --git a/testing/web-platform/tests/css-paint-api/parse-input-arguments-022.html b/testing/web-platform/tests/css-paint-api/parse-input-arguments-022.html deleted file mode 100644 index 3c5d9f9b6bf3..000000000000 --- a/testing/web-platform/tests/css-paint-api/parse-input-arguments-022.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - -
    - - - - - - diff --git a/testing/web-platform/tests/css/CSS2/selectors/attribute-value-selector-001-ref.xht b/testing/web-platform/tests/css/CSS2/selectors/attribute-value-selector-001-ref.xht index 1aaf21d22e4a..296732095b04 100644 --- a/testing/web-platform/tests/css/CSS2/selectors/attribute-value-selector-001-ref.xht +++ b/testing/web-platform/tests/css/CSS2/selectors/attribute-value-selector-001-ref.xht @@ -9,9 +9,9 @@ } - +

    Test passes if the first line of "Filler Text" below is black and the second one is green.

    Filler Text
    -
    Filler Text
    +
    Filler Text
    diff --git a/testing/web-platform/tests/css/CSS2/selectors/attribute-value-selector-001.xht b/testing/web-platform/tests/css/CSS2/selectors/attribute-value-selector-001.xht index 374d9c279052..8130d44f6416 100644 --- a/testing/web-platform/tests/css/CSS2/selectors/attribute-value-selector-001.xht +++ b/testing/web-platform/tests/css/CSS2/selectors/attribute-value-selector-001.xht @@ -14,9 +14,9 @@ } - +

    Test passes if the first line of "Filler Text" below is black and the second one is green.

    Filler Text
    -
    Filler Text
    +
    Filler Text
    diff --git a/testing/web-platform/tests/css/CSS2/selectors/attribute-value-selector-002.xht b/testing/web-platform/tests/css/CSS2/selectors/attribute-value-selector-002.xht index b44a1f11ddc2..146544445d47 100644 --- a/testing/web-platform/tests/css/CSS2/selectors/attribute-value-selector-002.xht +++ b/testing/web-platform/tests/css/CSS2/selectors/attribute-value-selector-002.xht @@ -8,15 +8,15 @@ - +

    Test passes if the first line of "Filler Text" below is black and the second one is green.

    -
    Filler Text
    -
    Filler Text
    +
    Filler Text
    +
    Filler Text
    diff --git a/testing/web-platform/tests/css/CSS2/selectors/attribute-value-selector-003.xht b/testing/web-platform/tests/css/CSS2/selectors/attribute-value-selector-003.xht index 297b822e70ce..f64de3e65b09 100644 --- a/testing/web-platform/tests/css/CSS2/selectors/attribute-value-selector-003.xht +++ b/testing/web-platform/tests/css/CSS2/selectors/attribute-value-selector-003.xht @@ -14,9 +14,9 @@ } - +

    Test passes if the first line of "Filler Text" below is black and the second one is green.

    Filler Text
    -
    Filler Text
    +
    Filler Text
    diff --git a/testing/web-platform/tests/css/CSS2/syntax/core-syntax-001.xht b/testing/web-platform/tests/css/CSS2/syntax/core-syntax-001.xht index 6d8ec7ceba23..d91015dda5e6 100644 --- a/testing/web-platform/tests/css/CSS2/syntax/core-syntax-001.xht +++ b/testing/web-platform/tests/css/CSS2/syntax/core-syntax-001.xht @@ -6,7 +6,6 @@ - diff --git a/testing/web-platform/tests/css/CSS2/syntax/core-syntax-004.xht b/testing/web-platform/tests/css/CSS2/syntax/core-syntax-004.xht index 830017c7c58d..6950e2031925 100644 --- a/testing/web-platform/tests/css/CSS2/syntax/core-syntax-004.xht +++ b/testing/web-platform/tests/css/CSS2/syntax/core-syntax-004.xht @@ -6,7 +6,6 @@ - - - - - - - -
    -
    XX X
    X XXX
    X
    XX XXX
    -
    - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-002.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-002.html deleted file mode 100644 index 01f48ccde75f..000000000000 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-002.html +++ /dev/null @@ -1,41 +0,0 @@ - - -CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's height - - - - - - - - - - - - - - -
    -
    XX X
    X XXX
    X
    XX XXX
    -
    - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-003.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-003.html deleted file mode 100644 index d3c5ae10614d..000000000000 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-003.html +++ /dev/null @@ -1,41 +0,0 @@ - - -CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's height - - - - - - - - - - - - - - -
    -
    XX X
    X XXX
    X
    XX XXX
    -
    - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-004.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-004.html deleted file mode 100644 index 1f5ca8d19b4f..000000000000 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-004.html +++ /dev/null @@ -1,41 +0,0 @@ - - -CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's height - - - - - - - - - - - - - - -
    -
    XX X
    X XXX
    X
    XX XXX
    -
    - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-005.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-005.html deleted file mode 100644 index 07b0aca73761..000000000000 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-005.html +++ /dev/null @@ -1,41 +0,0 @@ - - -CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's height - - - - - - - - - - - - - - -
    -
    XX X
    X XXX
    X
    XX XXX
    -
    - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-006.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-006.html deleted file mode 100644 index f0f4d5d4353a..000000000000 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-006.html +++ /dev/null @@ -1,41 +0,0 @@ - - -CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's height - - - - - - - - - - - - - - -
    -
    XX X
    X XXX
    X
    XX XXX
    -
    - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-007.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-007.html deleted file mode 100644 index 5dd70bd1f61d..000000000000 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-007.html +++ /dev/null @@ -1,41 +0,0 @@ - - -CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's height - - - - - - - - - - - - - - -
    -
    XX X
    X XXX
    X
    XX XXX
    -
    - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-008.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-008.html deleted file mode 100644 index f1b22c563530..000000000000 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-008.html +++ /dev/null @@ -1,41 +0,0 @@ - - -CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's height - - - - - - - - - - - - - - -
    -
    XX X
    X XXX
    X
    XX XXX
    -
    - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-009.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-009.html deleted file mode 100644 index fb0041ce71f6..000000000000 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-009.html +++ /dev/null @@ -1,41 +0,0 @@ - - -CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's height - - - - - - - - - - - - - - -
    -
    XX X
    X XXX
    X
    XX XXX
    -
    - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-010.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-010.html deleted file mode 100644 index 1e68845baaad..000000000000 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-010.html +++ /dev/null @@ -1,41 +0,0 @@ - - -CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's height - - - - - - - - - - - - - - -
    -
    XX X
    X XXX
    X
    XX XXX
    -
    - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-011.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-011.html deleted file mode 100644 index e38852090ced..000000000000 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-011.html +++ /dev/null @@ -1,41 +0,0 @@ - - -CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's height - - - - - - - - - - - - - - -
    - -
    - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-012.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-012.html deleted file mode 100644 index 3ab4977a4d91..000000000000 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-012.html +++ /dev/null @@ -1,41 +0,0 @@ - - -CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's height - - - - - - - - - - - - - - -
    - -
    - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-013.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-013.html deleted file mode 100644 index bd6ce3f94dd6..000000000000 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-013.html +++ /dev/null @@ -1,41 +0,0 @@ - - -CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's height - - - - - - - - - - - - - - -
    - -
    - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-014.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-014.html deleted file mode 100644 index ab565666b5ce..000000000000 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-014.html +++ /dev/null @@ -1,41 +0,0 @@ - - -CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's height - - - - - - - - - - - - - - -
    - -
    - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-015.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-015.html deleted file mode 100644 index 844713a7285f..000000000000 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-015.html +++ /dev/null @@ -1,41 +0,0 @@ - - -CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's height - - - - - - - - - - - - - - -
    - -
    - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-016.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-016.html deleted file mode 100644 index dd3b4bee1ddd..000000000000 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-016.html +++ /dev/null @@ -1,41 +0,0 @@ - - -CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's height - - - - - - - - - - - - - - -
    - -
    - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-017.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-017.html deleted file mode 100644 index 5b2c20e83399..000000000000 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-017.html +++ /dev/null @@ -1,41 +0,0 @@ - - -CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's height - - - - - - - - - - - - - - -
    - -
    - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-018.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-018.html deleted file mode 100644 index 77711aaad386..000000000000 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-018.html +++ /dev/null @@ -1,41 +0,0 @@ - - -CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's height - - - - - - - - - - - - - - -
    - -
    - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-019.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-019.html deleted file mode 100644 index 9d0bbc936bac..000000000000 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-019.html +++ /dev/null @@ -1,41 +0,0 @@ - - -CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's width - - - - - - - - - - - - - - -
    -
    XX X
    X XXX
    X
    XX XXX
    -
    - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-020.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-020.html deleted file mode 100644 index 86dc27130d17..000000000000 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-020.html +++ /dev/null @@ -1,41 +0,0 @@ - - -CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's width - - - - - - - - - - - - - - -
    -
    XX X
    X XXX
    X
    XX XXX
    -
    - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-021.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-021.html deleted file mode 100644 index 1c92223bff6a..000000000000 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-021.html +++ /dev/null @@ -1,41 +0,0 @@ - - -CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's width - - - - - - - - - - - - - - -
    -
    XX X
    X XXX
    X
    XX XXX
    -
    - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-022.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-022.html deleted file mode 100644 index 94a634b9ad41..000000000000 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-022.html +++ /dev/null @@ -1,41 +0,0 @@ - - -CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's width - - - - - - - - - - - - - - -
    -
    XX X
    X XXX
    X
    XX XXX
    -
    - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-023.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-023.html deleted file mode 100644 index 3476f12200ce..000000000000 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-023.html +++ /dev/null @@ -1,41 +0,0 @@ - - -CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's width - - - - - - - - - - - - - - -
    -
    XX X
    X XXX
    X
    XX XXX
    -
    - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-024.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-024.html deleted file mode 100644 index 92db00245431..000000000000 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-024.html +++ /dev/null @@ -1,41 +0,0 @@ - - -CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's width - - - - - - - - - - - - - - -
    -
    XX X
    X XXX
    X
    XX XXX
    -
    - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-025.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-025.html deleted file mode 100644 index 997fa855415d..000000000000 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-025.html +++ /dev/null @@ -1,41 +0,0 @@ - - -CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's width - - - - - - - - - - - - - - -
    -
    XXXXXX
    X
    XX XXX
    -
    - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-026.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-026.html deleted file mode 100644 index 9d18be6f264d..000000000000 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-026.html +++ /dev/null @@ -1,41 +0,0 @@ - - -CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's width - - - - - - - - - - - - - - -
    -
    XXXXXX
    X
    XX XXX
    -
    - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-027.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-027.html deleted file mode 100644 index 78b9fbd72d67..000000000000 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-027.html +++ /dev/null @@ -1,41 +0,0 @@ - - -CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's width - - - - - - - - - - - - - - -
    -
    XXXXXX
    X
    XX XXX
    -
    - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-028.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-028.html deleted file mode 100644 index 1426cc41b067..000000000000 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-028.html +++ /dev/null @@ -1,42 +0,0 @@ - - -CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's width - - - - - - - - - - - - - - -
    -
    XXXXXX
    X
    XX XXX
    -
    - - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-029.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-029.html deleted file mode 100644 index ca9f47a5846e..000000000000 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-029.html +++ /dev/null @@ -1,41 +0,0 @@ - - -CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's width - - - - - - - - - - - - - - -
    - -
    - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-030.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-030.html deleted file mode 100644 index 103b04d76faf..000000000000 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-030.html +++ /dev/null @@ -1,41 +0,0 @@ - - -CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's width - - - - - - - - - - - - - - -
    - -
    - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-031.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-031.html deleted file mode 100644 index 9c85e5a90350..000000000000 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-031.html +++ /dev/null @@ -1,41 +0,0 @@ - - -CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's width - - - - - - - - - - - - - - -
    - -
    - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-032.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-032.html deleted file mode 100644 index 093c0f966e02..000000000000 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-032.html +++ /dev/null @@ -1,41 +0,0 @@ - - -CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's width - - - - - - - - - - - - - - -
    - -
    - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-033.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-033.html deleted file mode 100644 index 1cf535803bb7..000000000000 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-033.html +++ /dev/null @@ -1,41 +0,0 @@ - - -CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's width - - - - - - - - - - - - - - -
    - -
    - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-034.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-034.html deleted file mode 100644 index 87ec1ae07d45..000000000000 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-034.html +++ /dev/null @@ -1,41 +0,0 @@ - - -CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's width - - - - - - - - - - - - - - -
    - -
    - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-035.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-035.html deleted file mode 100644 index 1968522fecf3..000000000000 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-035.html +++ /dev/null @@ -1,41 +0,0 @@ - - -CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's width - - - - - - - - - - - - - - -
    - -
    - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-036.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-036.html deleted file mode 100644 index a79740308a37..000000000000 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-alignment-implies-size-change-036.html +++ /dev/null @@ -1,41 +0,0 @@ - - -CSS Grid Layout Test: Changes on Default-Alignment may affect grid item's width - - - - - - - - - - - - - - -
    - -
    - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-001.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-001.html index 7b53a2897b83..f8aa1c9b7275 100644 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-001.html +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-001.html @@ -2,7 +2,6 @@ CSS Grid Layout Test: Content Distribution 'space-evenly' on 2x2 grid - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-002.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-002.html index 194934bb93e5..d273c7bd076b 100644 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-002.html +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-002.html @@ -2,7 +2,6 @@ CSS Grid Layout Test: Content Distribution 'space-between' on 2x2 grid - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-003.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-003.html index ed6e32263906..b5cf8c0964bc 100644 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-003.html +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-003.html @@ -2,7 +2,6 @@ CSS Grid Layout Test: Content Distribution 'space-around' on 2x2 grid - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-004.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-004.html index 419d0fb1bd30..a2e4930c1096 100644 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-004.html +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-004.html @@ -2,7 +2,6 @@ CSS Grid Layout Test: Content Distribution 'stretch' on 2x2 grid - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-005.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-005.html index 2830aecab6bf..0b544ff15f28 100644 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-005.html +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-005.html @@ -2,7 +2,6 @@ CSS Grid Layout Test: Content Distribution default value - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-006.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-006.html index 61cfe2b68ed3..7cb2bc1b94be 100644 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-006.html +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-006.html @@ -2,7 +2,6 @@ CSS Grid Layout Test: Content Distribution 'space-evenly' and gaps on 2x2 grid - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-007.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-007.html index d4dce5dc95a9..34faa7470bae 100644 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-007.html +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-007.html @@ -2,7 +2,6 @@ CSS Grid Layout Test: Content Distribution 'space-evenly' on 3x3 grid - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-008.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-008.html index 3e381ec68b3b..f2a3f5d33d9b 100644 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-008.html +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-008.html @@ -2,7 +2,6 @@ CSS Grid Layout Test: Content Distribution 'space-evenly' and gaps on 3x3 grid - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-009.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-009.html index aa28a980b660..2acad9d4a7a3 100644 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-009.html +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-009.html @@ -2,7 +2,6 @@ CSS Grid Layout Test: Content Distribution 'space-evenly' on 4x4 grid - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-010.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-010.html index cb08775cd246..cc80076d3325 100644 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-010.html +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-010.html @@ -2,7 +2,6 @@ CSS Grid Layout Test: Content Distribution 'space-evenly' and gaps on 4x4 grid - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-011.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-011.html index 57eb3d0eac2c..c5ef6d74436e 100644 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-011.html +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-011.html @@ -2,7 +2,6 @@ CSS Grid Layout Test: Content Distribution 'space-between' and gaps on 2x2 grid - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-012.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-012.html index e45dbec8fce1..2b41ea263650 100644 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-012.html +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-012.html @@ -2,7 +2,6 @@ CSS Grid Layout Test: Content Distribution 'space-between' on 3x3 grid - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-013.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-013.html index 3e1df650fb14..1160cb7a5cc2 100644 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-013.html +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-013.html @@ -2,7 +2,6 @@ CSS Grid Layout Test: Content Distribution 'space-between' and gaps on 3x3 grid - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-014.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-014.html index 423aad172bc9..2d8d24abdb49 100644 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-014.html +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-014.html @@ -2,7 +2,6 @@ CSS Grid Layout Test: Content Distribution 'space-between' on 4x4 grid - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-015.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-015.html index ef4c857db668..f754528c0d1b 100644 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-015.html +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-015.html @@ -2,7 +2,6 @@ CSS Grid Layout Test: Content Distribution 'space-between' and gaps on 4x4 grid - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-016.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-016.html index 11a66915de5a..b372aaecb9c4 100644 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-016.html +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-016.html @@ -2,7 +2,6 @@ CSS Grid Layout Test: Content Distribution 'space-around' and gaps on 2x2 grid - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-017.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-017.html index 9a490ad94839..6155df77b5bd 100644 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-017.html +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-017.html @@ -2,7 +2,6 @@ CSS Grid Layout Test: Content Distribution 'space-around' on 3x3 grid - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-019.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-019.html index 49ca22eb2456..2941b752459d 100644 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-019.html +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-019.html @@ -2,7 +2,6 @@ CSS Grid Layout Test: Content Distribution 'space-around' on 4x4 grid - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-020.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-020.html index 249f57d93fe8..da5773b08c13 100644 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-020.html +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-020.html @@ -2,7 +2,6 @@ CSS Grid Layout Test: Content Distribution 'space-around' and gaps on 4x4 grid - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-021.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-021.html index 6a5469fc8c79..0f3bb845e198 100644 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-021.html +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-021.html @@ -2,7 +2,6 @@ CSS Grid Layout Test: Content Distribution 'stretch' and gaps on 2x2 grid - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-022.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-022.html index 15a69c110257..e660c2fe5619 100644 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-022.html +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-022.html @@ -2,7 +2,6 @@ CSS Grid Layout Test: Content Distribution 'stretch' on 3x3 grid - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-023.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-023.html index f5d07b764873..011e4436948f 100644 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-023.html +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-023.html @@ -2,7 +2,6 @@ CSS Grid Layout Test: Content Distribution 'stretch' and gaps on 3x3 grid - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-024.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-024.html index 1b6932bca564..73ae83f53da1 100644 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-024.html +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-024.html @@ -2,7 +2,6 @@ CSS Grid Layout Test: Content Distribution 'stretch' on 4x4 grid - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-025.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-025.html index f229a56f4fb1..1909192a2b27 100644 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-025.html +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-025.html @@ -2,7 +2,6 @@ CSS Grid Layout Test: Content Distribution 'stretch' and gaps on 4x4 grid - diff --git a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-001.html b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-001.html index ebd169cf5913..72571da66c90 100644 --- a/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-001.html +++ b/testing/web-platform/tests/css/css-grid-1/alignment/grid-content-distribution-with-collapsed-tracks-001.html @@ -2,9 +2,9 @@ CSS Grid Layout Test: Content Distribution 'space-evenly' with collapsed tracks on 2x2 grid - - + + -
    - diff --git a/testing/web-platform/tests/css/css-grid-1/grid-items/grid-minimum-size-grid-items-006.html b/testing/web-platform/tests/css/css-grid-1/grid-items/grid-minimum-size-grid-items-006.html index 69bbc7c09810..1f0086eac765 100644 --- a/testing/web-platform/tests/css/css-grid-1/grid-items/grid-minimum-size-grid-items-006.html +++ b/testing/web-platform/tests/css/css-grid-1/grid-items/grid-minimum-size-grid-items-006.html @@ -5,7 +5,7 @@ - + - -

    Calc width on col is treated as auto, even in fixed tables

    - - - - - - - -
    - - diff --git a/testing/web-platform/tests/css/css-tables-3/fixed-layout-excess-width-distribution-001.html b/testing/web-platform/tests/css/css-tables-3/fixed-layout-excess-width-distribution-001.html deleted file mode 100644 index a9a78bd59b0d..000000000000 --- a/testing/web-platform/tests/css/css-tables-3/fixed-layout-excess-width-distribution-001.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - -

    Fixed layout tables with excess width and no auto columns

    - -FF/Edge give excess only to fixed columns, in proportion to their relative -widths. This is what the spec dictates. -
    Chrome (62) gives excess to ALL columns, in proportion to their -contribution to total width. - - - - - - -
    - - diff --git a/testing/web-platform/tests/css/css-tables-3/support/check-layout-th.js b/testing/web-platform/tests/css/css-tables-3/support/check-layout-th.js deleted file mode 100644 index 07f7d5ded829..000000000000 --- a/testing/web-platform/tests/css/css-tables-3/support/check-layout-th.js +++ /dev/null @@ -1,190 +0,0 @@ -(function() { -// Test is initiated from body.onload, so explicit done() call is required. -setup({ explicit_done: true }); - -function checkSubtreeExpectedValues(t, parent, prefix) -{ - var checkedLayout = checkExpectedValues(t, parent, prefix); - Array.prototype.forEach.call(parent.childNodes, function(node) { - checkedLayout |= checkSubtreeExpectedValues(t, node, prefix); - }); - return checkedLayout; -} - -function checkAttribute(output, node, attribute) -{ - var result = node.getAttribute && node.getAttribute(attribute); - output.checked |= !!result; - return result; -} - -function assert_tolerance(actual, expected, message) -{ - if (isNaN(expected) || Math.abs(actual - expected) >= 1) { - assert_equals(actual, Number(expected), message); - } -} - -function checkExpectedValues(t, node, prefix) -{ - var output = { checked: false }; - - var expectedWidth = checkAttribute(output, node, "data-expected-width"); - if (expectedWidth) { - assert_tolerance(node.offsetWidth, expectedWidth, prefix + "width"); - } - - var expectedHeight = checkAttribute(output, node, "data-expected-height"); - if (expectedHeight) { - assert_tolerance(node.offsetHeight, expectedHeight, prefix + "height"); - } - - var expectedOffset = checkAttribute(output, node, "data-offset-x"); - if (expectedOffset) { - assert_tolerance(node.offsetLeft, expectedOffset, prefix + "offsetLeft"); - } - - var expectedOffset = checkAttribute(output, node, "data-offset-y"); - if (expectedOffset) { - assert_tolerance(node.offsetTop, expectedOffset, prefix + "offsetTop"); - } - - var expectedWidth = checkAttribute(output, node, "data-expected-client-width"); - if (expectedWidth) { - assert_tolerance(node.clientWidth, expectedWidth, prefix + "clientWidth"); - } - - var expectedHeight = checkAttribute(output, node, "data-expected-client-height"); - if (expectedHeight) { - assert_tolerance(node.clientHeight, expectedHeight, prefix + "clientHeight"); - } - - var expectedWidth = checkAttribute(output, node, "data-expected-scroll-width"); - if (expectedWidth) { - assert_tolerance(node.scrollWidth, expectedWidth, prefix + "scrollWidth"); - } - - var expectedHeight = checkAttribute(output, node, "data-expected-scroll-height"); - if (expectedHeight) { - assert_tolerance(node.scrollHeight, expectedHeight, prefix + "scrollHeight"); - } - - var expectedOffset = checkAttribute(output, node, "data-total-x"); - if (expectedOffset) { - var totalLeft = node.clientLeft + node.offsetLeft; - assert_tolerance(totalLeft, expectedOffset, prefix + - "clientLeft+offsetLeft (" + node.clientLeft + " + " + node.offsetLeft + ")"); - } - - var expectedOffset = checkAttribute(output, node, "data-total-y"); - if (expectedOffset) { - var totalTop = node.clientTop + node.offsetTop; - assert_tolerance(totalTop, expectedOffset, prefix + - "clientTop+offsetTop (" + node.clientTop + " + " + node.offsetTop + ")"); - } - - var expectedDisplay = checkAttribute(output, node, "data-expected-display"); - if (expectedDisplay) { - var actualDisplay = getComputedStyle(node).display; - assert_equals(actualDisplay, expectedDisplay, prefix + "display"); - } - - var expectedPaddingTop = checkAttribute(output, node, "data-expected-padding-top"); - if (expectedPaddingTop) { - var actualPaddingTop = getComputedStyle(node).paddingTop; - // Trim the unit "px" from the output. - actualPaddingTop = actualPaddingTop.slice(0, -2); - assert_equals(actualPaddingTop, expectedPaddingTop, prefix + "padding-top"); - } - - var expectedPaddingBottom = checkAttribute(output, node, "data-expected-padding-bottom"); - if (expectedPaddingBottom) { - var actualPaddingBottom = getComputedStyle(node).paddingBottom; - // Trim the unit "px" from the output. - actualPaddingBottom = actualPaddingBottom.slice(0, -2); - assert_equals(actualPaddingBottom, expectedPaddingBottom, prefix + "padding-bottom"); - } - - var expectedPaddingLeft = checkAttribute(output, node, "data-expected-padding-left"); - if (expectedPaddingLeft) { - var actualPaddingLeft = getComputedStyle(node).paddingLeft; - // Trim the unit "px" from the output. - actualPaddingLeft = actualPaddingLeft.slice(0, -2); - assert_equals(actualPaddingLeft, expectedPaddingLeft, prefix + "padding-left"); - } - - var expectedPaddingRight = checkAttribute(output, node, "data-expected-padding-right"); - if (expectedPaddingRight) { - var actualPaddingRight = getComputedStyle(node).paddingRight; - // Trim the unit "px" from the output. - actualPaddingRight = actualPaddingRight.slice(0, -2); - assert_equals(actualPaddingRight, expectedPaddingRight, prefix + "padding-right"); - } - - var expectedMarginTop = checkAttribute(output, node, "data-expected-margin-top"); - if (expectedMarginTop) { - var actualMarginTop = getComputedStyle(node).marginTop; - // Trim the unit "px" from the output. - actualMarginTop = actualMarginTop.slice(0, -2); - assert_equals(actualMarginTop, expectedMarginTop, prefix + "margin-top"); - } - - var expectedMarginBottom = checkAttribute(output, node, "data-expected-margin-bottom"); - if (expectedMarginBottom) { - var actualMarginBottom = getComputedStyle(node).marginBottom; - // Trim the unit "px" from the output. - actualMarginBottom = actualMarginBottom.slice(0, -2); - assert_equals(actualMarginBottom, expectedMarginBottom, prefix + "margin-bottom"); - } - - var expectedMarginLeft = checkAttribute(output, node, "data-expected-margin-left"); - if (expectedMarginLeft) { - var actualMarginLeft = getComputedStyle(node).marginLeft; - // Trim the unit "px" from the output. - actualMarginLeft = actualMarginLeft.slice(0, -2); - assert_equals(actualMarginLeft, expectedMarginLeft, prefix + "margin-left"); - } - - var expectedMarginRight = checkAttribute(output, node, "data-expected-margin-right"); - if (expectedMarginRight) { - var actualMarginRight = getComputedStyle(node).marginRight; - // Trim the unit "px" from the output. - actualMarginRight = actualMarginRight.slice(0, -2); - assert_equals(actualMarginRight, expectedMarginRight, prefix + "margin-right"); - } - - return output.checked; -} - -window.checkLayout = function(selectorList, outputContainer) -{ - if (!selectorList) { - console.error("You must provide a CSS selector of nodes to check."); - return; - } - var nodes = document.querySelectorAll(selectorList); - var testNumber = 0; - nodes = Array.prototype.slice.call(nodes); - nodes.reverse(); - var checkedLayout = false; - Array.prototype.forEach.call(nodes, function(node) { - test(function(t) { - var container = node.parentNode.className == 'container' ? node.parentNode : node; - var prefix = "\n" + container.outerHTML + "\n"; - var passed = false; - try { - checkedLayout |= checkExpectedValues(t, node.parentNode, prefix); - checkedLayout |= checkSubtreeExpectedValues(t, node, prefix); - passed = true; - } finally { - checkedLayout |= !passed; - } - }, selectorList + ' ' + String(++testNumber)); - }); - if (!checkedLayout) { - console.error("No valid data-* attributes found in selector list : " + selectorList); - } - done(); -}; - -})(); diff --git a/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-001.html b/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-001.html deleted file mode 100644 index 6a1893fd3e38..000000000000 --- a/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-001.html +++ /dev/null @@ -1,24 +0,0 @@ - - -CSS Text level 3 Test: preserved white space at the end of and white-space:pre-wrap is not wrapped - - - - - - -

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

    -
    XX XX
    - diff --git a/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-002.html b/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-002.html deleted file mode 100644 index 891527fe37bd..000000000000 --- a/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-002.html +++ /dev/null @@ -1,25 +0,0 @@ - - -CSS Text level 3 Test: preserved white space at the end of and white-space:pre-wrap does not change based on word-break:break-all - - - - - - -

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

    -
    XX XX
    - diff --git a/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-003.html b/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-003.html deleted file mode 100644 index 56d30802a713..000000000000 --- a/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-003.html +++ /dev/null @@ -1,25 +0,0 @@ - - -CSS Text level 3 Test: preserved white space at the end of and white-space:pre-wrap does not change based on word-break:keep-all - - - - - - -

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

    -
    XX XX
    - diff --git a/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-004.html b/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-004.html deleted file mode 100644 index b4b3b4597831..000000000000 --- a/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-004.html +++ /dev/null @@ -1,25 +0,0 @@ - - -CSS Text level 3 Test: preserved white space at the end of and white-space:pre-wrap does not change based on line-break:loose - - - - - - -

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

    -
    XX XX
    - diff --git a/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-005.html b/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-005.html deleted file mode 100644 index bf04625c7c53..000000000000 --- a/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-005.html +++ /dev/null @@ -1,25 +0,0 @@ - - -CSS Text level 3 Test: preserved white space at the end of and white-space:pre-wrap does not change based on line-break:normal - - - - - - -

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

    -
    XX XX
    - diff --git a/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-006.html b/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-006.html deleted file mode 100644 index 8802c30732c4..000000000000 --- a/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-006.html +++ /dev/null @@ -1,25 +0,0 @@ - - -CSS Text level 3 Test: preserved white space at the end of and white-space:pre-wrap does not change based on line-break:strict - - - - - - -

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

    -
    XX XX
    - diff --git a/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-007.html b/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-007.html deleted file mode 100644 index 29b356c13d3b..000000000000 --- a/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-007.html +++ /dev/null @@ -1,26 +0,0 @@ - - -CSS Text level 3 Test: preserved white space at the end of and white-space:pre-wrap does not change based on overflow-wrap:break-word - - - - - - -

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

    -
    XX XX
    - diff --git a/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-008.html b/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-008.html deleted file mode 100644 index 61ccaae34e03..000000000000 --- a/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-008.html +++ /dev/null @@ -1,27 +0,0 @@ - - -CSS Text level 3 Test: preserved white space at the end of and white-space:pre-wrap is wrapped when overflow-wrap is break-spaces - - - - - - - -

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

    -
    XX XX
    - diff --git a/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-009.html b/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-009.html deleted file mode 100644 index 2aa8cd2d982e..000000000000 --- a/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-009.html +++ /dev/null @@ -1,27 +0,0 @@ - - -CSS Text level 3 Test: single preserved white space at the end of with white-space:pre-wrap overflow-wrap:break-spaces - - - - - - - -

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

    -
    XX XX
    - diff --git a/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-010.html b/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-010.html deleted file mode 100644 index 90f20055427f..000000000000 --- a/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-010.html +++ /dev/null @@ -1,27 +0,0 @@ - - -CSS Text level 3 Test: single preserved white space at the end of with white-space:pre-wrap overflow-wrap:break-spaces break-word - - - - - - - -

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

    -
    XX XX
    - diff --git a/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-011.html b/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-011.html deleted file mode 100644 index 6659e324bc53..000000000000 --- a/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-011.html +++ /dev/null @@ -1,27 +0,0 @@ - - -CSS Text level 3 Test: preserved white space at the end of and white-space:pre-wrap does not cause wrapping - - - - - - - -

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

    -
    XX - XX
    - diff --git a/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-012.html b/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-012.html deleted file mode 100644 index d96be79c3e3b..000000000000 --- a/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-012.html +++ /dev/null @@ -1,26 +0,0 @@ - - -CSS Text level 3 Test: preserved white space at the end of and white-space:pre-wrap with right alignement - - - - - - -

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

    -
    XX -XX
    - diff --git a/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-013.html b/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-013.html deleted file mode 100644 index 6e3b6db6626f..000000000000 --- a/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-013.html +++ /dev/null @@ -1,26 +0,0 @@ - - -CSS Text level 3 Test: preserved white space at the end of and white-space:pre-wrap with center alignement - - - - - - -

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

    -
    XX -XX
    - diff --git a/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-014.html b/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-014.html deleted file mode 100644 index 2275201f864a..000000000000 --- a/testing/web-platform/tests/css/css-text-3/white-space/pre-wrap-014.html +++ /dev/null @@ -1,27 +0,0 @@ - - -CSS Text level 3 Test: preserved white space at the end of and white-space:pre-wrap with justification - - - - - - -

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

    -
    X​X -X​X
    - diff --git a/testing/web-platform/tests/css/css-text-3/white-space/reference/pre-wrap-001-ref.html b/testing/web-platform/tests/css/css-text-3/white-space/reference/pre-wrap-001-ref.html deleted file mode 100644 index 21fe887aedee..000000000000 --- a/testing/web-platform/tests/css/css-text-3/white-space/reference/pre-wrap-001-ref.html +++ /dev/null @@ -1,16 +0,0 @@ - - -CSS Text level 3 Test reference file - - - -

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

    -
    XX
    XX
    - diff --git a/testing/web-platform/tests/css/css-text-3/white-space/reference/textarea-pre-wrap-001-ref.html b/testing/web-platform/tests/css/css-text-3/white-space/reference/textarea-pre-wrap-001-ref.html deleted file mode 100644 index 8951c3db4bfd..000000000000 --- a/testing/web-platform/tests/css/css-text-3/white-space/reference/textarea-pre-wrap-001-ref.html +++ /dev/null @@ -1,33 +0,0 @@ - - -CSS Text level 3 Test reference file - - - - -

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

    - - diff --git a/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-001.html b/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-001.html deleted file mode 100644 index 2c41682fd17a..000000000000 --- a/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-001.html +++ /dev/null @@ -1,35 +0,0 @@ - - -CSS Text level 3 Test: preserved white space at the end of and white-space:pre-wrap is not wrapped in a textarea - - - - - - -

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

    - - diff --git a/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-002.html b/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-002.html deleted file mode 100644 index bd411d9f1ae7..000000000000 --- a/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-002.html +++ /dev/null @@ -1,36 +0,0 @@ - - -CSS Text level 3 Test: preserved white space at the end of and white-space:pre-wrap does not change based on word-break:break-all in a textarea - - - - - - -

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

    - - diff --git a/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-003.html b/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-003.html deleted file mode 100644 index 81f7a5aa8001..000000000000 --- a/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-003.html +++ /dev/null @@ -1,36 +0,0 @@ - - -CSS Text level 3 Test: preserved white space at the end of and white-space:pre-wrap does not change based on word-break:keep-all in a textarea - - - - - - -

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

    - - diff --git a/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-004.html b/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-004.html deleted file mode 100644 index c29ceed221ad..000000000000 --- a/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-004.html +++ /dev/null @@ -1,36 +0,0 @@ - - -CSS Text level 3 Test: preserved white space at the end of and white-space:pre-wrap does not change based on line-break:loose in a textarea - - - - - - -

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

    - - diff --git a/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-005.html b/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-005.html deleted file mode 100644 index 8137ac642143..000000000000 --- a/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-005.html +++ /dev/null @@ -1,36 +0,0 @@ - - -CSS Text level 3 Test: preserved white space at the end of and white-space:pre-wrap does not change based on line-break:normal in a textarea - - - - - - -

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

    - - diff --git a/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-006.html b/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-006.html deleted file mode 100644 index b06947c8a71e..000000000000 --- a/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-006.html +++ /dev/null @@ -1,36 +0,0 @@ - - -CSS Text level 3 Test: preserved white space at the end of and white-space:pre-wrap does not change based on line-break:strict in a textarea - - - - - - -

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

    - - diff --git a/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-007.html b/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-007.html deleted file mode 100644 index c67857075894..000000000000 --- a/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-007.html +++ /dev/null @@ -1,37 +0,0 @@ - - -CSS Text level 3 Test: preserved white space at the end of and white-space:pre-wrap does not change based on overflow-wrap:break-word in a textarea - - - - - - -

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

    - - diff --git a/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-008.html b/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-008.html deleted file mode 100644 index 1361bf19866e..000000000000 --- a/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-008.html +++ /dev/null @@ -1,38 +0,0 @@ - - -CSS Text level 3 Test: preserved white space at the end of and white-space:pre-wrap is wrapped when overflow-wrap is break-spaces in a textarea - - - - - - - -

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

    - - diff --git a/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-009.html b/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-009.html deleted file mode 100644 index cecaadb0b378..000000000000 --- a/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-009.html +++ /dev/null @@ -1,38 +0,0 @@ - - -CSS Text level 3 Test: single preserved white space at the end of with white-space:pre-wrap overflow-wrap:break-spaces in a textarea - - - - - - - -

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

    - - diff --git a/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-010.html b/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-010.html deleted file mode 100644 index 7d41fee8c6be..000000000000 --- a/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-010.html +++ /dev/null @@ -1,38 +0,0 @@ - - -CSS Text level 3 Test: single preserved white space at the end of with white-space:pre-wrap overflow-wrap:break-spaces break-word in a textarea - - - - - - - -

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

    - - diff --git a/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-011.html b/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-011.html deleted file mode 100644 index 96d121f0aab6..000000000000 --- a/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-011.html +++ /dev/null @@ -1,38 +0,0 @@ - - -CSS Text level 3 Test: preserved white space at the end of and white-space:pre-wrap does not cause wrapping in a textarea - - - - - - - -

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

    - - diff --git a/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-012.html b/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-012.html deleted file mode 100644 index 85fcfee41fac..000000000000 --- a/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-012.html +++ /dev/null @@ -1,37 +0,0 @@ - - -CSS Text level 3 Test: preserved white space at the end of and white-space:pre-wrap with right alignement in a textarea - - - - - - -

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

    - - diff --git a/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-013.html b/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-013.html deleted file mode 100644 index fd3b26b1da0f..000000000000 --- a/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-013.html +++ /dev/null @@ -1,37 +0,0 @@ - - -CSS Text level 3 Test: preserved white space at the end of and white-space:pre-wrap with center alignement in a textarea - - - - - - -

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

    - - diff --git a/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-014.html b/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-014.html deleted file mode 100644 index 881fffe173d9..000000000000 --- a/testing/web-platform/tests/css/css-text-3/white-space/textarea-pre-wrap-014.html +++ /dev/null @@ -1,38 +0,0 @@ - - -CSS Text level 3 Test: preserved white space at the end of and white-space:pre-wrap with justification in a textarea - - - - - - -

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

    - - diff --git a/testing/web-platform/tests/css/css-transitions-1/events-001.html b/testing/web-platform/tests/css/css-transitions-1/events-001.html index 59d2011b3978..013c36b7710a 100644 --- a/testing/web-platform/tests/css/css-transitions-1/events-001.html +++ b/testing/web-platform/tests/css/css-transitions-1/events-001.html @@ -1,150 +1,210 @@ - + - - -CSS Transitions Test: transitionend event for shorthand property - - - - + + + CSS Transitions Test: transitionend event for shorthand property + + + + + - - - + + - - + + + + + - + + + +
    + +
    +
    +
    Text sample
    +
    +
    +
    -promise_test(t => { - const div = addDiv(t, { style: 'transition: all .01s linear; ' + - 'padding: 1px' }); - getComputedStyle(div).paddingLeft; - div.style.padding = '10px'; + - const watcher = new EventWatcher(t, div, [ 'transitionend' ]); - return watcher.wait_for(Array(4).fill('transitionend'), - { record: 'all' }).then(evts => { - assert_end_event_batch_equal(evts, - [ 'padding-bottom', - 'padding-left', - 'padding-right', - 'padding-top' ], - 0.01); - }); -}, 'transition:all changing padding'); + - + generalParallelTest.setup(data, options); + generalParallelTest.addStyles(data, options, styles); + }, + // cleanup after individual test + teardown: generalParallelTest.teardown, + // invoked prior to running a slice of tests + sliceStart: generalParallelTest.sliceStart, + // invoked after running a slice of tests + sliceDone: generalParallelTest.sliceDone, + // test cases, make them as granular as possible + cases: { + // test TransitionEnd events + 'events': { + start: function(test, data, options) { + // kick off the transition + generalParallelTest.startTransition(data); + }, + done: function(test, data, options) { + // make sure we got the event for the tested property only + test.step(generalParallelTest.assertExpectedEventsFunc(data, 'transition', data.expect)); + } + } + }, + // called once all tests are done + done: generalParallelTest.done + }); + + diff --git a/testing/web-platform/tests/css/css-transitions-1/events-002.html b/testing/web-platform/tests/css/css-transitions-1/events-002.html index 3ec2cc3da475..ca0bd89522c8 100644 --- a/testing/web-platform/tests/css/css-transitions-1/events-002.html +++ b/testing/web-platform/tests/css/css-transitions-1/events-002.html @@ -1,49 +1,136 @@ - + - - -CSS Transitions Test: transitionend event for implied property value - - - + + + CSS Transitions Test: transitionend event for implied property value + + + + - - - + + - - + + + + + -
    + - + + + +
    + +
    +
    +
    Text sample
    +
    +
    +
    - const watcher = new EventWatcher(t, div, [ 'transitionend' ]); - return watcher.wait_for('transitionend').then(evt => { - assert_end_events_equal(evt, 'padding-left', 0.01); - }); -}, 'transition:all changing padding-left from nothing'); + -promise_test(t => { - const div = addDiv(t, { style: 'transition: all .01s linear' }); - getComputedStyle(div).paddingLeft; - div.style.padding = '10px'; + - + // this test takes its time, give it a minute to run + var timeout = 60000; + setup({timeout: timeout}); + + var tests = [ + { + name: "transitions:all, changing padding-left from nothing", + transitions: 'all .1s linear .01s', + from: {}, // no padding === padding:0; + to: {'padding-left': '10px'}, + expect: [ + 'padding-left:0.1s' + ] + }, { + name: "transitions:all, changing padding from nothing", + transitions: 'all .1s linear .01s', + from: {}, // no padding === padding:0; + to: {'padding': '10px'}, + expect: [ + 'padding-top:0.1s', + 'padding-right:0.1s', + 'padding-bottom:0.1s', + 'padding-left:0.1s' + ] + } + ]; + + // general transition-duration + var duration = '0.5s'; + + runParallelAsyncHarness({ + // array of test data + tests: tests, + // the number of tests to run in parallel + testsPerSlice: 50, + // milliseconds to wait before calling teardown and ending test + duration: parseFloat(duration) * 1000, + // the global suite timeout + timeout: timeout, + // prepare individual test + setup: function(data, options) { + var styles = { + '.fixture': {}, + + '.container': {}, + '.container.to': {}, + '.container.how': {}, + + '.transition': data.from, + '.transition.to' : data.to, + '.transition.how' : {transition: data.transitions} + }; + + generalParallelTest.setup(data, options); + generalParallelTest.addStyles(data, options, styles); + }, + // cleanup after individual test + teardown: generalParallelTest.teardown, + // invoked prior to running a slice of tests + sliceStart: generalParallelTest.sliceStart, + // invoked after running a slice of tests + sliceDone: generalParallelTest.sliceDone, + // test cases, make them as granular as possible + cases: { + // test TransitionEnd events + 'events': { + start: function(test, data, options) { + // kick off the transition + generalParallelTest.startTransition(data); + }, + done: function(test, data, options) { + // make sure we got the event for the tested property only + test.step(generalParallelTest.assertExpectedEventsFunc(data, 'transition', data.expect)); + } + } + }, + // called once all tests are done + done: generalParallelTest.done + }); + + diff --git a/testing/web-platform/tests/css/css-transitions-1/events-003.html b/testing/web-platform/tests/css/css-transitions-1/events-003.html index 2f8ac7f4244c..edaef1166fdb 100644 --- a/testing/web-platform/tests/css/css-transitions-1/events-003.html +++ b/testing/web-platform/tests/css/css-transitions-1/events-003.html @@ -1,34 +1,143 @@ - + - - -CSS Transitions Test: transitionend event with negative delay - - - - + + + CSS Transitions Test: transitionend event with negative delay + + + + + - - - + + - - + + + + + -
    + - + + + +
    + +
    +
    +
    Text sample
    +
    +
    +
    - const watcher = new EventWatcher(t, div, [ 'transitionend' ]); - return watcher.wait_for('transitionend').then(evt => { - assert_end_events_equal(evt, 'padding-left', 0.02); - }); -}, 'duration: 0.02s, delay: -0.01s'); - - + + + + diff --git a/testing/web-platform/tests/css/css-transitions-1/events-004.html b/testing/web-platform/tests/css/css-transitions-1/events-004.html index 17195f40eb19..6ab35e21900e 100644 --- a/testing/web-platform/tests/css/css-transitions-1/events-004.html +++ b/testing/web-platform/tests/css/css-transitions-1/events-004.html @@ -1,61 +1,150 @@ - + - - -CSS Transitions Test: transitionend event with non matching lists - - - - + + + CSS Transitions Test: transitionend event with non matching lists + + + + + - - - + + - - + + + + + -
    + - + + + +
    + +
    +
    +
    Text sample
    +
    +
    +
    - div.style.transitionProperty = - 'padding-top, padding-right, padding-bottom, padding-left'; - div.style.transitionDuration = '0.02s, 0.01s'; - div.style.transitionTimingFunction = 'linear, ease-in'; - div.style.transitionDelay = '0.01s, 0.02s'; - div.style.padding = '10px'; + - const watcher = new EventWatcher(t, div, ['transitionend']); - return watcher - .wait_for(Array(4).fill('transitionend'), { record: 'all' }) - .then(evts => { - assert_end_event_batch_equal( - evts, - [ 'padding-top', 'padding-right', 'padding-bottom', 'padding-left' ], - [ 0.02, 0.01, 0.02, 0.01 ] - ); - }); -}, 'repeating lists'); + - + // general transition-duration + var duration = '0.5s'; + + runParallelAsyncHarness({ + // array of test data + tests: tests, + // the number of tests to run in parallel + testsPerSlice: 50, + // milliseconds to wait before calling teardown and ending test + duration: parseFloat(duration) * 1000, + // the global suite timeout + timeout: timeout, + // prepare individual test + setup: function(data, options) { + var styles = { + '.fixture': {}, + + '.container': {}, + '.container.to': {}, + '.container.how': {}, + + '.transition': data.from, + '.transition.to' : data.to, + '.transition.how' : {} + }; + + generalParallelTest.setup(data, options); + generalParallelTest.addStyles(data, options, styles); + }, + // cleanup after individual test + teardown: generalParallelTest.teardown, + // invoked prior to running a slice of tests + sliceStart: generalParallelTest.sliceStart, + // invoked after running a slice of tests + sliceDone: generalParallelTest.sliceDone, + // test cases, make them as granular as possible + cases: { + // test TransitionEnd events + 'events': { + start: function(test, data, options) { + // kick off the transition + generalParallelTest.startTransition(data); + }, + done: function(test, data, options) { + // make sure we got the event for the tested property only + test.step(generalParallelTest.assertExpectedEventsFunc(data, 'transition', data.expect)); + } + } + }, + // called once all tests are done + done: generalParallelTest.done + }); + + diff --git a/testing/web-platform/tests/css/css-transitions-1/events-005.html b/testing/web-platform/tests/css/css-transitions-1/events-005.html index 48ba63ab2d8d..78c69d704369 100644 --- a/testing/web-platform/tests/css/css-transitions-1/events-005.html +++ b/testing/web-platform/tests/css/css-transitions-1/events-005.html @@ -1,67 +1,146 @@ - + - - -CSS Transitions Test: transitionend event with property specificity - - - - + + + CSS Transitions Test: transitionend event with property specificity + + + + + - - - + + - - + + + + + -
    + - + + + +
    + +
    +
    +
    Text sample
    +
    +
    +
    - const watcher = new EventWatcher(t, div, [ 'transitionend' ]); - return watcher.wait_for('transitionend').then(evt => { - assert_end_events_equal(evt, 'padding-left', 0.02); - }); -}, 'property repetition'); + -promise_test(t => { - const div = addDiv(t, { - style: - 'transition: padding .01s, padding-left .02s;' + - 'padding-left: 1px' - }); - getComputedStyle(div).paddingLeft; - div.style.paddingLeft = '10px'; + - + // general transition-duration + var duration = '0.5s'; + + runParallelAsyncHarness({ + // array of test data + tests: tests, + // the number of tests to run in parallel + testsPerSlice: 50, + // milliseconds to wait before calling teardown and ending test + duration: parseFloat(duration) * 1000, + // the global suite timeout + timeout: timeout, + // prepare individual test + setup: function(data, options) { + var styles = { + '.fixture': {}, + + '.container': {}, + '.container.to': {}, + '.container.how': {}, + + '.transition': data.from, + '.transition.to' : data.to, + '.transition.how' : {transition: data.transitions} + }; + + generalParallelTest.setup(data, options); + generalParallelTest.addStyles(data, options, styles); + }, + // cleanup after individual test + teardown: generalParallelTest.teardown, + // invoked prior to running a slice of tests + sliceStart: generalParallelTest.sliceStart, + // invoked after running a slice of tests + sliceDone: generalParallelTest.sliceDone, + // test cases, make them as granular as possible + cases: { + // test TransitionEnd events + 'events': { + start: function(test, data, options) { + // kick off the transition + generalParallelTest.startTransition(data); + }, + done: function(test, data, options) { + // make sure we got the event for the tested property only + test.step(generalParallelTest.assertExpectedEventsFunc(data, 'transition', data.expect)); + } + } + }, + // called once all tests are done + done: generalParallelTest.done + }); + + diff --git a/testing/web-platform/tests/css/css-transitions-1/events-006.html b/testing/web-platform/tests/css/css-transitions-1/events-006.html index 36412bcd9e19..ab3b88072c0b 100644 --- a/testing/web-platform/tests/css/css-transitions-1/events-006.html +++ b/testing/web-platform/tests/css/css-transitions-1/events-006.html @@ -1,58 +1,135 @@ - + - - -CSS Transitions Test: transitionend event for pseudo elements - - - - - + + + CSS Transitions Test: transitionend event for pseudo elements + + + + + + - - - + + - + + + + + - - + -
    + + + + +
    + +
    +
    +
    Text sample
    +
    +
    +
    - - + var tests = [ + { + name: "transition padding-left on :before", + pseudo: 'before', + property: 'padding-left', + flags: {}, + from: {'padding-left': '1px', 'content': '""'}, + to: {'padding-left': '10px'}, + expect: [ + 'padding-left:before:0.1s' + ] + }, { + name: "transition padding-left on :after", + pseudo: 'after', + property: 'padding-left', + flags: {}, + from: {'padding-left': '1px', 'content': '""'}, + to: {'padding-left': '10px'}, + expect: [ + 'padding-left:after:0.1s' + ] + } + ]; + + // general transition-duration + var duration = '0.5s'; + + runParallelAsyncHarness({ + // array of test data + tests: tests, + // the number of tests to run in parallel + testsPerSlice: 50, + // milliseconds to wait before calling teardown and ending test + duration: parseFloat(duration) * 1000, + // the global suite timeout + timeout: timeout, + // prepare individual test + setup: function(data, options) { + var styles = {}; + styles['.container'] = {}; + styles['.transition'] = {}; + styles['.transition:' + data.pseudo.name] = data.from; + styles['.transition.how:' + data.pseudo.name] = {transition: 'all .1s linear 0s'}; + styles['.transition.to:' + data.pseudo.name] = data.to; + + generalParallelTest.setup(data, options); + generalParallelTest.addStyles(data, options, styles); + }, + // cleanup after individual test + teardown: generalParallelTest.teardown, + // invoked prior to running a slice of tests + sliceStart: generalParallelTest.sliceStart, + // invoked after running a slice of tests + sliceDone: generalParallelTest.sliceDone, + // test cases, make them as granular as possible + cases: { + // test TransitionEnd events + 'events': { + start: function(test, data, options) { + // kick off the transition + generalParallelTest.startTransition(data); + }, + done: function(test, data, options) { + // make sure we got the event for the tested property only + test.step(generalParallelTest.assertExpectedEventsFunc(data, 'transition', data.expect)); + } + } + }, + // called once all tests are done + done: generalParallelTest.done + }); + + diff --git a/testing/web-platform/tests/css/css-transitions-1/events-007.html b/testing/web-platform/tests/css/css-transitions-1/events-007.html index 610df6e85d0d..d75b0031290e 100644 --- a/testing/web-platform/tests/css/css-transitions-1/events-007.html +++ b/testing/web-platform/tests/css/css-transitions-1/events-007.html @@ -1,50 +1,64 @@ - -CSS Transitions Test: no transitionend event after display:none - - - - - - - - + + CSS Transitions Test: no transitionend event after display:none + + + + + + + + + - -
    - - +
    diff --git a/testing/web-platform/tests/css/css-transitions-1/support/helper.js b/testing/web-platform/tests/css/css-transitions-1/support/helper.js index f11e4347abee..805a1f24d6bc 100644 --- a/testing/web-platform/tests/css/css-transitions-1/support/helper.js +++ b/testing/web-platform/tests/css/css-transitions-1/support/helper.js @@ -93,107 +93,4 @@ root.domFixture = function(selector) { throw new Error('domFixture must be initialized first!'); } }; - -/* - * The recommended minimum precision to use for time values. - * - * Based on Web Animations: - * https://w3c.github.io/web-animations/#precision-of-time-values - */ -const TIME_PRECISION = 0.0005; // ms - -/* - * Allow implementations to substitute an alternative method for comparing - * times based on their precision requirements. - */ -root.assert_times_equal = function(actual, expected, description) { - assert_approx_equals(actual, expected, TIME_PRECISION, description); -} - -/** - * Assert that CSSTransition event, |evt|, has the expected property values - * defined by |propertyName|, |elapsedTime|, and |pseudoElement|. - */ -root.assert_end_events_equal = function(evt, propertyName, elapsedTime, - pseudoElement = '') { - assert_equals(evt.propertyName, propertyName); - assert_times_equal(evt.elapsedTime, elapsedTime); - assert_equals(evt.pseudoElement, pseudoElement); -} - -/** - * Assert that array of simultaneous CSSTransition events, |evts|, have the - * corresponding property names listed in |propertyNames|, and the expected - * |elapsedTimes| and |pseudoElement| members. - * - * |elapsedTimes| may be a single value if all events are expected to have the - * same elapsedTime, or an array parallel to |propertyNames|. - */ -root.assert_end_event_batch_equal = function(evts, propertyNames, elapsedTimes, - pseudoElement = '') { - assert_equals( - evts.length, - propertyNames.length, - 'Test harness error: should have waited for the correct number of events' - ); - assert_true( - typeof elapsedTimes === 'number' || - (Array.isArray(elapsedTimes) && - elapsedTimes.length === propertyNames.length), - 'Test harness error: elapsedTimes must either be a number or an array of' + - ' numbers with the same length as propertyNames' - ); - - if (typeof elapsedTimes === 'number') { - elapsedTimes = Array(propertyNames.length).fill(elapsedTimes); - } - const testPairs = propertyNames.map((propertyName, index) => ({ - propertyName, - elapsedTime: elapsedTimes[index] - })); - - const sortByPropertyName = (a, b) => - a.propertyName.localeCompare(b.propertyName); - evts.sort(sortByPropertyName); - testPairs.sort(sortByPropertyName); - - for (let evt of evts) { - const expected = testPairs.shift(); - assert_end_events_equal( - evt, - expected.propertyName, - expected.elapsedTime, - pseudoElement - ); - } -} - -/** - * Appends a div to the document body. - * - * @param t The testharness.js Test object. If provided, this will be used - * to register a cleanup callback to remove the div when the test - * finishes. - * - * @param attrs A dictionary object with attribute names and values to set on - * the div. - */ -root.addDiv = function(t, attrs) { - var div = document.createElement('div'); - if (attrs) { - for (var attrName in attrs) { - div.setAttribute(attrName, attrs[attrName]); - } - } - document.body.appendChild(div); - if (t && typeof t.add_cleanup === 'function') { - t.add_cleanup(function() { - if (div.parentNode) { - div.remove(); - } - }); - } - return div; -} - })(window); diff --git a/testing/web-platform/tests/css/css-ui-3/caret-color-020.html b/testing/web-platform/tests/css/css-ui-3/caret-color-020.html index 742c4a1f958b..4e80c2f1d1fb 100644 --- a/testing/web-platform/tests/css/css-ui-3/caret-color-020.html +++ b/testing/web-platform/tests/css/css-ui-3/caret-color-020.html @@ -33,14 +33,7 @@ var player = textarea.animate(keyframes, options); player.pause(); player.currentTime = 5; - var rgb = getComputedStyle(textarea).caretColor.match(/\d+/g); - /* Only testing that the rgb value is some intermediary value, - but not checking which, as we only care that the value is interpolated, - not about the numerical accuracy of interpolation, - which is something tests for the animation spec ought to worry about. */ - assert_true( rgb[0] < 255 && rgb[0] > 0, "the red channel is interpolated"); - assert_true( rgb[1] < 255 && rgb[1] > 0, "the green channel is interpolated"); - assert_true( rgb[2] < 255 && rgb[2] > 0, "the blue channel is interpolated"); + assert_equals(getComputedStyle(textarea).caretColor, 'rgb(128, 128, 128)'); }, "caret-color: currentcolor is interpolable"); diff --git a/testing/web-platform/tests/css/css-ui-3/text-overflow-006.html b/testing/web-platform/tests/css/css-ui-3/text-overflow-006.html index f978f624b292..0da8e962c931 100644 --- a/testing/web-platform/tests/css/css-ui-3/text-overflow-006.html +++ b/testing/web-platform/tests/css/css-ui-3/text-overflow-006.html @@ -5,24 +5,27 @@ - +

    Test passes if “PASS…” appears below.

    -
    PASS FAIL
    +
    PASSfiller text to make things overflow
    diff --git a/testing/web-platform/tests/css/css-ui-3/text-overflow-023.html b/testing/web-platform/tests/css/css-ui-3/text-overflow-023.html deleted file mode 100644 index ca3f8da3b1d5..000000000000 --- a/testing/web-platform/tests/css/css-ui-3/text-overflow-023.html +++ /dev/null @@ -1,35 +0,0 @@ - - - -CSS Basic User Interface Test: interacting with the ellipsis - - - - - - - - -
        
    - diff --git a/testing/web-platform/tests/css/css-values-3/absolute-length-units-001.html b/testing/web-platform/tests/css/css-values-3/absolute-length-units-001.html deleted file mode 100644 index ae20834572ef..000000000000 --- a/testing/web-platform/tests/css/css-values-3/absolute-length-units-001.html +++ /dev/null @@ -1,43 +0,0 @@ - - -absolute length units test - - - - - - - -
    -
    -
    -
    -
    -
    -
    - - - - \ No newline at end of file diff --git a/testing/web-platform/tests/css/css-values-3/reference/vh_not_refreshing_on_chrome-ref.html b/testing/web-platform/tests/css/css-values-3/reference/vh_not_refreshing_on_chrome-ref.html index 32ce9ada1556..eb5b15d4aa5d 100644 --- a/testing/web-platform/tests/css/css-values-3/reference/vh_not_refreshing_on_chrome-ref.html +++ b/testing/web-platform/tests/css/css-values-3/reference/vh_not_refreshing_on_chrome-ref.html @@ -1,11 +1,10 @@ - + CSS Reference File - diff --git a/testing/web-platform/tests/css/css-values-3/vh_not_refreshing_on_chrome.html b/testing/web-platform/tests/css/css-values-3/vh_not_refreshing_on_chrome.html index b4e0a413ab97..086e37e30fd8 100644 --- a/testing/web-platform/tests/css/css-values-3/vh_not_refreshing_on_chrome.html +++ b/testing/web-platform/tests/css/css-values-3/vh_not_refreshing_on_chrome.html @@ -1,6 +1,6 @@ - + CSS Values and Units Test: vh-based dimension doesn't change when the element's other dimension doesn't change. @@ -8,7 +8,6 @@ - - - - diff --git a/testing/web-platform/tests/css/work-in-progress/opera/OWNERS b/testing/web-platform/tests/css/work-in-progress/opera/OWNERS index 8b137891791f..638516146952 100644 --- a/testing/web-platform/tests/css/work-in-progress/opera/OWNERS +++ b/testing/web-platform/tests/css/work-in-progress/opera/OWNERS @@ -1 +1 @@ - +@zcorpan diff --git a/testing/web-platform/tests/cssom-view/OWNERS b/testing/web-platform/tests/cssom-view/OWNERS index 5e0cb233944b..678152d6503c 100644 --- a/testing/web-platform/tests/cssom-view/OWNERS +++ b/testing/web-platform/tests/cssom-view/OWNERS @@ -1,2 +1,3 @@ @AutomatedTester @plinss +@zcorpan diff --git a/testing/web-platform/tests/cssom-view/elementFromPosition.html b/testing/web-platform/tests/cssom-view/elementFromPosition.html index d4da36ff1f70..b781bb3713ed 100644 --- a/testing/web-platform/tests/cssom-view/elementFromPosition.html +++ b/testing/web-platform/tests/cssom-view/elementFromPosition.html @@ -85,7 +85,7 @@ // 元素范围内 {x: 50, y: 50, r: 'inside'}, // 右边线 - {x: 110, y: 50, r: 'right line'}, + {x: 110, y: 10, r: 'right line'}, // 左下角 {x: 10, y: 110, r: 'bottom left corner'}, // 下边线 diff --git a/testing/web-platform/tests/cssom-view/interfaces.html b/testing/web-platform/tests/cssom-view/interfaces.html deleted file mode 100644 index c6e3662334e7..000000000000 --- a/testing/web-platform/tests/cssom-view/interfaces.html +++ /dev/null @@ -1,67 +0,0 @@ - - - -CSSOM View automated IDL tests - - - - - - - - - -

    CSSOM View IDL tests

    -
    - - diff --git a/testing/web-platform/tests/cssom-view/scrollBoundaryBehavior-manual.html b/testing/web-platform/tests/cssom-view/scrollBoundaryBehavior-manual.html deleted file mode 100644 index efd00437bde0..000000000000 --- a/testing/web-platform/tests/cssom-view/scrollBoundaryBehavior-manual.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - -
    -
    -
    -
    -
    -
    -
    -
    - -

    scroll-boundary-behavior

    -

    Tests that scroll-boundary-behavior prevents scroll-propagation in the area and direction as specified.

    -
      -
    1. Make two scrolls on BLUE, in this order: scroll UP (or drag down), then scroll LEFT (or drag right). Scroll (or drag) until nothing is scrolling. Then tap on DONE.
    2. -
    3. Repeat the same scrolls as in step 1 and then tap on DONE.
    4. -
    5. Repeat the same scrolls as in step 1 and then tap on DONE.
    6. -
    7. Make two separate scrolls on GREEN, in this order: scroll UP (or drag down), then scroll LEFT (or drag right). Scroll (or drag) until nothing is scrolling. Then tap on DONE.
    8. -
    - - - diff --git a/testing/web-platform/tests/cssom-view/scrollintoview.html b/testing/web-platform/tests/cssom-view/scrollintoview.html deleted file mode 100644 index c69025b4943a..000000000000 --- a/testing/web-platform/tests/cssom-view/scrollintoview.html +++ /dev/null @@ -1,112 +0,0 @@ - -CSSOM View - scrollIntoView - - - - - - - - - - -
    -
    - diff --git a/testing/web-platform/tests/cssom-view/ttwf-scrollintoview.html b/testing/web-platform/tests/cssom-view/ttwf-scrollintoview.html new file mode 100644 index 000000000000..1ccb9c580de6 --- /dev/null +++ b/testing/web-platform/tests/cssom-view/ttwf-scrollintoview.html @@ -0,0 +1,32 @@ + + + + CSSOM View - 6 - scrollIntoView tests + + + + + + + + + +
    +
    +
    +
    +
    + + + diff --git a/testing/web-platform/tests/cssom/OWNERS b/testing/web-platform/tests/cssom/OWNERS index bd161115db0d..fc98874a3222 100644 --- a/testing/web-platform/tests/cssom/OWNERS +++ b/testing/web-platform/tests/cssom/OWNERS @@ -1,3 +1,4 @@ +@zcorpan @dbaron @plinss @rune-opera diff --git a/testing/web-platform/tests/cssom/interfaces.html b/testing/web-platform/tests/cssom/interfaces.html index e289c5a3496e..cf43e94bc116 100644 --- a/testing/web-platform/tests/cssom/interfaces.html +++ b/testing/web-platform/tests/cssom/interfaces.html @@ -1,89 +1,174 @@ - - - + + CSSOM automated IDL tests - - - - - - +
    + + diff --git a/testing/web-platform/tests/cssom/support/xmlss-pi.xhtml b/testing/web-platform/tests/cssom/support/xmlss-pi.xhtml deleted file mode 100644 index 8e22b50b25a5..000000000000 --- a/testing/web-platform/tests/cssom/support/xmlss-pi.xhtml +++ /dev/null @@ -1 +0,0 @@ - diff --git a/testing/web-platform/tests/docs/OWNERS b/testing/web-platform/tests/docs/OWNERS index 8b80152b3e82..20ea37eae2d1 100644 --- a/testing/web-platform/tests/docs/OWNERS +++ b/testing/web-platform/tests/docs/OWNERS @@ -1,3 +1,4 @@ @sideshowbarker @dontcallmedom +@zcorpan @gsnedders diff --git a/testing/web-platform/tests/docs/introduction.md b/testing/web-platform/tests/docs/introduction.md index 94156f77d970..2845b7d0f98e 100644 --- a/testing/web-platform/tests/docs/introduction.md +++ b/testing/web-platform/tests/docs/introduction.md @@ -74,7 +74,7 @@ The testsuite has a few types of tests, outlined below: ## GitHub -[GitHub](https://github.com/w3c/web-platform-tests/) is used both for [issue tracking](https://github.com/w3c/web-platform-tests/issues) and [test submissions](https://github.com/w3c/web-platform-tests/pulls); we +GitHub is used both for issue tracking and test submissions; we provide [a limited introduction][github-intro] to both git and GitHub. diff --git a/testing/web-platform/tests/dom/OWNERS b/testing/web-platform/tests/dom/OWNERS index 487f8ddbc0e3..7b9191bbd82f 100644 --- a/testing/web-platform/tests/dom/OWNERS +++ b/testing/web-platform/tests/dom/OWNERS @@ -1,3 +1,4 @@ @ayg @jdm +@zcorpan @zqzhang diff --git a/testing/web-platform/tests/dom/nodes/Node-cloneNode.html b/testing/web-platform/tests/dom/nodes/Node-cloneNode.html index 6c8663076a41..5ed7b08c92a0 100644 --- a/testing/web-platform/tests/dom/nodes/Node-cloneNode.html +++ b/testing/web-platform/tests/dom/nodes/Node-cloneNode.html @@ -54,6 +54,7 @@ create_element_and_check("a", "HTMLAnchorElement"); create_element_and_check("abbr", "HTMLElement"); create_element_and_check("acronym", "HTMLElement"); create_element_and_check("address", "HTMLElement"); +create_element_and_check("applet", "HTMLAppletElement"); create_element_and_check("area", "HTMLAreaElement"); create_element_and_check("article", "HTMLElement"); create_element_and_check("aside", "HTMLElement"); diff --git a/testing/web-platform/tests/encrypted-media/encrypted-media-default-feature-policy.https.sub.html b/testing/web-platform/tests/encrypted-media/encrypted-media-default-feature-policy.https.sub.html deleted file mode 100644 index 1514d306f30e..000000000000 --- a/testing/web-platform/tests/encrypted-media/encrypted-media-default-feature-policy.https.sub.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - diff --git a/testing/web-platform/tests/feature-policy/OWNERS b/testing/web-platform/tests/feature-policy/OWNERS deleted file mode 100644 index ceb5bd9981b1..000000000000 --- a/testing/web-platform/tests/feature-policy/OWNERS +++ /dev/null @@ -1 +0,0 @@ -@clelland diff --git a/testing/web-platform/tests/feature-policy/README.md b/testing/web-platform/tests/feature-policy/README.md index a5276f0a7f34..775a35412636 100644 --- a/testing/web-platform/tests/feature-policy/README.md +++ b/testing/web-platform/tests/feature-policy/README.md @@ -37,8 +37,8 @@ HTTP tests are used to test features with header policy. * test if feature is enabled / disabled in a cross-origin iframe. Examples: -`/feature-policy/payment-disabled-by-feature-policy.https.sub.html` -`/feature-policy/payment-disabled-by-feature-policy.https.sub.html.headers` +`/payment-request/payment-disabled-by-feature-policy.https.sub.html` +`/payment-request/payment-disabled-by-feature-policy.https.sub.html.headers` ### How to Write Container Policy Tests Simply use `test_feature_availability()` with the optional argument @@ -47,7 +47,7 @@ Simply use `test_feature_availability()` with the optional argument * feature is enabled / disabled in a cross-origin iframe. Example: -`/feature-policy/payment-allowed-by-feature-policy-attribute.https.sub.html` +`/payment-request/payment-allowed-by-feature-policy-attribute.https.sub.html` ### How to Write Container Policy Tests with Redirect Similar to the section above, append @@ -55,5 +55,5 @@ Similar to the section above, append passed to `test_feature_availability()`. Example: -`/feature-policy/payment-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html` +`/payment-request/payment-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html` diff --git a/testing/web-platform/tests/feature-policy/resources/featurepolicy.js b/testing/web-platform/tests/feature-policy/resources/featurepolicy.js index 12679c89a756..1d7395a60b82 100644 --- a/testing/web-platform/tests/feature-policy/resources/featurepolicy.js +++ b/testing/web-platform/tests/feature-policy/resources/featurepolicy.js @@ -35,11 +35,10 @@ function test_feature_availability( frame.setAttribute(allow_attribute, true); } - window.addEventListener('message', test.step_func(function handler(evt) { + window.addEventListener('message', test.step_func(evt => { if (evt.source === frame.contentWindow) { expect_feature_available(evt.data, feature_description); document.body.removeChild(frame); - window.removeEventListener('message', handler); test.done(); } })); @@ -55,100 +54,3 @@ function expect_feature_available_default(data, feature_description) { function expect_feature_unavailable_default(data, feature_description) { assert_false(data.enabled, feature_description); } - -// This is the same as test_feature_availability() but instead of passing in a -// function to check the result of the message sent back from an iframe, instead -// just compares the result to an expected result passed in. -// Arguments: -// test: test created by testharness. Examples: async_test, promise_test. -// src: the URL to load in an iframe in which to test the feature. -// expected_result: the expected value to compare to the data passed back -// from the src page by postMessage. -// allow_attribute: Optional argument, only provided when an allow -// attribute should be specified on the iframe. -function test_feature_availability_with_post_message_result( - test, src, expected_result, allow_attribute) { - var test_result = function(data, feature_description) { - assert_equals(data, expected_result); - }; - test_feature_availability(null, test, src, test_result, allow_attribute); -} - -// This function runs all feature policy tests for a particular feature that -// has a default policy of "self". This includes testing: -// 1. Feature usage succeeds by default in the top level frame. -// 2. Feature usage succeeds by default in a same-origin iframe. -// 3. Feature usage fails by default in a cross-origin iframe. -// 4. Feature usage suceeds when an allow attribute is specified on a -// cross-origin iframe. -// -// The same page which called this function will be loaded in the iframe in -// order to test feature usage there. When this function is called in that -// context it will simply run the feature and return a result back via -// postMessage. -// -// Arguments: -// cross_origin: A cross-origin URL base to be used to load the page which -// called into this function. -// feature_name: The name of the feature as it should be specified in an -// allow attribute. -// error_name: If feature usage does not succeed, this is the string -// representation of the error that will be passed in the rejected -// promise. -// feature_promise_factory: A function which returns a promise which tests -// feature usage. If usage succeeds, the promise should resolve. If it -// fails, the promise should reject with an error that can be -// represented as a string. -function run_all_fp_tests_allow_self( - cross_origin, feature_name, error_name, feature_promise_factory) { - // This may be the version of the page loaded up in an iframe. If so, just - // post the result of running the feature promise back to the parent. - if (location.hash.startsWith('#iframe')) { - // This makes it possible to test multiple features in the one test file. - if (!location.hash.includes(feature_name)) - return; - feature_promise_factory().then( - () => window.parent.postMessage('#OK', '*'), - (e) => window.parent.postMessage('#' + e.toString(), '*')); - return; - } - - // Run the various tests. - // 1. Top level frame. - promise_test( - () => feature_promise_factory(), - 'Default "' + feature_name + - '" feature policy ["self"] allows the top-level document.'); - - // 2. Same-origin iframe. - // Append #iframe to the URL so we can detect the iframe'd version of the - // page. - const same_origin_frame_pathname = - location.pathname + '#iframe#' + feature_name; - async_test( - t => { - test_feature_availability_with_post_message_result( - t, same_origin_frame_pathname, '#OK'); - }, - 'Default "' + feature_name + - '" feature policy ["self"] allows same-origin iframes.'); - - // 3. Cross-origin iframe. - const cross_origin_frame_url = cross_origin + same_origin_frame_pathname; - async_test( - t => { - test_feature_availability_with_post_message_result( - t, cross_origin_frame_url, '#' + error_name); - }, - 'Default "' + feature_name + - '" feature policy ["self"] disallows cross-origin iframes.'); - - // 4. Cross-origin iframe with "allow" attribute. - async_test( - t => { - test_feature_availability_with_post_message_result( - t, cross_origin_frame_url, '#OK', feature_name); - }, - 'Feature policy "' + feature_name + - '" can be enabled in cross-origin iframes using "allow" attribute.'); -} diff --git a/testing/web-platform/tests/fetch/OWNERS b/testing/web-platform/tests/fetch/OWNERS index e2f2428209f3..64550d0d4e4f 100644 --- a/testing/web-platform/tests/fetch/OWNERS +++ b/testing/web-platform/tests/fetch/OWNERS @@ -2,4 +2,3 @@ @youennf @annevk @mnot -@yutakahirano diff --git a/testing/web-platform/tests/fetch/api/cors/cors-expose-star.js b/testing/web-platform/tests/fetch/api/cors/cors-expose-star.js index e37ddb4c3f2e..90a9351d1e86 100644 --- a/testing/web-platform/tests/fetch/api/cors/cors-expose-star.js +++ b/testing/web-platform/tests/fetch/api/cors/cors-expose-star.js @@ -4,7 +4,7 @@ if (this.document === undefined) { } const url = "http://{{host}}:{{ports[http][1]}}" + dirname(location.pathname) + RESOURCES_DIR + "top.txt", - sharedHeaders = "?pipe=header(Access-Control-Expose-Headers,*)|header(Test,X)|header(Set-Cookie,X)|header(*,whoa)|" + sharedHeaders = "?pipe=header(Access-Control-Expose-Headers,*)|header(Test,X)|header(Set-Cookie,X)|" promise_test(() => { const headers = "header(Access-Control-Allow-Origin,*)" @@ -13,7 +13,6 @@ promise_test(() => { assert_equals(resp.type , "cors") assert_equals(resp.headers.get("test"), "X") assert_equals(resp.headers.get("set-cookie"), null) - assert_equals(resp.headers.get("*"), "whoa") }) }, "Basic Access-Control-Expose-Headers: * support") @@ -26,19 +25,7 @@ promise_test(() => { assert_equals(resp.headers.get("content-type"), "text/plain") // safelisted assert_equals(resp.headers.get("test"), null) assert_equals(resp.headers.get("set-cookie"), null) - assert_equals(resp.headers.get("*"), "whoa") }) -}, "* for credentialed fetches only matches literally") - -promise_test(() => { - const headers = "header(Access-Control-Allow-Origin,*)|header(Access-Control-Expose-Headers,set-cookie)" - return fetch(url + sharedHeaders + headers).then(resp => { - assert_equals(resp.status, 200) - assert_equals(resp.type , "cors") - assert_equals(resp.headers.get("test"), "X") - assert_equals(resp.headers.get("set-cookie"), null) - assert_equals(resp.headers.get("*"), "whoa") - }) -}, "* can be one of several values") +}, "Cannot use * for credentialed fetches") done(); diff --git a/testing/web-platform/tests/fetch/api/cors/cors-preflight-star.any.js b/testing/web-platform/tests/fetch/api/cors/cors-preflight-star.any.js index 8a18b514e969..213d805ea5b3 100644 --- a/testing/web-platform/tests/fetch/api/cors/cors-preflight-star.any.js +++ b/testing/web-platform/tests/fetch/api/cors/cors-preflight-star.any.js @@ -16,7 +16,7 @@ function preflightTest(succeeds, withCredentials, allowMethod, allowHeader, useM if (useMethod) { requestInit.method = useMethod } - if (useHeader.length > 0) { + if (useHeader) { requestInit.headers = [useHeader] } testURL += "allow_methods=" + allowMethod + "&" @@ -36,9 +36,7 @@ preflightTest(true, false, "get", "x-test", "GET", ["X-Test", "1"]) preflightTest(true, false, "*", "x-test", "SUPER", ["X-Test", "1"]) preflightTest(true, false, "*", "*", "OK", ["X-Test", "1"]) preflightTest(false, true, "*", "*", "OK", ["X-Test", "1"]) -preflightTest(false, true, "*", "", "PUT", []) -preflightTest(true, true, "PUT", "*", "PUT", []) -preflightTest(false, true, "put", "*", "PUT", []) +preflightTest(false, true, "*", "", "PUT", undefined) +preflightTest(false, true, "put", "*", "PUT", undefined) preflightTest(false, true, "get", "*", "GET", ["X-Test", "1"]) preflightTest(false, true, "*", "*", "GET", ["X-Test", "1"]) -preflightTest(true, true, "*", "*", "*", ["*", "1"]) diff --git a/testing/web-platform/tests/fetch/api/response/response-cancel-stream.html b/testing/web-platform/tests/fetch/api/response/response-cancel-stream.html index 58d6745a12a0..2a02e1f60ac9 100644 --- a/testing/web-platform/tests/fetch/api/response/response-cancel-stream.html +++ b/testing/web-platform/tests/fetch/api/response/response-cancel-stream.html @@ -12,6 +12,7 @@ diff --git a/testing/web-platform/tests/gamepad/idlharness-manual.html b/testing/web-platform/tests/gamepad/idlharness-manual.html index 3b96073790c8..73d3aeadd9a6 100644 --- a/testing/web-platform/tests/gamepad/idlharness-manual.html +++ b/testing/web-platform/tests/gamepad/idlharness-manual.html @@ -43,8 +43,8 @@ interface Gamepad { readonly attribute boolean connected; readonly attribute DOMHighResTimeStamp timestamp; readonly attribute GamepadMappingType mapping; - readonly attribute FrozenArray axes; - readonly attribute FrozenArray buttons; + readonly attribute double[] axes; + readonly attribute GamepadButton[] buttons; }; enum GamepadMappingType { diff --git a/testing/web-platform/tests/gamepad/idlharness.html b/testing/web-platform/tests/gamepad/idlharness.html index 559d2ef8ad27..0acd4cae989b 100644 --- a/testing/web-platform/tests/gamepad/idlharness.html +++ b/testing/web-platform/tests/gamepad/idlharness.html @@ -26,8 +26,8 @@ interface Gamepad { readonly attribute boolean connected; readonly attribute DOMHighResTimeStamp timestamp; readonly attribute GamepadMappingType mapping; - readonly attribute FrozenArray axes; - readonly attribute FrozenArray buttons; + readonly attribute double[] axes; + readonly attribute GamepadButton[] buttons; }; enum GamepadMappingType { diff --git a/testing/web-platform/tests/generic-sensor/idlharness.https.html b/testing/web-platform/tests/generic-sensor/idlharness.html similarity index 82% rename from testing/web-platform/tests/generic-sensor/idlharness.https.html rename to testing/web-platform/tests/generic-sensor/idlharness.html index da0bb71aa4ad..5fffbbb34be6 100644 --- a/testing/web-platform/tests/generic-sensor/idlharness.https.html +++ b/testing/web-platform/tests/generic-sensor/idlharness.html @@ -7,9 +7,14 @@ +
    - + - + +
    - + - + diff --git a/testing/web-platform/tests/hr-time/timeOrigin.html b/testing/web-platform/tests/hr-time/timeOrigin.html index 20aea7508451..415d74529f1a 100644 --- a/testing/web-platform/tests/hr-time/timeOrigin.html +++ b/testing/web-platform/tests/hr-time/timeOrigin.html @@ -9,11 +9,10 @@ const windowOrigin = performance.timeOrigin; test(() => { - // Use a 30ms cushion when comparing with Date() to account for inaccuracy. const startTime = Date.now(); - assert_greater_than_equal(startTime + 30, windowOrigin, 'Date.now() should be at least as large as the window timeOrigin.'); + assert_greater_than_equal(startTime + 1, windowOrigin, 'Date.now() should be at least as large as the window timeOrigin.'); const startNow = performance.now(); - assert_less_than_equal(startTime, windowOrigin + startNow + 30, 'Date.now() should be close to window timeOrigin.'); + assert_less_than_equal(startTime, windowOrigin + startNow + 1, 'Date.now() should be close to window timeOrigin.'); }, 'Window timeOrigin is close to Date.now() when there is no system clock adjustment.'); const workerScript = 'postMessage({timeOrigin: performance.timeOrigin})'; diff --git a/testing/web-platform/tests/hr-time/window-worker-time-origin.html b/testing/web-platform/tests/hr-time/window-worker-time-origin.html new file mode 100644 index 000000000000..d7031c439473 --- /dev/null +++ b/testing/web-platform/tests/hr-time/window-worker-time-origin.html @@ -0,0 +1,36 @@ + + + + +performance.now() time origin + + + + + + + + +

    Description

    +

    This test validates that a Worker's time origin is its moment of creation and differs from its spawner's.

    +
    + + diff --git a/testing/web-platform/tests/hr-time/window-worker-timeOrigin.window.js b/testing/web-platform/tests/hr-time/window-worker-timeOrigin.window.js deleted file mode 100644 index 1e5ef1cdffec..000000000000 --- a/testing/web-platform/tests/hr-time/window-worker-timeOrigin.window.js +++ /dev/null @@ -1,30 +0,0 @@ -"use strict" -// https://w3c.github.io/hr-time/#time-origin - -async_test(function(test) { - // Cache global time before starting worker - const globalTimeOrigin = performance.timeOrigin; - const globalNowBeforeWorkerStart = performance.now(); - - // Start worker and retrieve time - const workerScript = "postMessage({timeOrigin: performance.timeOrigin, now: performance.now()})"; - const blob = new Blob([workerScript]); - let worker = new Worker(URL.createObjectURL(blob)); - - worker.addEventListener("message", test.step_func_done(function(event) { - const workerTimeOrigin = event.data.timeOrigin; - const workerNow = event.data.now; - - assert_not_equals(workerTimeOrigin, 0, "worker timeOrigin must not be 0"); - assert_not_equals(performance.timeOrigin, 0, "Document timeOrigin must not be 0"); - - assert_equals(globalTimeOrigin, performance.timeOrigin, "timeOrigin should not be changed in same document mode"); - assert_less_than(globalTimeOrigin, workerTimeOrigin, "Document timeOrigin must be earlier than worker timeOrigin"); - - // Document and worker's now() start from their respective timeOrigins. - const timeDiff = workerTimeOrigin - globalTimeOrigin; // convert worker's time to Document time. - assert_less_than(globalTimeOrigin + globalNowBeforeWorkerStart, globalTimeOrigin + timeDiff + workerNow, "Document old now is earlier than worker now."); - - // Comparing timing between Document and worker threads could be delicate as it relies on the thread implementation and could be subject to race conditions. - })); -}, 'timeOrigin and now() should be correctly ordered between window and worker'); diff --git a/testing/web-platform/tests/html/OWNERS b/testing/web-platform/tests/html/OWNERS index 1f659c8f6bf7..627071770bd0 100644 --- a/testing/web-platform/tests/html/OWNERS +++ b/testing/web-platform/tests/html/OWNERS @@ -1,3 +1,4 @@ @jdm @jgraham +@zcorpan @zqzhang diff --git a/testing/web-platform/tests/html/browsers/the-window-object/named-access-on-the-window-object/named-objects.html b/testing/web-platform/tests/html/browsers/the-window-object/named-access-on-the-window-object/named-objects.html index d5b1789d5945..f020e0ecbe18 100644 --- a/testing/web-platform/tests/html/browsers/the-window-object/named-access-on-the-window-object/named-objects.html +++ b/testing/web-platform/tests/html/browsers/the-window-object/named-access-on-the-window-object/named-objects.html @@ -9,6 +9,7 @@

    +
    @@ -32,9 +33,10 @@ test(function() { }, "Check if the first nested browsing context is returned by window['c']"); test(function() { + assert_equals(window['a'].length, 5, "The length should be 5."); assert_true(window['a'] instanceof HTMLCollection); assert_array_equals(window['a'], - [ document.getElementById('embed1'), + [ document.getElementById('app1'), document.getElementById('embed1'), document.getElementById('form1'), document.getElementById('img1'), document.getElementById('obj1') ], "The elements are not in tree order."); @@ -42,10 +44,10 @@ test(function() { document.getElementById('form1').setAttribute("name", ""); document.getElementById('embed1').setAttribute("name", ""); assert_array_equals(window['a'], - [ document.getElementById('img1'), + [ document.getElementById('app1'), document.getElementById('img1'), document.getElementById('obj1') ], "Window['a'] should not contain the elements with empty name attribute."); -}, "Check if window['a'] contains all embed, form, img, and object elements, and their order"); +}, "Check if window['a'] contains all applet, embed, form, img, and object elements, and their order"); var t = async_test("Check that window['fs'] does not return the frameset element with name='fs' (historical)"); function on_load () { diff --git a/testing/web-platform/tests/html/dom/documents/dom-tree-accessors/nameditem-03.html b/testing/web-platform/tests/html/dom/documents/dom-tree-accessors/nameditem-03.html index be2ca173b02f..4c330b6a367a 100644 --- a/testing/web-platform/tests/html/dom/documents/dom-tree-accessors/nameditem-03.html +++ b/testing/web-platform/tests/html/dom/documents/dom-tree-accessors/nameditem-03.html @@ -6,13 +6,105 @@
    +
    + + + + + + + + + + + + + + + + + + +
    diff --git a/testing/web-platform/tests/html/dom/documents/dom-tree-accessors/nameditem-08.html b/testing/web-platform/tests/html/dom/documents/dom-tree-accessors/nameditem-08.html index bb024d9e781f..a5c26f39eed0 100644 --- a/testing/web-platform/tests/html/dom/documents/dom-tree-accessors/nameditem-08.html +++ b/testing/web-platform/tests/html/dom/documents/dom-tree-accessors/nameditem-08.html @@ -1,11 +1,14 @@ -Named items: duplicate id attributes for object and img +Named items: duplicate id attributes for applet, object and img
    +
    + +
    @@ -13,6 +16,14 @@
    - -
    - - diff --git a/testing/web-platform/tests/html/dom/interfaces.html b/testing/web-platform/tests/html/dom/interfaces.html index 6ce15163f3d9..84406156e8ac 100644 --- a/testing/web-platform/tests/html/dom/interfaces.html +++ b/testing/web-platform/tests/html/dom/interfaces.html @@ -204,6 +204,7 @@ function doTest([html, dom, cssom, uievents, touchevents]) { MessageEvent: ['new MessageEvent("message", { data: 5 })'], MessageChannel: [], MessagePort: [], + HTMLAppletElement: ['document.createElement("applet")'], HTMLMarqueeElement: ['document.createElement("marquee")'], HTMLFrameSetElement: ['document.createElement("frameset")'], HTMLFrameElement: ['document.createElement("frame")'], diff --git a/testing/web-platform/tests/html/infrastructure/common-dom-interfaces/collections/htmlallcollection.html b/testing/web-platform/tests/html/infrastructure/common-dom-interfaces/collections/htmlallcollection.html index e17c0eb82fd3..fd250426464c 100644 --- a/testing/web-platform/tests/html/infrastructure/common-dom-interfaces/collections/htmlallcollection.html +++ b/testing/web-platform/tests/html/infrastructure/common-dom-interfaces/collections/htmlallcollection.html @@ -19,9 +19,6 @@
    -
    -
    -
    - - - - - - - - - - - - - - -
    -
    -
    -
    -
    - - diff --git a/testing/web-platform/tests/html/semantics/document-metadata/the-style-element/style_type_change.html b/testing/web-platform/tests/html/semantics/document-metadata/the-style-element/style_type_change.html deleted file mode 100644 index a19b3c86d754..000000000000 --- a/testing/web-platform/tests/html/semantics/document-metadata/the-style-element/style_type_change.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - Dynamically changing HTMLStyleElement.type should change the rendering accordingly - - - - - - - Text content. - - - \ No newline at end of file diff --git a/testing/web-platform/tests/html/semantics/embedded-content/media-elements/mime-types/canPlayType.html b/testing/web-platform/tests/html/semantics/embedded-content/media-elements/mime-types/canPlayType.html index 4f94cddc7084..c5d37e752062 100644 --- a/testing/web-platform/tests/html/semantics/embedded-content/media-elements/mime-types/canPlayType.html +++ b/testing/web-platform/tests/html/semantics/embedded-content/media-elements/mime-types/canPlayType.html @@ -52,9 +52,6 @@ function type_codecs_test(type, audioCodecs, videoCodecs) { // Spec: Generally, a user agent should never return "probably" for a type // that allows the codecs parameter if that parameter is not present. t(type, 'maybe'); - t(type + ';', 'maybe'); - t(type + ';codecs', 'maybe'); - t(type + ';codecs=', 'maybe'); typeSupported = true; }, type + ' (optional)'); @@ -90,7 +87,7 @@ function type_codecs_test(type, audioCodecs, videoCodecs) { }); }); }, type + ' codecs order'); - } + } test(function() { t(mime(type, ['bogus']), ''); diff --git a/testing/web-platform/tests/html/semantics/embedded-content/media-elements/track/track-element/track-cue-order.html b/testing/web-platform/tests/html/semantics/embedded-content/media-elements/track/track-element/track-cue-order.html deleted file mode 100644 index 58e11ebe7012..000000000000 --- a/testing/web-platform/tests/html/semantics/embedded-content/media-elements/track/track-element/track-cue-order.html +++ /dev/null @@ -1,83 +0,0 @@ - -Text track cue order - - - - diff --git a/testing/web-platform/tests/html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html b/testing/web-platform/tests/html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html index b40d5fb94cf5..30b30e1271ba 100644 --- a/testing/web-platform/tests/html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html +++ b/testing/web-platform/tests/html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html @@ -38,9 +38,6 @@ - - - diff --git a/testing/web-platform/tests/html/semantics/interfaces.js b/testing/web-platform/tests/html/semantics/interfaces.js index 96abf61e2ce1..5ccc891c358b 100644 --- a/testing/web-platform/tests/html/semantics/interfaces.js +++ b/testing/web-platform/tests/html/semantics/interfaces.js @@ -3,7 +3,7 @@ var elements = [ ["abbr", ""], ["acronym", ""], ["address", ""], - ["applet", "Unknown"], + ["applet", "Applet"], ["area", "Area"], ["article", ""], ["aside", ""], diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/script-language-type.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/script-language-type.html new file mode 100644 index 000000000000..b94834c83dd1 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/script-language-type.html @@ -0,0 +1,18 @@ + +Script: combinations of @type and @language + + + + +
    + + + diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/script-languages-01.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/script-languages-01.html new file mode 100644 index 000000000000..f2f2724df5ae --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/script-languages-01.html @@ -0,0 +1,24 @@ + +Script @type: unknown parameters + + + + +
    +
    + + +
    + diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/script-type-and-language-js.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/script-languages-02.html similarity index 95% rename from testing/web-platform/tests/html/semantics/scripting-1/the-script-element/script-type-and-language-js.html rename to testing/web-platform/tests/html/semantics/scripting-1/the-script-element/script-languages-02.html index 2f56ade9bee8..69613e5104f4 100644 --- a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/script-type-and-language-js.html +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/script-languages-02.html @@ -1,8 +1,7 @@ -Script @type and @language: JavaScript types +Script @type: JavaScript types -
    diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/script-type-and-language-empty.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/script-type-and-language-empty.html deleted file mode 100644 index 6ce1b279f74f..000000000000 --- a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/script-type-and-language-empty.html +++ /dev/null @@ -1,48 +0,0 @@ - -Script @type and @language: empty strings - - - - - - - - - - - - - - - - - - - - diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/script-type-and-language-with-params.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/script-type-and-language-with-params.html deleted file mode 100644 index 977ee7d0a482..000000000000 --- a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/script-type-and-language-with-params.html +++ /dev/null @@ -1,41 +0,0 @@ - -Script @type and @language: unknown type parameters - - - - - - - - - - - - - - - - - - - diff --git a/testing/web-platform/tests/html/semantics/selectors/pseudo-classes/checked-type-change.html b/testing/web-platform/tests/html/semantics/selectors/pseudo-classes/checked-type-change.html deleted file mode 100644 index 661d9e4355eb..000000000000 --- a/testing/web-platform/tests/html/semantics/selectors/pseudo-classes/checked-type-change.html +++ /dev/null @@ -1,24 +0,0 @@ - - -Selector: pseudo-class :checked input type change - - - - - - -This text should be green. - diff --git a/testing/web-platform/tests/html/semantics/selectors/pseudo-classes/indeterminate-type-change.html b/testing/web-platform/tests/html/semantics/selectors/pseudo-classes/indeterminate-type-change.html deleted file mode 100644 index b3e4cce30234..000000000000 --- a/testing/web-platform/tests/html/semantics/selectors/pseudo-classes/indeterminate-type-change.html +++ /dev/null @@ -1,24 +0,0 @@ - - -Selector: pseudo-class :indeterminate input type change - - - - - - -This text should be green. - diff --git a/testing/web-platform/tests/html/semantics/selectors/pseudo-classes/inrange-outofrange-type-change.html b/testing/web-platform/tests/html/semantics/selectors/pseudo-classes/inrange-outofrange-type-change.html deleted file mode 100644 index 9c1be9ca275d..000000000000 --- a/testing/web-platform/tests/html/semantics/selectors/pseudo-classes/inrange-outofrange-type-change.html +++ /dev/null @@ -1,43 +0,0 @@ - - -Selector: pseudo-classes (:in-range, :out-of-range) input type change - - - - - - -This text should be green. - -This text should be green. - diff --git a/testing/web-platform/tests/html/webappapis/idle-callbacks/callback-suspended.html b/testing/web-platform/tests/html/webappapis/idle-callbacks/callback-suspended.html index 28bfa98c1468..6040de922fb3 100644 --- a/testing/web-platform/tests/html/webappapis/idle-callbacks/callback-suspended.html +++ b/testing/web-platform/tests/html/webappapis/idle-callbacks/callback-suspended.html @@ -80,7 +80,7 @@ running = false; }), // ... or not. If not, we expect a load event. - waitForMessage("foo", _ => win) + waitForMessage("foo") ])) .then(_ => win.close()) .catch(e => { diff --git a/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content.html b/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content.html new file mode 100644 index 000000000000..b6b41c21f14a --- /dev/null +++ b/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content.html @@ -0,0 +1,136 @@ + + +registerContentHandler() + + + + + + +

    Note: If your browser limits the number of handler +registration requests on a page, you might need to disable or significantly +increase that limit for the tests below to run.

    + + +
    + + + + + diff --git a/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content/001.xhtml b/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content/001.xhtml new file mode 100644 index 000000000000..a0d2fa15b8c7 --- /dev/null +++ b/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content/001.xhtml @@ -0,0 +1,16 @@ + + + +isContentHandlerRegistered for new content type + + + + + +
    + + diff --git a/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content/002.xhtml b/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content/002.xhtml new file mode 100644 index 000000000000..d5c2ff3e05a8 --- /dev/null +++ b/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content/002.xhtml @@ -0,0 +1,19 @@ + + + +isContentHandlerRegistered for content type that is not yet accepted + + + + + +
    + + diff --git a/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content/003.xhtml b/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content/003.xhtml new file mode 100644 index 000000000000..92e7ca8f55e2 --- /dev/null +++ b/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content/003.xhtml @@ -0,0 +1,18 @@ + + + +Content type case insensitivity in isContentHandlerRegistered + + + + + +
    + + diff --git a/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content/004.xhtml b/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content/004.xhtml new file mode 100644 index 000000000000..a82f3506bce0 --- /dev/null +++ b/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content/004.xhtml @@ -0,0 +1,18 @@ + + + +Non-matching url in isContentHandlerRegistered + + + + + +
    + + diff --git a/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content/005.xhtml b/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content/005.xhtml new file mode 100644 index 000000000000..b8c8b58d17f1 --- /dev/null +++ b/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content/005.xhtml @@ -0,0 +1,18 @@ + + + +Invalid characters in content type in isContentHandlerRegistered + + + + + +
    + + diff --git a/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content/006.xhtml b/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content/006.xhtml new file mode 100644 index 000000000000..86d0cff6190d --- /dev/null +++ b/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/content/006.xhtml @@ -0,0 +1,18 @@ + + + +Blacklisted content type and isContentHandlerRegistered + + + + + +
    + + diff --git a/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/historical.window.js b/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/historical.window.js deleted file mode 100644 index c27845e6a7d4..000000000000 --- a/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/historical.window.js +++ /dev/null @@ -1,10 +0,0 @@ -[ - "registerContentHandler", - "isProtocolHandlerRegistered", - "isContentHandlerRegistered", - "unregisterContentHandler" -].forEach(method => { - test(() => { - assert_false(method in self.navigator); - }, method + "() is removed"); -}); diff --git a/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/navigator-pluginarray.html b/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/navigator-pluginarray.html index ab4f61ee9f96..8798b2630648 100644 --- a/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/navigator-pluginarray.html +++ b/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/navigator-pluginarray.html @@ -4,25 +4,6 @@ + + + + +
    + + diff --git a/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/002.xhtml b/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/002.xhtml new file mode 100644 index 000000000000..ce2c8dc0d607 --- /dev/null +++ b/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/002.xhtml @@ -0,0 +1,19 @@ + + + +isProtocolHandlerRegistered for protocol that is not yet accepted + + + + + +
    + + diff --git a/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/003.xhtml b/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/003.xhtml new file mode 100644 index 000000000000..035d5b9a64bb --- /dev/null +++ b/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/003.xhtml @@ -0,0 +1,18 @@ + + + +Protocol case insensitivity in isProtocolHandlerRegistered + + + + + +
    + + diff --git a/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/004.xhtml b/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/004.xhtml new file mode 100644 index 000000000000..3fd14dd12941 --- /dev/null +++ b/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/004.xhtml @@ -0,0 +1,18 @@ + + + +Non-matching url in isProtocolHandlerRegistered + + + + + +
    + + diff --git a/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/005.xhtml b/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/005.xhtml new file mode 100644 index 000000000000..894ff4a6a23b --- /dev/null +++ b/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/005.xhtml @@ -0,0 +1,18 @@ + + + +Invalid characters in protocol scheme and isProtocolHandlerRegistered + + + + + +
    + + diff --git a/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/006.xhtml b/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/006.xhtml new file mode 100644 index 000000000000..7529a7eb2cb2 --- /dev/null +++ b/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/006.xhtml @@ -0,0 +1,19 @@ + + + +Scheme outside white list and isProtocolHandlerRegistered + + + + + +
    + + diff --git a/testing/web-platform/tests/innerText/getter-tests.js b/testing/web-platform/tests/innerText/getter-tests.js index 6df8912dc937..7882be4dcf1c 100644 --- a/testing/web-platform/tests/innerText/getter-tests.js +++ b/testing/web-platform/tests/innerText/getter-tests.js @@ -197,13 +197,6 @@ testText("

    abc testText("

    abc
    def", "abc\ndef", "No blank lines around
    with margin"); testText("
    123abcdef", "123abcdef", "No newlines at display:inline-block boundary"); testText("
    123 abc def", "123abcdef", "Leading/trailing space removal at display:inline-block boundary"); -testText("
    123

    abc

    def", "123\n\nabc\n\ndef", "Blank lines around

    even without margin"); -testText("

    123

    abc

    def", "123\nabc\ndef", "No blank lines around

    "); -testText("
    123

    abc

    def", "123\nabc\ndef", "No blank lines around

    "); -testText("
    123

    abc

    def", "123\nabc\ndef", "No blank lines around

    "); -testText("
    123

    abc

    def", "123\nabc\ndef", "No blank lines around

    "); -testText("
    123
    abc
    def", "123\nabc\ndef", "No blank lines around
    "); -testText("
    123
    abc
    def", "123\nabc\ndef", "No blank lines around
    "); /**** Spans ****/ diff --git a/testing/web-platform/tests/input-events/input-events-cut-paste-manual.html b/testing/web-platform/tests/input-events/input-events-cut-paste-manual.html deleted file mode 100644 index 4091c87cdd34..000000000000 --- a/testing/web-platform/tests/input-events/input-events-cut-paste-manual.html +++ /dev/null @@ -1,83 +0,0 @@ - - -Cut and Paste should trigger corresponding InputEvent - - -

    To manually run this test, please follow the steps below:
    -1. Select 'plain' => Cut (e.g. Ctrl/Cmd-X) => Paste (e.g. Ctrl/Cmd-V).
    -2. Select 'rich' => Cut => Paste.
    -3. Select 'prevent' => Paste.
    -4. Select 'prevent' => Cut => Select 'normal' => Paste.
    -
    -If a "PASS" result appears the test passes, otherwise it fails

    - -

    rich

    -

    prevent

    -

    normal

    - diff --git a/testing/web-platform/tests/input-events/input-events-exec-command.html b/testing/web-platform/tests/input-events/input-events-exec-command.html deleted file mode 100644 index 6c512023296c..000000000000 --- a/testing/web-platform/tests/input-events/input-events-exec-command.html +++ /dev/null @@ -1,86 +0,0 @@ - - -execCommand() should only trigger 'input' - - -

    - diff --git a/testing/web-platform/tests/input-events/input-events-get-target-ranges-manual.html b/testing/web-platform/tests/input-events/input-events-get-target-ranges-manual.html deleted file mode 100644 index 7e6a59769d04..000000000000 --- a/testing/web-platform/tests/input-events/input-events-get-target-ranges-manual.html +++ /dev/null @@ -1,76 +0,0 @@ - - -InputEvent.getTargetRanges() behavior - - -

    To manually run this test, please follow the steps below:
    -1. Place caret at the end of 'hello world'.
    -2. Press Ctrl-Backspace (Alt-Backspace on macOS) to delete word backwards.
    -3. Place caret at the end of 'test2' => Press 'a' key.
    -4. Select 'test2a' => Press 'b' key.
    -5. Select 'b' => Bold text through context menu or Command-b on macOS.
    -6. Place caret at the end of 'test3' => Press 'a' key => Press Backspace key.
    -
    -If a "PASS" result appears the test passes, otherwise it fails

    -

    hello world

    -

    test2

    - - diff --git a/testing/web-platform/tests/input-events/input-events-typing-data-manual.html b/testing/web-platform/tests/input-events/input-events-typing-data-manual.html new file mode 100644 index 000000000000..26e179c3c0f1 --- /dev/null +++ b/testing/web-platform/tests/input-events/input-events-typing-data-manual.html @@ -0,0 +1,38 @@ + + +InputEvent have data when typing on textarea and contenteditable + + +

    To manually run this test, please follow the steps below:
    +1. Focus the first box and press key 'a' and then 'b'.
    +2. Focus the second box and press key 'c' and then 'd'.
    +
    +If a "PASS" result appears the test passes, otherwise it fails

    + +

    + diff --git a/testing/web-platform/tests/input-events/input-events-typing-manual.html b/testing/web-platform/tests/input-events/input-events-typing-manual.html deleted file mode 100644 index 5f81c33c7519..000000000000 --- a/testing/web-platform/tests/input-events/input-events-typing-manual.html +++ /dev/null @@ -1,60 +0,0 @@ - - -InputEvent have correct data/order when typing on textarea and contenteditable - - -

    To manually run this test, please follow the steps below:
    -1. Focus the first box and press key 'a' and then Shift-'b'.
    -2. Focus the second box and press key 'c' and then Shift-'d'.
    -
    -If a "PASS" result appears the test passes, otherwise it fails

    - -

    - diff --git a/testing/web-platform/tests/interfaces/cssom-view.idl b/testing/web-platform/tests/interfaces/cssom-view.idl deleted file mode 100644 index af779a1cc4af..000000000000 --- a/testing/web-platform/tests/interfaces/cssom-view.idl +++ /dev/null @@ -1,184 +0,0 @@ -enum ScrollBehavior { "auto", "instant", "smooth" }; - -dictionary ScrollOptions { - ScrollBehavior behavior = "auto"; -}; -dictionary ScrollToOptions : ScrollOptions { - unrestricted double left; - unrestricted double top; -}; - -partial interface Window { - [NewObject] MediaQueryList matchMedia(CSSOMString query); - [SameObject, Replaceable] readonly attribute Screen screen; - - // browsing context - void moveTo(long x, long y); - void moveBy(long x, long y); - void resizeTo(long x, long y); - void resizeBy(long x, long y); - - // viewport - [Replaceable] readonly attribute long innerWidth; - [Replaceable] readonly attribute long innerHeight; - - // viewport scrolling - [Replaceable] readonly attribute double scrollX; - [Replaceable] readonly attribute double pageXOffset; - [Replaceable] readonly attribute double scrollY; - [Replaceable] readonly attribute double pageYOffset; - void scroll(optional ScrollToOptions options); - void scroll(unrestricted double x, unrestricted double y); - void scrollTo(optional ScrollToOptions options); - void scrollTo(unrestricted double x, unrestricted double y); - void scrollBy(optional ScrollToOptions options); - void scrollBy(unrestricted double x, unrestricted double y); - - // client - [Replaceable] readonly attribute long screenX; - [Replaceable] readonly attribute long screenY; - [Replaceable] readonly attribute long outerWidth; - [Replaceable] readonly attribute long outerHeight; - [Replaceable] readonly attribute double devicePixelRatio; -}; - -[Exposed=Window] -interface MediaQueryList : EventTarget { - readonly attribute CSSOMString media; - readonly attribute boolean matches; - void addListener(EventListener? listener); - void removeListener(EventListener? listener); - attribute EventHandler onchange; -}; - -[Exposed=Window, - Constructor(CSSOMString type, optional MediaQueryListEventInit eventInitDict)] -interface MediaQueryListEvent : Event { - readonly attribute CSSOMString media; - readonly attribute boolean matches; -}; - -dictionary MediaQueryListEventInit : EventInit { - CSSOMString media = ""; - boolean matches = false; -}; - -[Exposed=Window] -interface Screen { - readonly attribute long availWidth; - readonly attribute long availHeight; - readonly attribute long width; - readonly attribute long height; - readonly attribute unsigned long colorDepth; - readonly attribute unsigned long pixelDepth; -}; - -partial interface Document { - Element? elementFromPoint(double x, double y); - sequence elementsFromPoint(double x, double y); - CaretPosition? caretPositionFromPoint(double x, double y); - readonly attribute Element? scrollingElement; -}; - -[Exposed=Window] -interface CaretPosition { - readonly attribute Node offsetNode; - readonly attribute unsigned long offset; - [NewObject] DOMRect? getClientRect(); -}; - -enum ScrollLogicalPosition { "start", "center", "end", "nearest" }; -dictionary ScrollIntoViewOptions : ScrollOptions { - ScrollLogicalPosition block = "center"; - ScrollLogicalPosition inline = "center"; -}; - -partial interface Element { - DOMRectList getClientRects(); - [NewObject] DOMRect getBoundingClientRect(); - void scrollIntoView(); - void scrollIntoView((boolean or object) arg); - void scroll(optional ScrollToOptions options); - void scroll(unrestricted double x, unrestricted double y); - void scrollTo(optional ScrollToOptions options); - void scrollTo(unrestricted double x, unrestricted double y); - void scrollBy(optional ScrollToOptions options); - void scrollBy(unrestricted double x, unrestricted double y); - attribute unrestricted double scrollTop; - attribute unrestricted double scrollLeft; - readonly attribute long scrollWidth; - readonly attribute long scrollHeight; - readonly attribute long clientTop; - readonly attribute long clientLeft; - readonly attribute long clientWidth; - readonly attribute long clientHeight; -}; - -partial interface HTMLElement { - readonly attribute Element? offsetParent; - readonly attribute long offsetTop; - readonly attribute long offsetLeft; - readonly attribute long offsetWidth; - readonly attribute long offsetHeight; -}; - -partial interface HTMLImageElement { - readonly attribute long x; - readonly attribute long y; -}; - -partial interface Range { - DOMRectList getClientRects(); - [NewObject] DOMRect getBoundingClientRect(); -}; - -/* TODO This is commented out because: "Partial interface MouseEvent with no original interface" -partial interface MouseEvent { - readonly attribute double screenX; - readonly attribute double screenY; - readonly attribute double pageX; - readonly attribute double pageY; - readonly attribute double clientX; - readonly attribute double clientY; - readonly attribute double x; - readonly attribute double y; - readonly attribute double offsetX; - readonly attribute double offsetY; -}; - -partial dictionary MouseEventInit { - double screenX = 0.0; - double screenY = 0.0; - double clientX = 0.0; - double clientY = 0.0; -}; -*/ - -enum CSSBoxType { "margin", "border", "padding", "content" }; -dictionary BoxQuadOptions { - CSSBoxType box = "border"; - GeometryNode relativeTo; // XXX default document (i.e. viewport) -}; - -dictionary ConvertCoordinateOptions { - CSSBoxType fromBox = "border"; - CSSBoxType toBox = "border"; -}; - -[Exposed=Window, - NoInterfaceObject] -interface GeometryUtils { - sequence getBoxQuads(optional BoxQuadOptions options); - DOMQuad convertQuadFromNode(DOMQuadInit quad, GeometryNode from, optional ConvertCoordinateOptions options); - DOMQuad convertRectFromNode(DOMRectReadOnly rect, GeometryNode from, optional ConvertCoordinateOptions options); - DOMPoint convertPointFromNode(DOMPointInit point, GeometryNode from, optional ConvertCoordinateOptions options); // XXX z,w turns into 0 -}; - -Text implements GeometryUtils; // like Range -Element implements GeometryUtils; -/* TODO Commented out because: "CSSPseudoElement implements GeometryUtils, but CSSPseudoElement is undefined." -CSSPseudoElement implements GeometryUtils; -*/ -Document implements GeometryUtils; - -typedef (Text or Element or CSSPseudoElement or Document) GeometryNode; diff --git a/testing/web-platform/tests/interfaces/cssom.idl b/testing/web-platform/tests/interfaces/cssom.idl index b372ed6b2b5c..e5a998ebf5d8 100644 --- a/testing/web-platform/tests/interfaces/cssom.idl +++ b/testing/web-platform/tests/interfaces/cssom.idl @@ -1,143 +1,294 @@ -typedef USVString CSSOMString; - -[Exposed=Window, - LegacyArrayClass] interface MediaList { - stringifier attribute [TreatNullAs=EmptyString] CSSOMString mediaText; + stringifier attribute DOMString mediaText; readonly attribute unsigned long length; - getter CSSOMString? item(unsigned long index); - void appendMedium(CSSOMString medium); - void deleteMedium(CSSOMString medium); + getter DOMString item(unsigned long index); + void appendMedium(DOMString medium); + void deleteMedium(DOMString medium); }; -[Exposed=Window] interface StyleSheet { - readonly attribute CSSOMString type; - readonly attribute USVString? href; - readonly attribute (Element or ProcessingInstruction)? ownerNode; - readonly attribute StyleSheet? parentStyleSheet; - readonly attribute DOMString? title; - [SameObject, PutForwards=mediaText] readonly attribute MediaList media; - attribute boolean disabled; + readonly attribute DOMString type; + readonly attribute DOMString href; + readonly attribute Node ownerNode; + readonly attribute StyleSheet parentStyleSheet; + readonly attribute DOMString title; + [PutForwards=mediaText] readonly attribute MediaList media; + attribute boolean disabled; }; -[Exposed=Window] interface CSSStyleSheet : StyleSheet { - readonly attribute CSSRule? ownerRule; - [SameObject] readonly attribute CSSRuleList cssRules; - unsigned long insertRule(CSSOMString rule, optional unsigned long index = 0); + readonly attribute CSSRule ownerRule; + readonly attribute CSSRuleList cssRules; + unsigned long insertRule(DOMString rule, unsigned long index); void deleteRule(unsigned long index); }; -[Exposed=Window, - LegacyArrayClass] -interface StyleSheetList { - getter StyleSheet? item(unsigned long index); - readonly attribute unsigned long length; -}; +typedef sequence StyleSheetList; partial interface Document { [SameObject] readonly attribute StyleSheetList styleSheets; }; -[Exposed=Window, - NoInterfaceObject] -interface LinkStyle { - readonly attribute StyleSheet? sheet; +[NoInterfaceObject] interface LinkStyle { + readonly attribute StyleSheet sheet; }; ProcessingInstruction implements LinkStyle; -[Exposed=Window, - LegacyArrayClass] -interface CSSRuleList { - getter CSSRule? item(unsigned long index); - readonly attribute unsigned long length; -}; -[Exposed=Window] +typedef sequence CSSRuleList; + interface CSSRule { + // Types const unsigned short STYLE_RULE = 1; - const unsigned short CHARSET_RULE = 2; // historical const unsigned short IMPORT_RULE = 3; const unsigned short MEDIA_RULE = 4; const unsigned short FONT_FACE_RULE = 5; const unsigned short PAGE_RULE = 6; - const unsigned short MARGIN_RULE = 9; const unsigned short NAMESPACE_RULE = 10; readonly attribute unsigned short type; - attribute CSSOMString cssText; - readonly attribute CSSRule? parentRule; - readonly attribute CSSStyleSheet? parentStyleSheet; + + // Parsing and serialization + attribute DOMString cssText; + + // Context + readonly attribute CSSRule parentRule; + readonly attribute CSSStyleSheet parentStyleSheet; }; -[Exposed=Window] interface CSSStyleRule : CSSRule { - attribute CSSOMString selectorText; - [SameObject, PutForwards=cssText] readonly attribute CSSStyleDeclaration style; + attribute DOMString selectorText; + readonly attribute CSSStyleDeclaration style; }; -[Exposed=Window] interface CSSImportRule : CSSRule { - readonly attribute USVString href; - [SameObject, PutForwards=mediaText] readonly attribute MediaList media; - [SameObject] readonly attribute CSSStyleSheet styleSheet; + readonly attribute DOMString href; + [PutForwards=mediaText] readonly attribute MediaList media; + readonly attribute CSSStyleSheet styleSheet; }; -[Exposed=Window] -interface CSSGroupingRule : CSSRule { - [SameObject] readonly attribute CSSRuleList cssRules; - unsigned long insertRule(CSSOMString rule, optional unsigned long index = 0); +interface CSSMediaRule : CSSRule { + [PutForwards=mediaText] readonly attribute MediaList media; + readonly attribute CSSRuleList cssRules; + unsigned long insertRule(DOMString rule, unsigned long index); void deleteRule(unsigned long index); }; -[Exposed=Window] -interface CSSPageRule : CSSGroupingRule { - attribute CSSOMString selectorText; - [SameObject, PutForwards=cssText] readonly attribute CSSStyleDeclaration style; +interface CSSFontFaceRule : CSSRule { + readonly attribute CSSStyleDeclaration style; }; -[Exposed=Window] -interface CSSMarginRule : CSSRule { - readonly attribute CSSOMString name; - [SameObject, PutForwards=cssText] readonly attribute CSSStyleDeclaration style; +interface CSSPageRule : CSSRule { + attribute DOMString selectorText; + readonly attribute CSSStyleDeclaration style; }; -[Exposed=Window] interface CSSNamespaceRule : CSSRule { - readonly attribute CSSOMString namespaceURI; - readonly attribute CSSOMString prefix; + readonly attribute DOMString namespaceURI; + readonly attribute DOMString? prefix; }; -[Exposed=Window] interface CSSStyleDeclaration { - [CEReactions] attribute CSSOMString cssText; + attribute DOMString cssText; + readonly attribute unsigned long length; - getter CSSOMString item(unsigned long index); - CSSOMString getPropertyValue(CSSOMString property); - CSSOMString getPropertyPriority(CSSOMString property); - [CEReactions] void setProperty(CSSOMString property, [TreatNullAs=EmptyString] CSSOMString value, [TreatNullAs=EmptyString] optional CSSOMString priority = ""); - [CEReactions] void setPropertyValue(CSSOMString property, [TreatNullAs=EmptyString] CSSOMString value); - [CEReactions] void setPropertyPriority(CSSOMString property, [TreatNullAs=EmptyString] CSSOMString priority); - [CEReactions] CSSOMString removeProperty(CSSOMString property); - readonly attribute CSSRule? parentRule; - [CEReactions] attribute [TreatNullAs=EmptyString] CSSOMString cssFloat; + DOMString item(unsigned long index); + + DOMString getPropertyValue(DOMString property); + DOMString getPropertyPriority(DOMString property); + void setProperty(DOMString property, DOMString value, optional DOMString priority); + DOMString removeProperty(DOMString property); + + readonly attribute CSSStyleDeclarationValue values; + + readonly attribute CSSRule parentRule; + + // CSS Properties + attribute DOMString azimuth; + attribute DOMString background; + attribute DOMString backgroundAttachment; + attribute DOMString backgroundColor; + attribute DOMString backgroundImage; + attribute DOMString backgroundPosition; + attribute DOMString backgroundRepeat; + attribute DOMString border; + attribute DOMString borderCollapse; + attribute DOMString borderColor; + attribute DOMString borderSpacing; + attribute DOMString borderStyle; + attribute DOMString borderTop; + attribute DOMString borderRight; + attribute DOMString borderBottom; + attribute DOMString borderLeft; + attribute DOMString borderTopColor; + attribute DOMString borderRightColor; + attribute DOMString borderBottomColor; + attribute DOMString borderLeftColor; + attribute DOMString borderTopStyle; + attribute DOMString borderRightStyle; + attribute DOMString borderBottomStyle; + attribute DOMString borderLeftStyle; + attribute DOMString borderTopWidth; + attribute DOMString borderRightWidth; + attribute DOMString borderBottomWidth; + attribute DOMString borderLeftWidth; + attribute DOMString borderWidth; + attribute DOMString bottom; + attribute DOMString captionSide; + attribute DOMString clear; + attribute DOMString clip; + attribute DOMString color; + attribute DOMString content; + attribute DOMString counterIncrement; + attribute DOMString counterReset; + attribute DOMString cue; + attribute DOMString cueAfter; + attribute DOMString cueBefore; + attribute DOMString cursor; + attribute DOMString direction; + attribute DOMString display; + attribute DOMString elevation; + attribute DOMString emptyCells; + attribute DOMString cssFloat; + attribute DOMString font; + attribute DOMString fontFamily; + attribute DOMString fontSize; + attribute DOMString fontSizeAdjust; + attribute DOMString fontStretch; + attribute DOMString fontStyle; + attribute DOMString fontVariant; + attribute DOMString fontWeight; + attribute DOMString height; + attribute DOMString left; + attribute DOMString letterSpacing; + attribute DOMString lineHeight; + attribute DOMString listStyle; + attribute DOMString listStyleImage; + attribute DOMString listStylePosition; + attribute DOMString listStyleType; + attribute DOMString margin; + attribute DOMString marginTop; + attribute DOMString marginRight; + attribute DOMString marginBottom; + attribute DOMString marginLeft; + attribute DOMString marks; + attribute DOMString maxHeight; + attribute DOMString maxWidth; + attribute DOMString minHeight; + attribute DOMString minWidth; + attribute DOMString orphans; + attribute DOMString outline; + attribute DOMString outlineColor; + attribute DOMString outlineStyle; + attribute DOMString outlineWidth; + attribute DOMString overflow; + attribute DOMString padding; + attribute DOMString paddingTop; + attribute DOMString paddingRight; + attribute DOMString paddingBottom; + attribute DOMString paddingLeft; + attribute DOMString page; + attribute DOMString pageBreakAfter; + attribute DOMString pageBreakBefore; + attribute DOMString pageBreakInside; + attribute DOMString pause; + attribute DOMString pauseAfter; + attribute DOMString pauseBefore; + attribute DOMString pitch; + attribute DOMString pitchRange; + attribute DOMString playDuring; + attribute DOMString position; + attribute DOMString quotes; + attribute DOMString richness; + attribute DOMString right; + attribute DOMString size; + attribute DOMString speak; + attribute DOMString speakHeader; + attribute DOMString speakNumeral; + attribute DOMString speakPunctuation; + attribute DOMString speechRate; + attribute DOMString stress; + attribute DOMString tableLayout; + attribute DOMString textAlign; + attribute DOMString textDecoration; + attribute DOMString textIndent; + attribute DOMString textShadow; + attribute DOMString textTransform; + attribute DOMString top; + attribute DOMString unicodeBidi; + attribute DOMString verticalAlign; + attribute DOMString visibility; + attribute DOMString voiceFamily; + attribute DOMString volume; + attribute DOMString whiteSpace; + attribute DOMString widows; + attribute DOMString width; + attribute DOMString wordSpacing; + attribute DOMString zIndex; }; -[Exposed=Window, - NoInterfaceObject] -interface ElementCSSInlineStyle { - [SameObject, PutForwards=cssText] readonly attribute CSSStyleDeclaration style; +interface CSSStyleDeclarationValue { + // ... + + // CSS Properties + }; -HTMLElement implements ElementCSSInlineStyle; - -SVGElement implements ElementCSSInlineStyle; - -partial interface Window { - [NewObject] CSSStyleDeclaration getComputedStyle(Element elt, optional CSSOMString? pseudoElt); +interface CSSPropertyValue { + attribute DOMString cssText; }; -[Exposed=Window] -interface CSS { - static CSSOMString escape(CSSOMString ident); +[NoInterfaceObject] interface CSSMapValue { + getter CSSValue (DOMString name); }; + +[NoInterfaceObject] interface CSSPropertyValueList { + readonly attribute CSSValue[] list; +}; + +[NoInterfaceObject] interface CSSComponentValue { + readonly attribute DOMString type; + attribute any value; +}; + +[NoInterfaceObject] interface CSSStringComponentValue { + attribute DOMString string; +}; + +[NoInterfaceObject] interface CSSKeywordComponentValue { + attribute DOMString keyword; +}; + +[NoInterfaceObject] interface CSSIdentifierComponentValue { + attribute DOMString identifier; +}; + +[NoInterfaceObject] interface CSSColorComponentValue { + attribute short red; + attribute short green; + attribute short blue; + attribute float alpha; +}; + +[NoInterfaceObject] interface CSSLengthComponentValue { + attribute float em; + attribute float ex; + attribute float px; + // figure out what to do with absolute lengths +}; + +[NoInterfaceObject] interface CSSPercentageComponentValue { + attribute float percent; +}; + +[NoInterfaceObject] interface CSSURLComponentValue { + attribute DOMString? url; +}; + +[NoInterfaceObject] interface ElementCSSInlineStyle { + readonly attribute CSSStyleDeclaration style; +}; + +//partial interface Window { +// CSSStyleDeclaration getComputedStyle(Element elt); +// CSSStyleDeclaration getComputedStyle(Element elt, DOMString pseudoElt); +//}; diff --git a/testing/web-platform/tests/interfaces/geometry.idl b/testing/web-platform/tests/interfaces/geometry.idl index 556e8a5cdef1..c0aed767344e 100644 --- a/testing/web-platform/tests/interfaces/geometry.idl +++ b/testing/web-platform/tests/interfaces/geometry.idl @@ -12,7 +12,7 @@ interface DOMPointReadOnly { DOMPoint matrixTransform(optional DOMMatrixInit matrix); - [Default] toJSON(); + serializer = { attribute }; }; [Constructor(optional unrestricted double x = 0, optional unrestricted double y = 0, @@ -52,7 +52,7 @@ interface DOMRectReadOnly { readonly attribute unrestricted double bottom; readonly attribute unrestricted double left; - [Default] toJSON(); + serializer = { attribute }; }; [Constructor(optional unrestricted double x = 0, optional unrestricted double y = 0, @@ -97,7 +97,7 @@ interface DOMQuad { [SameObject] readonly attribute DOMPoint p4; [NewObject] DOMRect getBounds(); - [Default] toJSON(); + serializer = { attribute }; }; dictionary DOMQuadInit { @@ -178,7 +178,7 @@ interface DOMMatrixReadOnly { [NewObject] Float64Array toFloat64Array(); [Exposed=Window] stringifier; - [Default] toJSON(); + serializer = { attribute }; }; [Constructor(optional (DOMString or sequence) init), diff --git a/testing/web-platform/tests/interfaces/html.idl b/testing/web-platform/tests/interfaces/html.idl index a372298d7c02..48e41da4e8b7 100644 --- a/testing/web-platform/tests/interfaces/html.idl +++ b/testing/web-platform/tests/interfaces/html.idl @@ -1777,8 +1777,13 @@ interface NavigatorLanguage { [NoInterfaceObject] interface NavigatorContentUtils { + // content handler registration void registerProtocolHandler(DOMString scheme, USVString url, DOMString title); + void registerContentHandler(DOMString mimeType, USVString url, DOMString title); + DOMString isProtocolHandlerRegistered(DOMString scheme, USVString url); + DOMString isContentHandlerRegistered(DOMString mimeType, USVString url); void unregisterProtocolHandler(DOMString scheme, USVString url); + void unregisterContentHandler(DOMString mimeType, USVString url); }; [NoInterfaceObject] diff --git a/testing/web-platform/tests/interfaces/payment-handler.idl b/testing/web-platform/tests/interfaces/payment-handler.idl deleted file mode 100644 index 88d3b1ce6961..000000000000 --- a/testing/web-platform/tests/interfaces/payment-handler.idl +++ /dev/null @@ -1,55 +0,0 @@ -[SecureContext, - Exposed=(Window,Worker)] -interface PaymentManager { - [SameObject] - readonly attribute PaymentInstruments instruments; - [Exposed=Window] static Promise requestPermission(); -}; -[SecureContext, - Exposed=(Window,Worker)] -interface PaymentInstruments { - Promise delete(DOMString instrumentKey); - Promise get(DOMString instrumentKey); - Promise> keys(); - Promise has(DOMString instrumentKey); - Promise set(DOMString instrumentKey, - PaymentInstrument details); - Promise clear(); -}; -dictionary PaymentInstrument { - required DOMString name; - sequence icons; - sequence enabledMethods; - object capabilities; -}; -dictionary ImageObject { - required USVString src; - DOMString sizes; - DOMString type; -}; -[Constructor(DOMString type, PaymentRequestEventInit eventInitDict), - Exposed=ServiceWorker] -interface PaymentRequestEvent : ExtendableEvent { - readonly attribute USVString topLevelOrigin; - readonly attribute USVString paymentRequestOrigin; - readonly attribute DOMString paymentRequestId; - readonly attribute FrozenArray methodData; - readonly attribute object total; - readonly attribute FrozenArray modifiers; - readonly attribute DOMString instrumentKey; - Promise openWindow(USVString url); - void respondWith(Promise handlerResponse); -}; -dictionary PaymentRequestEventInit : ExtendableEventInit { - USVString topLevelOrigin; - USVString paymentRequestOrigin; - DOMString paymentRequestId; - sequence methodData; - PaymentCurrencyAmount total; - sequence modifiers; - DOMString instrumentKey; -}; -dictionary PaymentHandlerResponse { - DOMString methodName; - object details; -}; diff --git a/testing/web-platform/tests/interfaces/payment-request.idl b/testing/web-platform/tests/interfaces/payment-request.idl deleted file mode 100644 index beb6d5ff740f..000000000000 --- a/testing/web-platform/tests/interfaces/payment-request.idl +++ /dev/null @@ -1,114 +0,0 @@ -[Constructor(sequence methodData, PaymentDetailsInit details, optional PaymentOptions options), - SecureContext, - Exposed=Window] -interface PaymentRequest : EventTarget { - Promise show(); - Promise abort(); - Promise canMakePayment(); - - readonly attribute DOMString id; - readonly attribute PaymentAddress? shippingAddress; - readonly attribute DOMString? shippingOption; - readonly attribute PaymentShippingType? shippingType; - - attribute EventHandler onshippingaddresschange; - - attribute EventHandler onshippingoptionchange; -}; -dictionary PaymentMethodData { - required DOMString supportedMethods; - object data; -}; -dictionary PaymentCurrencyAmount { - required DOMString currency; - required DOMString value; - // Note: currencySystem is "at risk" of being removed! - DOMString currencySystem = "urn:iso:std:iso:4217"; -}; -dictionary PaymentDetailsBase { - sequence displayItems; - sequence shippingOptions; - sequence modifiers; -}; -dictionary PaymentDetailsInit : PaymentDetailsBase { - DOMString id; - required PaymentItem total; -}; -dictionary PaymentDetailsUpdate : PaymentDetailsBase { - DOMString error; - PaymentItem total; -}; -dictionary PaymentDetailsModifier { - required DOMString supportedMethods; - PaymentItem total; - sequence additionalDisplayItems; - object data; -}; -enum PaymentShippingType { - "shipping", - "delivery", - "pickup" -}; -dictionary PaymentOptions { - boolean requestPayerName = false; - boolean requestPayerEmail = false; - boolean requestPayerPhone = false; - boolean requestShipping = false; - PaymentShippingType shippingType = "shipping"; -}; -dictionary PaymentItem { - required DOMString label; - required PaymentCurrencyAmount amount; - boolean pending = false; -}; -[SecureContext, - Exposed=Window] -interface PaymentAddress { - [Default] object toJSON(); - readonly attribute DOMString country; - readonly attribute FrozenArray addressLine; - readonly attribute DOMString region; - readonly attribute DOMString city; - readonly attribute DOMString dependentLocality; - readonly attribute DOMString postalCode; - readonly attribute DOMString sortingCode; - readonly attribute DOMString languageCode; - readonly attribute DOMString organization; - readonly attribute DOMString recipient; - readonly attribute DOMString phone; -}; -dictionary PaymentShippingOption { - required DOMString id; - required DOMString label; - required PaymentCurrencyAmount amount; - boolean selected = false; -}; -enum PaymentComplete { - "fail", - "success", - "unknown" -}; -[SecureContext, - Exposed=Window] -interface PaymentResponse { - [Default] object toJSON(); - - readonly attribute DOMString requestId; - readonly attribute DOMString methodName; - readonly attribute object details; - readonly attribute PaymentAddress? shippingAddress; - readonly attribute DOMString? shippingOption; - readonly attribute DOMString? payerName; - readonly attribute DOMString? payerEmail; - readonly attribute DOMString? payerPhone; - - Promise complete(optional PaymentComplete result = "unknown"); -}; -[Constructor(DOMString type, optional PaymentRequestUpdateEventInit eventInitDict), - SecureContext, - Exposed=Window] -interface PaymentRequestUpdateEvent : Event { - void updateWith(Promise detailsPromise); -}; -dictionary PaymentRequestUpdateEventInit : EventInit { -}; diff --git a/testing/web-platform/tests/lint.whitelist b/testing/web-platform/tests/lint.whitelist index 40d2a7dd5f95..f2eb7a6e6e32 100644 --- a/testing/web-platform/tests/lint.whitelist +++ b/testing/web-platform/tests/lint.whitelist @@ -28,7 +28,6 @@ INDENT TABS: XMLHttpRequest/* INDENT TABS: encoding/legacy*/* INDENT TABS: encrypted-media/polyfill/Makefile -TRAILING WHITESPACE: 2dcontext/tools/current-work-canvas.xhtml TRAILING WHITESPACE: app-uri/* TRAILING WHITESPACE: battery-status/* TRAILING WHITESPACE: conformance-checkers/* @@ -152,7 +151,7 @@ SET TIMEOUT: cookies/resources/testharness-helpers.js SET TIMEOUT: common/reftest-wait.js SET TIMEOUT: conformance-checkers/* SET TIMEOUT: content-security-policy/* -SET TIMEOUT: css-fonts/font-display/font-display.html +SET TIMEOUT: css-font-display/font-display.html SET TIMEOUT: encrypted-media/Google/migrated_to_root_disabled/encrypted-media-utils.js SET TIMEOUT: encrypted-media/polyfill/chrome-polyfill.js SET TIMEOUT: encrypted-media/polyfill/clearkey-polyfill.js diff --git a/testing/web-platform/tests/longtask-timing/OWNERS b/testing/web-platform/tests/longtask-timing/OWNERS deleted file mode 100644 index 08ce2f9a493f..000000000000 --- a/testing/web-platform/tests/longtask-timing/OWNERS +++ /dev/null @@ -1,2 +0,0 @@ -@spanicker -@npm1 diff --git a/testing/web-platform/tests/magnetometer/idlharness.https.html b/testing/web-platform/tests/magnetometer/idlharness.https.html index 2f98dda24d09..f32b727065c8 100644 --- a/testing/web-platform/tests/magnetometer/idlharness.https.html +++ b/testing/web-platform/tests/magnetometer/idlharness.https.html @@ -8,20 +8,32 @@ +
    - + - + diff --git a/testing/web-platform/tests/mediacapture-streams/GUM-api.https.html b/testing/web-platform/tests/mediacapture-streams/GUM-api.https.html index 148317017692..176f458c2c29 100644 --- a/testing/web-platform/tests/mediacapture-streams/GUM-api.https.html +++ b/testing/web-platform/tests/mediacapture-streams/GUM-api.https.html @@ -1,7 +1,7 @@ -getUserMedia: test that getUserMedia is present +getUserMedia: test that getUserMedia is present (with or without vendor prefix) @@ -9,14 +9,15 @@

    Description

    This test checks for the presence of the -navigator.mediaDevices.getUserMedia method.

    +navigator.getUserMedia method, taking vendor prefixes into account.

    + diff --git a/testing/web-platform/tests/mediacapture-streams/GUM-deny.https.html b/testing/web-platform/tests/mediacapture-streams/GUM-deny.https.html index 17440996c9fd..f61d62333831 100644 --- a/testing/web-platform/tests/mediacapture-streams/GUM-deny.https.html +++ b/testing/web-platform/tests/mediacapture-streams/GUM-deny.https.html @@ -15,18 +15,22 @@
    + diff --git a/testing/web-platform/tests/mediacapture-streams/GUM-empty-option-param.https.html b/testing/web-platform/tests/mediacapture-streams/GUM-empty-option-param.https.html index c7904cb4c7d7..a543129bbcfd 100644 --- a/testing/web-platform/tests/mediacapture-streams/GUM-empty-option-param.https.html +++ b/testing/web-platform/tests/mediacapture-streams/GUM-empty-option-param.https.html @@ -1,7 +1,7 @@ -getUserMedia({}) rejects with TypeError +getUserMedia({}) aborts with NOT_SUPPORTED_ERR @@ -13,17 +13,20 @@ options parameter raises a NOT_SUPPORTED_ERR exception.

    + + diff --git a/testing/web-platform/tests/mediacapture-streams/GUM-optional-constraint.https.html b/testing/web-platform/tests/mediacapture-streams/GUM-optional-constraint.https.html index becd871ab2a1..7e69ca03fe9f 100644 --- a/testing/web-platform/tests/mediacapture-streams/GUM-optional-constraint.https.html +++ b/testing/web-platform/tests/mediacapture-streams/GUM-optional-constraint.https.html @@ -14,16 +14,18 @@ getUserMedia is handled as optional

    + diff --git a/testing/web-platform/tests/mediacapture-streams/GUM-trivial-constraint.https.html b/testing/web-platform/tests/mediacapture-streams/GUM-trivial-constraint.https.html index 283bcb2c32a4..c24d02b84614 100644 --- a/testing/web-platform/tests/mediacapture-streams/GUM-trivial-constraint.https.html +++ b/testing/web-platform/tests/mediacapture-streams/GUM-trivial-constraint.https.html @@ -14,17 +14,17 @@ constraint (width >=0) in getUserMedia works

    + diff --git a/testing/web-platform/tests/mediacapture-streams/GUM-unknownkey-option-param.https.html b/testing/web-platform/tests/mediacapture-streams/GUM-unknownkey-option-param.https.html index b27927222012..c288c743932d 100644 --- a/testing/web-platform/tests/mediacapture-streams/GUM-unknownkey-option-param.https.html +++ b/testing/web-platform/tests/mediacapture-streams/GUM-unknownkey-option-param.https.html @@ -1,31 +1,37 @@ -getUserMedia({doesnotexist:true}) rejects with TypeError +getUserMedia({doesnotexist:true}) aborts with NOT_SUPPORTED_ERR

    Description

    This test checks that getUserMedia with an unknown value -in the constraints parameter rejects with a TypeError.

    +in the options parameter raises a NOT_SUPPORTED_ERR exception.

    + diff --git a/testing/web-platform/tests/mediacapture-streams/MediaStream-MediaElement-preload-none.https.html b/testing/web-platform/tests/mediacapture-streams/MediaStream-MediaElement-preload-none.https.html index 6015bb7bb2de..6b9da9ce0a2b 100644 --- a/testing/web-platform/tests/mediacapture-streams/MediaStream-MediaElement-preload-none.https.html +++ b/testing/web-platform/tests/mediacapture-streams/MediaStream-MediaElement-preload-none.https.html @@ -6,6 +6,7 @@ +

    When prompted, accept to share your audio and video streams.

    @@ -37,26 +38,23 @@ async_test(function(t) { var aud = document.querySelector("audio"); - navigator.mediaDevices.getUserMedia({audio:true}) - .then(t.step_func(function(stream) - { - testPreloadNone(t, aud, t.step_func(function() - { - aud.src = URL.createObjectURL(stream); - t.add_cleanup(function() { URL.revokeObjectURL(aud.src); }); - })); - }), - t.unreached_func("getUserMedia error callback was invoked.")); + navigator.getUserMedia({audio:true}, t.step_func(function(stream) + { + testPreloadNone(t, aud, t.step_func(function() + { + aud.src = URL.createObjectURL(stream); + t.add_cleanup(function() { URL.revokeObjectURL(aud.src); }); + })); + }), t.unreached_func("getUserMedia error callback was invoked.")); }, "Test that preload 'none' is ignored for MediaStream object URL used as src"); async_test(function(t) { var vid = document.querySelector("video"); - navigator.mediaDevices.getUserMedia({video:true}) - .then(t.step_func(function(stream) - { - testPreloadNone(t, vid, t.step_func(function() { vid.srcObject = stream; })); - }), t.unreached_func("getUserMedia error callback was invoked.")); + navigator.getUserMedia({video:true}, t.step_func(function(stream) + { + testPreloadNone(t, vid, t.step_func(function() { vid.srcObject = stream; })); + }), t.unreached_func("getUserMedia error callback was invoked.")); }, "Test that preload 'none' is ignored for MediaStream used as srcObject"); diff --git a/testing/web-platform/tests/mediacapture-streams/MediaStream-MediaElement-srcObject.https.html b/testing/web-platform/tests/mediacapture-streams/MediaStream-MediaElement-srcObject.https.html index 63442bea25b3..1bdbe3eeeaf1 100644 --- a/testing/web-platform/tests/mediacapture-streams/MediaStream-MediaElement-srcObject.https.html +++ b/testing/web-platform/tests/mediacapture-streams/MediaStream-MediaElement-srcObject.https.html @@ -17,38 +17,38 @@ via the srcObject attribute.

    + diff --git a/testing/web-platform/tests/mediacapture-streams/MediaStream-add-audio-track.https.html b/testing/web-platform/tests/mediacapture-streams/MediaStream-add-audio-track.https.html index e976b162ea9c..e3650aae0201 100644 --- a/testing/web-platform/tests/mediacapture-streams/MediaStream-add-audio-track.https.html +++ b/testing/web-platform/tests/mediacapture-streams/MediaStream-add-audio-track.https.html @@ -14,15 +14,16 @@
    + + - - - - - - diff --git a/testing/web-platform/tests/mediacapture-streams/MediaStream-finished-add.https.html b/testing/web-platform/tests/mediacapture-streams/MediaStream-finished-add.https.html index bfe561af1ad9..a0c4b28b1e7a 100644 --- a/testing/web-platform/tests/mediacapture-streams/MediaStream-finished-add.https.html +++ b/testing/web-platform/tests/mediacapture-streams/MediaStream-finished-add.https.html @@ -16,15 +16,16 @@ MediaStream is allowed.

    + + + diff --git a/testing/web-platform/tests/mediacapture-streams/MediaStream-idl.https.html b/testing/web-platform/tests/mediacapture-streams/MediaStream-idl.https.html index 8e60709cf1b5..21ab468c7143 100644 --- a/testing/web-platform/tests/mediacapture-streams/MediaStream-idl.https.html +++ b/testing/web-platform/tests/mediacapture-streams/MediaStream-idl.https.html @@ -19,39 +19,37 @@ follows the algorithm set in the spec.

    + diff --git a/testing/web-platform/tests/mediacapture-streams/MediaStream-removetrack.https.html b/testing/web-platform/tests/mediacapture-streams/MediaStream-removetrack.https.html index 787af0bbe52f..1a62bedd761b 100644 --- a/testing/web-platform/tests/mediacapture-streams/MediaStream-removetrack.https.html +++ b/testing/web-platform/tests/mediacapture-streams/MediaStream-removetrack.https.html @@ -14,14 +14,15 @@
    + + - + - + diff --git a/testing/web-platform/tests/mediacapture-streams/MediaStreamTrack-end-manual.https.html b/testing/web-platform/tests/mediacapture-streams/MediaStreamTrack-end-manual.https.html index 3500b03bc8c0..6b6b72fc0c18 100644 --- a/testing/web-platform/tests/mediacapture-streams/MediaStreamTrack-end-manual.https.html +++ b/testing/web-platform/tests/mediacapture-streams/MediaStreamTrack-end-manual.https.html @@ -16,10 +16,11 @@ correctly set into inactive state when permission is revoked.

    + + + diff --git a/testing/web-platform/tests/microdata/conformance-requirements/.gitkeep b/testing/web-platform/tests/microdata/conformance-requirements/.gitkeep new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/testing/web-platform/tests/microdata/converting-html-to-other-formats/.gitkeep b/testing/web-platform/tests/microdata/converting-html-to-other-formats/.gitkeep new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/testing/web-platform/tests/microdata/converting-html-to-other-formats/json/.gitkeep b/testing/web-platform/tests/microdata/converting-html-to-other-formats/json/.gitkeep new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/testing/web-platform/tests/microdata/dependencies/.gitkeep b/testing/web-platform/tests/microdata/dependencies/.gitkeep new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/testing/web-platform/tests/microdata/encoding-microdata/.gitkeep b/testing/web-platform/tests/microdata/encoding-microdata/.gitkeep new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/testing/web-platform/tests/microdata/encoding-microdata/associating-names-with-items/.gitkeep b/testing/web-platform/tests/microdata/encoding-microdata/associating-names-with-items/.gitkeep new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/testing/web-platform/tests/microdata/encoding-microdata/items/.gitkeep b/testing/web-platform/tests/microdata/encoding-microdata/items/.gitkeep new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/testing/web-platform/tests/microdata/encoding-microdata/microdata-and-other-namespaces/.gitkeep b/testing/web-platform/tests/microdata/encoding-microdata/microdata-and-other-namespaces/.gitkeep new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/testing/web-platform/tests/microdata/encoding-microdata/names-the-itemprop-attribute/.gitkeep b/testing/web-platform/tests/microdata/encoding-microdata/names-the-itemprop-attribute/.gitkeep new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/testing/web-platform/tests/microdata/encoding-microdata/names-the-itemprop-attribute/original-id.json b/testing/web-platform/tests/microdata/encoding-microdata/names-the-itemprop-attribute/original-id.json new file mode 100644 index 000000000000..144cacfda8bf --- /dev/null +++ b/testing/web-platform/tests/microdata/encoding-microdata/names-the-itemprop-attribute/original-id.json @@ -0,0 +1 @@ +{"original_id":"names:-the-itemprop-attribute"} \ No newline at end of file diff --git a/testing/web-platform/tests/microdata/encoding-microdata/the-microdata-model/.gitkeep b/testing/web-platform/tests/microdata/encoding-microdata/the-microdata-model/.gitkeep new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/testing/web-platform/tests/microdata/encoding-microdata/values/.gitkeep b/testing/web-platform/tests/microdata/encoding-microdata/values/.gitkeep new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/testing/web-platform/tests/microdata/iana/.gitkeep b/testing/web-platform/tests/microdata/iana/.gitkeep new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/testing/web-platform/tests/microdata/introduction/.gitkeep b/testing/web-platform/tests/microdata/introduction/.gitkeep new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/testing/web-platform/tests/microdata/introduction/global-identifiers-for-items/.gitkeep b/testing/web-platform/tests/microdata/introduction/global-identifiers-for-items/.gitkeep new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/testing/web-platform/tests/microdata/introduction/overview/.gitkeep b/testing/web-platform/tests/microdata/introduction/overview/.gitkeep new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/testing/web-platform/tests/microdata/introduction/selecting-names-when-defining-vocabularies/.gitkeep b/testing/web-platform/tests/microdata/introduction/selecting-names-when-defining-vocabularies/.gitkeep new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/testing/web-platform/tests/microdata/introduction/the-basic-syntax/.gitkeep b/testing/web-platform/tests/microdata/introduction/the-basic-syntax/.gitkeep new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/testing/web-platform/tests/microdata/introduction/typed-items/.gitkeep b/testing/web-platform/tests/microdata/introduction/typed-items/.gitkeep new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/testing/web-platform/tests/microdata/introduction/using-the-microdata-dom-api/.gitkeep b/testing/web-platform/tests/microdata/introduction/using-the-microdata-dom-api/.gitkeep new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/testing/web-platform/tests/microdata/terminology/.gitkeep b/testing/web-platform/tests/microdata/terminology/.gitkeep new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/testing/web-platform/tests/orientation-sensor/idlharness.https.html b/testing/web-platform/tests/orientation-sensor/idlharness.https.html index 82ab9b3851b3..92ed7d4bd550 100644 --- a/testing/web-platform/tests/orientation-sensor/idlharness.https.html +++ b/testing/web-platform/tests/orientation-sensor/idlharness.https.html @@ -8,20 +8,32 @@ +
    - + - + diff --git a/testing/web-platform/tests/paint-timing/OWNERS b/testing/web-platform/tests/paint-timing/OWNERS deleted file mode 100644 index b544ce114059..000000000000 --- a/testing/web-platform/tests/paint-timing/OWNERS +++ /dev/null @@ -1,2 +0,0 @@ -@spanicker -@tdresser diff --git a/testing/web-platform/tests/paint-timing/basetest.html b/testing/web-platform/tests/paint-timing/basetest.html deleted file mode 100644 index 7f84566d9a86..000000000000 --- a/testing/web-platform/tests/paint-timing/basetest.html +++ /dev/null @@ -1,46 +0,0 @@ - - -Performance Paint Timing Test - - - - -
    - - - - diff --git a/testing/web-platform/tests/paint-timing/first-contentful-bg-image.html b/testing/web-platform/tests/paint-timing/first-contentful-bg-image.html deleted file mode 100644 index ddcc78fbe55e..000000000000 --- a/testing/web-platform/tests/paint-timing/first-contentful-bg-image.html +++ /dev/null @@ -1,41 +0,0 @@ - - -Performance Paint Timing Test: FCP due to background image - - - - -
    - - -