aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/wpt/metadata/FileAPI/historical.https.html.ini4
-rw-r--r--tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini4
-rw-r--r--tests/wpt/metadata/MANIFEST.json2012
-rw-r--r--tests/wpt/metadata/css/CSS2/floats/zero-width-floats.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-values/vh_not_refreshing_on_chrome.html.ini2
-rw-r--r--tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-string.tentative.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-undefined.tentative.html.ini5
-rw-r--r--tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/010.html.ini4
-rw-r--r--tests/wpt/metadata/html/webappapis/scripting/events/messageevent-constructor.https.html.ini3
-rw-r--r--tests/wpt/metadata/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-serviceworker.https.html.ini3
-rw-r--r--tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.serviceworker.https.html.ini3
-rw-r--r--tests/wpt/web-platform-tests/README.md2
-rw-r--r--tests/wpt/web-platform-tests/accname/OWNERS2
-rw-r--r--tests/wpt/web-platform-tests/accname/description_from_content_of_describedby_element-manual.html92
-rw-r--r--tests/wpt/web-platform-tests/accname/description_from_content_of_describedby_element_which_is_hidden-manual.html100
-rw-r--r--tests/wpt/web-platform-tests/accname/description_test_case_664-manual.html74
-rw-r--r--tests/wpt/web-platform-tests/accname/description_test_case_665-manual.html74
-rw-r--r--tests/wpt/web-platform-tests/accname/description_test_case_666-manual.html74
-rw-r--r--tests/wpt/web-platform-tests/accname/foo.jpgbin0 -> 6735 bytes
-rw-r--r--tests/wpt/web-platform-tests/accname/name_checkbox-label-embedded-combobox-manual.html82
-rw-r--r--tests/wpt/web-platform-tests/accname/name_checkbox-label-embedded-menu-manual.html79
-rw-r--r--tests/wpt/web-platform-tests/accname/name_checkbox-label-embedded-select-manual.html79
-rw-r--r--tests/wpt/web-platform-tests/accname/name_checkbox-label-embedded-slider-manual.html73
-rw-r--r--tests/wpt/web-platform-tests/accname/name_checkbox-label-embedded-spinbutton-manual.html73
-rw-r--r--tests/wpt/web-platform-tests/accname/name_checkbox-title-manual.html71
-rw-r--r--tests/wpt/web-platform-tests/accname/name_file-label-embedded-combobox-manual.html82
-rw-r--r--tests/wpt/web-platform-tests/accname/name_file-label-embedded-menu-manual.html79
-rw-r--r--tests/wpt/web-platform-tests/accname/name_file-label-embedded-select-manual.html79
-rw-r--r--tests/wpt/web-platform-tests/accname/name_file-label-embedded-slider-manual.html73
-rw-r--r--tests/wpt/web-platform-tests/accname/name_file-label-embedded-spinbutton-manual.html73
-rw-r--r--tests/wpt/web-platform-tests/accname/name_file-title-manual.html71
-rw-r--r--tests/wpt/web-platform-tests/accname/name_from_content-manual.html89
-rw-r--r--tests/wpt/web-platform-tests/accname/name_from_content_of_label-manual.html90
-rw-r--r--tests/wpt/web-platform-tests/accname/name_from_content_of_labelledby_element-manual.html90
-rw-r--r--tests/wpt/web-platform-tests/accname/name_from_content_of_labelledby_elements_one_of_which_is_hidden-manual.html100
-rw-r--r--tests/wpt/web-platform-tests/accname/name_image-title-manual.html71
-rw-r--r--tests/wpt/web-platform-tests/accname/name_password-label-embedded-combobox-manual.html82
-rw-r--r--tests/wpt/web-platform-tests/accname/name_password-label-embedded-menu-manual.html79
-rw-r--r--tests/wpt/web-platform-tests/accname/name_password-label-embedded-select-manual.html79
-rw-r--r--tests/wpt/web-platform-tests/accname/name_password-label-embedded-slider-manual.html73
-rw-r--r--tests/wpt/web-platform-tests/accname/name_password-label-embedded-spinbutton-manual.html73
-rw-r--r--tests/wpt/web-platform-tests/accname/name_password-title-manual.html71
-rw-r--r--tests/wpt/web-platform-tests/accname/name_radio-label-embedded-combobox-manual.html82
-rw-r--r--tests/wpt/web-platform-tests/accname/name_radio-label-embedded-menu-manual.html79
-rw-r--r--tests/wpt/web-platform-tests/accname/name_radio-label-embedded-select-manual.html79
-rw-r--r--tests/wpt/web-platform-tests/accname/name_radio-label-embedded-slider-manual.html73
-rw-r--r--tests/wpt/web-platform-tests/accname/name_radio-label-embedded-spinbutton-manual.html73
-rw-r--r--tests/wpt/web-platform-tests/accname/name_radio-title-manual.html71
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_539-manual.html71
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_540-manual.html72
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_541-manual.html72
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_543-manual.html71
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_544-manual.html71
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_545-manual.html71
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_546-manual.html72
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_547-manual.html75
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_548-manual.html78
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_549-manual.html76
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_550-manual.html76
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_551-manual.html71
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_552-manual.html75
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_553-manual.html75
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_556-manual.html71
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_557-manual.html71
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_558-manual.html72
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_559-manual.html71
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_560-manual.html72
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_561-manual.html71
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_562-manual.html74
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_563-manual.html72
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_564-manual.html73
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_565-manual.html74
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_566-manual.html74
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_596-manual.html72
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_597-manual.html71
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_598-manual.html72
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_599-manual.html73
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_600-manual.html71
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_601-manual.html71
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_602-manual.html72
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_603-manual.html72
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_604-manual.html71
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_605-manual.html72
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_606-manual.html72
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_607-manual.html71
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_608-manual.html71
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_609-manual.html74
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_610-manual.html72
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_611-manual.html72
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_612-manual.html72
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_613-manual.html72
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_614-manual.html72
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_615-manual.html72
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_616-manual.html72
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_617-manual.html72
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_618-manual.html72
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_619-manual.html72
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_620-manual.html72
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_621-manual.html72
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_659-manual.html77
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_660-manual.html77
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_661-manual.html77
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_662-manual.html77
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_663-manual.html77
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_663a-manual.html77
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_721-manual.html72
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_723-manual.html72
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_724-manual.html72
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_725-manual.html72
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_726-manual.html72
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_727-manual.html75
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_728-manual.html75
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_729-manual.html75
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_730-manual.html75
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_731-manual.html75
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_733-manual.html78
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_734-manual.html78
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_735-manual.html78
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_736-manual.html78
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_737-manual.html78
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_738-manual.html76
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_739-manual.html76
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_740-manual.html76
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_741-manual.html76
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_742-manual.html76
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_743-manual.html76
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_744-manual.html76
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_745-manual.html76
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_746-manual.html76
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_747-manual.html76
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_748-manual.html71
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_749-manual.html71
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_750-manual.html71
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_751-manual.html71
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_752-manual.html71
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_753-manual.html75
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_754-manual.html75
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_755-manual.html75
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_756-manual.html75
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_757-manual.html75
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_758-manual.html75
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_759-manual.html75
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_760-manual.html75
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_761-manual.html75
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_762-manual.html75
-rw-r--r--tests/wpt/web-platform-tests/accname/name_text-label-embedded-combobox-manual.html82
-rw-r--r--tests/wpt/web-platform-tests/accname/name_text-label-embedded-menu-manual.html79
-rw-r--r--tests/wpt/web-platform-tests/accname/name_text-label-embedded-select-manual.html79
-rw-r--r--tests/wpt/web-platform-tests/accname/name_text-label-embedded-slider-manual.html73
-rw-r--r--tests/wpt/web-platform-tests/accname/name_text-label-embedded-spinbutton-manual.html73
-rw-r--r--tests/wpt/web-platform-tests/accname/name_text-title-manual.html71
-rw-r--r--tests/wpt/web-platform-tests/accname/test.pngbin0 -> 1913 bytes
-rw-r--r--tests/wpt/web-platform-tests/beacon/headers/header-content-type.html48
-rw-r--r--tests/wpt/web-platform-tests/cors/image-tainting-in-cross-origin-iframe.sub.html23
-rw-r--r--tests/wpt/web-platform-tests/cors/resources/image-tainting-checker.sub.html22
-rw-r--r--tests/wpt/web-platform-tests/css/CSS2/floats/zero-width-floats.html12
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/font-shorthand-serialization-001.html19
-rw-r--r--tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-absolute-ref.html27
-rw-r--r--tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-absolute.https.html73
-rw-r--r--tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-flex-ref.html21
-rw-r--r--tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-flex.https.html61
-rw-r--r--tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-floats-ref.html26
-rw-r--r--tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-floats.https.html57
-rw-r--r--tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-inflow-ref.html13
-rw-r--r--tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-inflow.https.html63
-rw-r--r--tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-negative-ref.html11
-rw-r--r--tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-negative.https.html51
-rw-r--r--tests/wpt/web-platform-tests/css/css-layout-api/fallback-constructor-error.https.html51
-rw-r--r--tests/wpt/web-platform-tests/css/css-layout-api/fallback-layout-error.https.html50
-rw-r--r--tests/wpt/web-platform-tests/css/css-layout-api/fallback-layout-return.https.html50
-rw-r--r--tests/wpt/web-platform-tests/css/css-layout-api/fallback-ref.html11
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-serialization/cssTransformValue.tentative.html5
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssUnparsedValue.html41
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/border-width.html21
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/height.html4
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/padding.html10
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/resources/testsuite.js74
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/width.html10
-rw-r--r--tests/wpt/web-platform-tests/dom/events/event-disabled-dynamic.html21
-rw-r--r--tests/wpt/web-platform-tests/fetch/nosniff/script.html2
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-string.tentative.html28
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-undefined.tentative.html25
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/support/iframe-and-links.html18
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/support/set-child-loaded.html5
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/forms/textfieldselection/selection-start-end.html2
-rw-r--r--tests/wpt/web-platform-tests/images/blue-png-cachable.py13
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/activation.https.html18
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/detached-context.https.html21
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/embed-and-object-are-not-intercepted.https.html51
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/multipart-image.https.html67
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/embed-and-object-are-not-intercepted-worker.js8
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/embed-is-not-intercepted-iframe.html18
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/embedded-content-from-server.html6
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/embedded-content-from-service-worker.html7
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/multipart-image-iframe.html19
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/multipart-image-worker.js21
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/multipart-image.py23
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/object-is-not-intercepted-iframe.html18
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/sandboxed-iframe-fetch-event-iframe.html91
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/sandboxed-iframe-fetch-event-iframe.py13
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/sandboxed-iframe-fetch-event-worker.js1
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/test-helpers.sub.js14
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/sandboxed-iframe-fetch-event.https.html527
-rw-r--r--tests/wpt/web-platform-tests/streams/piping/error-propagation-forward.js48
-rw-r--r--tests/wpt/web-platform-tests/streams/readable-byte-streams/construct-byob-request.dedicatedworker.html11
-rw-r--r--tests/wpt/web-platform-tests/streams/readable-byte-streams/construct-byob-request.html10
-rw-r--r--tests/wpt/web-platform-tests/streams/readable-byte-streams/construct-byob-request.js82
-rw-r--r--tests/wpt/web-platform-tests/streams/readable-byte-streams/construct-byob-request.serviceworker.https.html12
-rw-r--r--tests/wpt/web-platform-tests/streams/readable-byte-streams/construct-byob-request.sharedworker.html11
-rw-r--r--tests/wpt/web-platform-tests/streams/readable-byte-streams/general.html1
-rw-r--r--tests/wpt/web-platform-tests/streams/readable-byte-streams/general.js88
-rw-r--r--tests/wpt/web-platform-tests/tools/manifest/manifest.py12
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/MANIFEST.in1
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/setup.py1
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/firefox.py5
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/sauce.py21
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/servo.py2
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/config.json7
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/environment.py40
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/font.py5
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/browsers/test_sauce.py32
-rw-r--r--tests/wpt/web-platform-tests/web-animations/animation-model/combining-effects/applying-the-composited-result.html29
-rw-r--r--tests/wpt/web-platform-tests/web-animations/interfaces/Animation/finish.html246
-rw-r--r--tests/wpt/web-platform-tests/web-animations/interfaces/Animation/idlharness.html1
-rw-r--r--tests/wpt/web-platform-tests/web-animations/interfaces/Animation/playbackRate.html84
-rw-r--r--tests/wpt/web-platform-tests/web-animations/timing-model/animations/canceling-an-animation.html33
-rw-r--r--tests/wpt/web-platform-tests/web-animations/timing-model/animations/finishing-an-animation.html271
-rw-r--r--tests/wpt/web-platform-tests/web-animations/timing-model/animations/pausing-an-animation.html31
-rw-r--r--tests/wpt/web-platform-tests/web-animations/timing-model/animations/play-states.html2
-rw-r--r--tests/wpt/web-platform-tests/web-animations/timing-model/animations/playing-an-animation.html26
-rw-r--r--tests/wpt/web-platform-tests/web-animations/timing-model/animations/reversing-an-animation.html91
-rw-r--r--tests/wpt/web-platform-tests/web-animations/timing-model/animations/seamlessly-updating-the-playback-rate-of-an-animation.html142
-rw-r--r--tests/wpt/web-platform-tests/web-animations/timing-model/animations/setting-the-current-time-of-an-animation.html38
-rw-r--r--tests/wpt/web-platform-tests/web-animations/timing-model/animations/setting-the-playback-rate-of-an-animation.html61
-rw-r--r--tests/wpt/web-platform-tests/web-animations/timing-model/animations/setting-the-start-time-of-an-animation.html (renamed from tests/wpt/web-platform-tests/web-animations/timing-model/animations/set-the-animation-start-time.html)82
-rw-r--r--tests/wpt/web-platform-tests/web-animations/timing-model/animations/setting-the-target-effect-of-an-animation.html (renamed from tests/wpt/web-platform-tests/web-animations/timing-model/animations/set-the-target-effect-of-an-animation.html)42
-rw-r--r--tests/wpt/web-platform-tests/web-animations/timing-model/animations/setting-the-timeline-of-an-animation.html (renamed from tests/wpt/web-platform-tests/web-animations/timing-model/animations/set-the-timeline-of-an-animation.html)41
-rw-r--r--tests/wpt/web-platform-tests/web-animations/timing-model/animations/the-current-time-of-an-animation.html (renamed from tests/wpt/web-platform-tests/web-animations/timing-model/animations/current-time.html)20
-rw-r--r--tests/wpt/web-platform-tests/web-animations/timing-model/animations/updating-the-finished-state.html315
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-exponentialRampToValueAtTime.html117
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-linearRampToValueAtTime.html117
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-setTargetAtTime.html127
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-setValueAtTime.html126
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-setValueCurveAtTime.html114
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-test.js29
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/interface.html49
246 files changed, 15523 insertions, 1322 deletions
diff --git a/tests/wpt/metadata/FileAPI/historical.https.html.ini b/tests/wpt/metadata/FileAPI/historical.https.html.ini
new file mode 100644
index 00000000000..f71e37af0a5
--- /dev/null
+++ b/tests/wpt/metadata/FileAPI/historical.https.html.ini
@@ -0,0 +1,4 @@
+[historical.https.html]
+ [Historical features]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini b/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini
index e363bfabdfc..e76908fb6ca 100644
--- a/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini
+++ b/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini
@@ -1,8 +1,4 @@
[url-in-tags-revoke.window.html]
- expected: TIMEOUT
[Fetching a blob URL immediately before revoking it works in an iframe.]
expected: FAIL
- [Fetching a blob URL immediately before revoking it works in <script> tags.]
- expected: TIMEOUT
-
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json
index 942f4d82c11..bca16f84d3c 100644
--- a/tests/wpt/metadata/MANIFEST.json
+++ b/tests/wpt/metadata/MANIFEST.json
@@ -133,6 +133,828 @@
{}
]
],
+ "accname/description_from_content_of_describedby_element-manual.html": [
+ [
+ "/accname/description_from_content_of_describedby_element-manual.html",
+ {}
+ ]
+ ],
+ "accname/description_from_content_of_describedby_element_which_is_hidden-manual.html": [
+ [
+ "/accname/description_from_content_of_describedby_element_which_is_hidden-manual.html",
+ {}
+ ]
+ ],
+ "accname/description_test_case_664-manual.html": [
+ [
+ "/accname/description_test_case_664-manual.html",
+ {}
+ ]
+ ],
+ "accname/description_test_case_665-manual.html": [
+ [
+ "/accname/description_test_case_665-manual.html",
+ {}
+ ]
+ ],
+ "accname/description_test_case_666-manual.html": [
+ [
+ "/accname/description_test_case_666-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_checkbox-label-embedded-combobox-manual.html": [
+ [
+ "/accname/name_checkbox-label-embedded-combobox-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_checkbox-label-embedded-menu-manual.html": [
+ [
+ "/accname/name_checkbox-label-embedded-menu-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_checkbox-label-embedded-select-manual.html": [
+ [
+ "/accname/name_checkbox-label-embedded-select-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_checkbox-label-embedded-slider-manual.html": [
+ [
+ "/accname/name_checkbox-label-embedded-slider-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_checkbox-label-embedded-spinbutton-manual.html": [
+ [
+ "/accname/name_checkbox-label-embedded-spinbutton-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_checkbox-title-manual.html": [
+ [
+ "/accname/name_checkbox-title-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_file-label-embedded-combobox-manual.html": [
+ [
+ "/accname/name_file-label-embedded-combobox-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_file-label-embedded-menu-manual.html": [
+ [
+ "/accname/name_file-label-embedded-menu-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_file-label-embedded-select-manual.html": [
+ [
+ "/accname/name_file-label-embedded-select-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_file-label-embedded-slider-manual.html": [
+ [
+ "/accname/name_file-label-embedded-slider-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_file-label-embedded-spinbutton-manual.html": [
+ [
+ "/accname/name_file-label-embedded-spinbutton-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_file-title-manual.html": [
+ [
+ "/accname/name_file-title-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_from_content-manual.html": [
+ [
+ "/accname/name_from_content-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_from_content_of_label-manual.html": [
+ [
+ "/accname/name_from_content_of_label-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_from_content_of_labelledby_element-manual.html": [
+ [
+ "/accname/name_from_content_of_labelledby_element-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_from_content_of_labelledby_elements_one_of_which_is_hidden-manual.html": [
+ [
+ "/accname/name_from_content_of_labelledby_elements_one_of_which_is_hidden-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_image-title-manual.html": [
+ [
+ "/accname/name_image-title-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_password-label-embedded-combobox-manual.html": [
+ [
+ "/accname/name_password-label-embedded-combobox-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_password-label-embedded-menu-manual.html": [
+ [
+ "/accname/name_password-label-embedded-menu-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_password-label-embedded-select-manual.html": [
+ [
+ "/accname/name_password-label-embedded-select-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_password-label-embedded-slider-manual.html": [
+ [
+ "/accname/name_password-label-embedded-slider-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_password-label-embedded-spinbutton-manual.html": [
+ [
+ "/accname/name_password-label-embedded-spinbutton-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_password-title-manual.html": [
+ [
+ "/accname/name_password-title-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_radio-label-embedded-combobox-manual.html": [
+ [
+ "/accname/name_radio-label-embedded-combobox-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_radio-label-embedded-menu-manual.html": [
+ [
+ "/accname/name_radio-label-embedded-menu-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_radio-label-embedded-select-manual.html": [
+ [
+ "/accname/name_radio-label-embedded-select-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_radio-label-embedded-slider-manual.html": [
+ [
+ "/accname/name_radio-label-embedded-slider-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_radio-label-embedded-spinbutton-manual.html": [
+ [
+ "/accname/name_radio-label-embedded-spinbutton-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_radio-title-manual.html": [
+ [
+ "/accname/name_radio-title-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_539-manual.html": [
+ [
+ "/accname/name_test_case_539-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_540-manual.html": [
+ [
+ "/accname/name_test_case_540-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_541-manual.html": [
+ [
+ "/accname/name_test_case_541-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_543-manual.html": [
+ [
+ "/accname/name_test_case_543-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_544-manual.html": [
+ [
+ "/accname/name_test_case_544-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_545-manual.html": [
+ [
+ "/accname/name_test_case_545-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_546-manual.html": [
+ [
+ "/accname/name_test_case_546-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_547-manual.html": [
+ [
+ "/accname/name_test_case_547-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_548-manual.html": [
+ [
+ "/accname/name_test_case_548-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_549-manual.html": [
+ [
+ "/accname/name_test_case_549-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_550-manual.html": [
+ [
+ "/accname/name_test_case_550-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_551-manual.html": [
+ [
+ "/accname/name_test_case_551-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_552-manual.html": [
+ [
+ "/accname/name_test_case_552-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_553-manual.html": [
+ [
+ "/accname/name_test_case_553-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_556-manual.html": [
+ [
+ "/accname/name_test_case_556-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_557-manual.html": [
+ [
+ "/accname/name_test_case_557-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_558-manual.html": [
+ [
+ "/accname/name_test_case_558-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_559-manual.html": [
+ [
+ "/accname/name_test_case_559-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_560-manual.html": [
+ [
+ "/accname/name_test_case_560-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_561-manual.html": [
+ [
+ "/accname/name_test_case_561-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_562-manual.html": [
+ [
+ "/accname/name_test_case_562-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_563-manual.html": [
+ [
+ "/accname/name_test_case_563-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_564-manual.html": [
+ [
+ "/accname/name_test_case_564-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_565-manual.html": [
+ [
+ "/accname/name_test_case_565-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_566-manual.html": [
+ [
+ "/accname/name_test_case_566-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_596-manual.html": [
+ [
+ "/accname/name_test_case_596-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_597-manual.html": [
+ [
+ "/accname/name_test_case_597-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_598-manual.html": [
+ [
+ "/accname/name_test_case_598-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_599-manual.html": [
+ [
+ "/accname/name_test_case_599-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_600-manual.html": [
+ [
+ "/accname/name_test_case_600-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_601-manual.html": [
+ [
+ "/accname/name_test_case_601-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_602-manual.html": [
+ [
+ "/accname/name_test_case_602-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_603-manual.html": [
+ [
+ "/accname/name_test_case_603-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_604-manual.html": [
+ [
+ "/accname/name_test_case_604-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_605-manual.html": [
+ [
+ "/accname/name_test_case_605-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_606-manual.html": [
+ [
+ "/accname/name_test_case_606-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_607-manual.html": [
+ [
+ "/accname/name_test_case_607-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_608-manual.html": [
+ [
+ "/accname/name_test_case_608-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_609-manual.html": [
+ [
+ "/accname/name_test_case_609-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_610-manual.html": [
+ [
+ "/accname/name_test_case_610-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_611-manual.html": [
+ [
+ "/accname/name_test_case_611-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_612-manual.html": [
+ [
+ "/accname/name_test_case_612-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_613-manual.html": [
+ [
+ "/accname/name_test_case_613-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_614-manual.html": [
+ [
+ "/accname/name_test_case_614-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_615-manual.html": [
+ [
+ "/accname/name_test_case_615-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_616-manual.html": [
+ [
+ "/accname/name_test_case_616-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_617-manual.html": [
+ [
+ "/accname/name_test_case_617-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_618-manual.html": [
+ [
+ "/accname/name_test_case_618-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_619-manual.html": [
+ [
+ "/accname/name_test_case_619-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_620-manual.html": [
+ [
+ "/accname/name_test_case_620-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_621-manual.html": [
+ [
+ "/accname/name_test_case_621-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_659-manual.html": [
+ [
+ "/accname/name_test_case_659-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_660-manual.html": [
+ [
+ "/accname/name_test_case_660-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_661-manual.html": [
+ [
+ "/accname/name_test_case_661-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_662-manual.html": [
+ [
+ "/accname/name_test_case_662-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_663-manual.html": [
+ [
+ "/accname/name_test_case_663-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_663a-manual.html": [
+ [
+ "/accname/name_test_case_663a-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_721-manual.html": [
+ [
+ "/accname/name_test_case_721-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_723-manual.html": [
+ [
+ "/accname/name_test_case_723-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_724-manual.html": [
+ [
+ "/accname/name_test_case_724-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_725-manual.html": [
+ [
+ "/accname/name_test_case_725-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_726-manual.html": [
+ [
+ "/accname/name_test_case_726-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_727-manual.html": [
+ [
+ "/accname/name_test_case_727-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_728-manual.html": [
+ [
+ "/accname/name_test_case_728-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_729-manual.html": [
+ [
+ "/accname/name_test_case_729-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_730-manual.html": [
+ [
+ "/accname/name_test_case_730-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_731-manual.html": [
+ [
+ "/accname/name_test_case_731-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_733-manual.html": [
+ [
+ "/accname/name_test_case_733-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_734-manual.html": [
+ [
+ "/accname/name_test_case_734-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_735-manual.html": [
+ [
+ "/accname/name_test_case_735-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_736-manual.html": [
+ [
+ "/accname/name_test_case_736-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_737-manual.html": [
+ [
+ "/accname/name_test_case_737-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_738-manual.html": [
+ [
+ "/accname/name_test_case_738-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_739-manual.html": [
+ [
+ "/accname/name_test_case_739-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_740-manual.html": [
+ [
+ "/accname/name_test_case_740-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_741-manual.html": [
+ [
+ "/accname/name_test_case_741-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_742-manual.html": [
+ [
+ "/accname/name_test_case_742-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_743-manual.html": [
+ [
+ "/accname/name_test_case_743-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_744-manual.html": [
+ [
+ "/accname/name_test_case_744-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_745-manual.html": [
+ [
+ "/accname/name_test_case_745-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_746-manual.html": [
+ [
+ "/accname/name_test_case_746-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_747-manual.html": [
+ [
+ "/accname/name_test_case_747-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_748-manual.html": [
+ [
+ "/accname/name_test_case_748-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_749-manual.html": [
+ [
+ "/accname/name_test_case_749-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_750-manual.html": [
+ [
+ "/accname/name_test_case_750-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_751-manual.html": [
+ [
+ "/accname/name_test_case_751-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_752-manual.html": [
+ [
+ "/accname/name_test_case_752-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_753-manual.html": [
+ [
+ "/accname/name_test_case_753-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_754-manual.html": [
+ [
+ "/accname/name_test_case_754-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_755-manual.html": [
+ [
+ "/accname/name_test_case_755-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_756-manual.html": [
+ [
+ "/accname/name_test_case_756-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_757-manual.html": [
+ [
+ "/accname/name_test_case_757-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_758-manual.html": [
+ [
+ "/accname/name_test_case_758-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_759-manual.html": [
+ [
+ "/accname/name_test_case_759-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_760-manual.html": [
+ [
+ "/accname/name_test_case_760-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_761-manual.html": [
+ [
+ "/accname/name_test_case_761-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_test_case_762-manual.html": [
+ [
+ "/accname/name_test_case_762-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_text-label-embedded-combobox-manual.html": [
+ [
+ "/accname/name_text-label-embedded-combobox-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_text-label-embedded-menu-manual.html": [
+ [
+ "/accname/name_text-label-embedded-menu-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_text-label-embedded-select-manual.html": [
+ [
+ "/accname/name_text-label-embedded-select-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_text-label-embedded-slider-manual.html": [
+ [
+ "/accname/name_text-label-embedded-slider-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_text-label-embedded-spinbutton-manual.html": [
+ [
+ "/accname/name_text-label-embedded-spinbutton-manual.html",
+ {}
+ ]
+ ],
+ "accname/name_text-title-manual.html": [
+ [
+ "/accname/name_text-title-manual.html",
+ {}
+ ]
+ ],
"ambient-light/AmbientLightSensor_onerror-manual.https.html": [
[
"/ambient-light/AmbientLightSensor_onerror-manual.https.html",
@@ -48471,6 +49293,18 @@
{}
]
],
+ "css/CSS2/floats/zero-width-floats.html": [
+ [
+ "/css/CSS2/floats/zero-width-floats.html",
+ [
+ [
+ "/css/reference/ref-filled-green-200px-square.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/CSS2/fonts/font-003.xht": [
[
"/css/CSS2/fonts/font-003.xht",
@@ -116387,6 +117221,66 @@
{}
]
],
+ "css/css-layout-api/auto-block-size-absolute.https.html": [
+ [
+ "/css/css-layout-api/auto-block-size-absolute.https.html",
+ [
+ [
+ "/css/css-layout-api/auto-block-size-absolute-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-layout-api/auto-block-size-flex.https.html": [
+ [
+ "/css/css-layout-api/auto-block-size-flex.https.html",
+ [
+ [
+ "/css/css-layout-api/auto-block-size-flex-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-layout-api/auto-block-size-floats.https.html": [
+ [
+ "/css/css-layout-api/auto-block-size-floats.https.html",
+ [
+ [
+ "/css/css-layout-api/auto-block-size-floats-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-layout-api/auto-block-size-inflow.https.html": [
+ [
+ "/css/css-layout-api/auto-block-size-inflow.https.html",
+ [
+ [
+ "/css/css-layout-api/auto-block-size-inflow-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-layout-api/auto-block-size-negative.https.html": [
+ [
+ "/css/css-layout-api/auto-block-size-negative.https.html",
+ [
+ [
+ "/css/css-layout-api/auto-block-size-negative-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-layout-api/box-tree-registered.https.html": [
[
"/css/css-layout-api/box-tree-registered.https.html",
@@ -116411,6 +117305,42 @@
{}
]
],
+ "css/css-layout-api/fallback-constructor-error.https.html": [
+ [
+ "/css/css-layout-api/fallback-constructor-error.https.html",
+ [
+ [
+ "/css/css-layout-api/fallback-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-layout-api/fallback-layout-error.https.html": [
+ [
+ "/css/css-layout-api/fallback-layout-error.https.html",
+ [
+ [
+ "/css/css-layout-api/fallback-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-layout-api/fallback-layout-return.https.html": [
+ [
+ "/css/css-layout-api/fallback-layout-return.https.html",
+ [
+ [
+ "/css/css-layout-api/fallback-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-lists/counter-increment-inside-display-contents.html": [
[
"/css/css-lists/counter-increment-inside-display-contents.html",
@@ -185968,6 +186898,21 @@
{}
]
],
+ "accname/OWNERS": [
+ [
+ {}
+ ]
+ ],
+ "accname/foo.jpg": [
+ [
+ {}
+ ]
+ ],
+ "accname/test.png": [
+ [
+ {}
+ ]
+ ],
"acid/README.md": [
[
{}
@@ -212178,6 +213123,11 @@
{}
]
],
+ "cors/resources/image-tainting-checker.sub.html": [
+ [
+ {}
+ ]
+ ],
"cors/resources/preflight.py": [
[
{}
@@ -246133,6 +247083,31 @@
{}
]
],
+ "css/css-layout-api/auto-block-size-absolute-ref.html": [
+ [
+ {}
+ ]
+ ],
+ "css/css-layout-api/auto-block-size-flex-ref.html": [
+ [
+ {}
+ ]
+ ],
+ "css/css-layout-api/auto-block-size-floats-ref.html": [
+ [
+ {}
+ ]
+ ],
+ "css/css-layout-api/auto-block-size-inflow-ref.html": [
+ [
+ {}
+ ]
+ ],
+ "css/css-layout-api/auto-block-size-negative-ref.html": [
+ [
+ {}
+ ]
+ ],
"css/css-layout-api/box-tree-registered-ref.html": [
[
{}
@@ -246143,6 +247118,11 @@
{}
]
],
+ "css/css-layout-api/fallback-ref.html": [
+ [
+ {}
+ ]
+ ],
"css/css-lists/OWNERS": [
[
{}
@@ -271043,6 +272023,16 @@
{}
]
],
+ "html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/support/iframe-and-links.html": [
+ [
+ {}
+ ]
+ ],
+ "html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/support/set-child-loaded.html": [
+ [
+ {}
+ ]
+ ],
"html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit-1.html": [
[
{}
@@ -282733,6 +283723,11 @@
{}
]
],
+ "images/blue-png-cachable.py": [
+ [
+ {}
+ ]
+ ],
"images/blue.png": [
[
{}
@@ -289508,6 +290503,26 @@
{}
]
],
+ "service-workers/service-worker/resources/embed-and-object-are-not-intercepted-worker.js": [
+ [
+ {}
+ ]
+ ],
+ "service-workers/service-worker/resources/embed-is-not-intercepted-iframe.html": [
+ [
+ {}
+ ]
+ ],
+ "service-workers/service-worker/resources/embedded-content-from-server.html": [
+ [
+ {}
+ ]
+ ],
+ "service-workers/service-worker/resources/embedded-content-from-service-worker.html": [
+ [
+ {}
+ ]
+ ],
"service-workers/service-worker/resources/empty-but-slow-worker.js": [
[
{}
@@ -289998,6 +291013,21 @@
{}
]
],
+ "service-workers/service-worker/resources/multipart-image-iframe.html": [
+ [
+ {}
+ ]
+ ],
+ "service-workers/service-worker/resources/multipart-image-worker.js": [
+ [
+ {}
+ ]
+ ],
+ "service-workers/service-worker/resources/multipart-image.py": [
+ [
+ {}
+ ]
+ ],
"service-workers/service-worker/resources/navigate-window-worker.js": [
[
{}
@@ -290048,6 +291078,11 @@
{}
]
],
+ "service-workers/service-worker/resources/object-is-not-intercepted-iframe.html": [
+ [
+ {}
+ ]
+ ],
"service-workers/service-worker/resources/onactivate-throw-error-from-nested-event-worker.js": [
[
{}
@@ -290293,6 +291328,11 @@
{}
]
],
+ "service-workers/service-worker/resources/sandboxed-iframe-fetch-event-iframe.py": [
+ [
+ {}
+ ]
+ ],
"service-workers/service-worker/resources/sandboxed-iframe-fetch-event-worker.js": [
[
{}
@@ -290653,6 +291693,11 @@
{}
]
],
+ "streams/readable-byte-streams/construct-byob-request.js": [
+ [
+ {}
+ ]
+ ],
"streams/readable-byte-streams/detached-buffers.js": [
[
{}
@@ -292263,6 +293308,11 @@
{}
]
],
+ "webaudio/the-audio-api/the-audioparam-interface/retrospective-test.js": [
+ [
+ {}
+ ]
+ ],
"webaudio/the-audio-api/the-audioprocessingevent-interface/.gitkeep": [
[
{}
@@ -308264,6 +309314,12 @@
{}
]
],
+ "cors/image-tainting-in-cross-origin-iframe.sub.html": [
+ [
+ "/cors/image-tainting-in-cross-origin-iframe.sub.html",
+ {}
+ ]
+ ],
"cors/late-upload-events.htm": [
[
"/cors/late-upload-events.htm",
@@ -309524,6 +310580,12 @@
{}
]
],
+ "css/css-fonts/font-shorthand-serialization-001.html": [
+ [
+ "/css/css-fonts/font-shorthand-serialization-001.html",
+ {}
+ ]
+ ],
"css/css-fonts/font-variant-alternates-parsing.html": [
[
"/css/css-fonts/font-variant-alternates-parsing.html",
@@ -316754,6 +317816,12 @@
{}
]
],
+ "dom/events/event-disabled-dynamic.html": [
+ [
+ "/dom/events/event-disabled-dynamic.html",
+ {}
+ ]
+ ],
"dom/historical.html": [
[
"/dom/historical.html",
@@ -322520,6 +323588,18 @@
{}
]
],
+ "html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-string.tentative.html": [
+ [
+ "/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-string.tentative.html",
+ {}
+ ]
+ ],
+ "html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-undefined.tentative.html": [
+ [
+ "/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-undefined.tentative.html",
+ {}
+ ]
+ ],
"html/browsers/browsing-the-web/navigating-across-documents/javascript-url-global-scope.html": [
[
"/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-global-scope.html",
@@ -356238,6 +357318,12 @@
{}
]
],
+ "service-workers/service-worker/embed-and-object-are-not-intercepted.https.html": [
+ [
+ "/service-workers/service-worker/embed-and-object-are-not-intercepted.https.html",
+ {}
+ ]
+ ],
"service-workers/service-worker/extendable-event-async-waituntil.https.html": [
[
"/service-workers/service-worker/extendable-event-async-waituntil.https.html",
@@ -356620,6 +357706,12 @@
{}
]
],
+ "service-workers/service-worker/multipart-image.https.html": [
+ [
+ "/service-workers/service-worker/multipart-image.https.html",
+ {}
+ ]
+ ],
"service-workers/service-worker/multiple-register.https.html": [
[
"/service-workers/service-worker/multiple-register.https.html",
@@ -357984,6 +359076,30 @@
{}
]
],
+ "streams/readable-byte-streams/construct-byob-request.dedicatedworker.html": [
+ [
+ "/streams/readable-byte-streams/construct-byob-request.dedicatedworker.html",
+ {}
+ ]
+ ],
+ "streams/readable-byte-streams/construct-byob-request.html": [
+ [
+ "/streams/readable-byte-streams/construct-byob-request.html",
+ {}
+ ]
+ ],
+ "streams/readable-byte-streams/construct-byob-request.serviceworker.https.html": [
+ [
+ "/streams/readable-byte-streams/construct-byob-request.serviceworker.https.html",
+ {}
+ ]
+ ],
+ "streams/readable-byte-streams/construct-byob-request.sharedworker.html": [
+ [
+ "/streams/readable-byte-streams/construct-byob-request.sharedworker.html",
+ {}
+ ]
+ ],
"streams/readable-byte-streams/detached-buffers.dedicatedworker.html": [
[
"/streams/readable-byte-streams/detached-buffers.dedicatedworker.html",
@@ -360078,6 +361194,12 @@
{}
]
],
+ "web-animations/animation-model/combining-effects/applying-the-composited-result.html": [
+ [
+ "/web-animations/animation-model/combining-effects/applying-the-composited-result.html",
+ {}
+ ]
+ ],
"web-animations/animation-model/combining-effects/effect-composition.html": [
[
"/web-animations/animation-model/combining-effects/effect-composition.html",
@@ -360144,12 +361266,6 @@
{}
]
],
- "web-animations/interfaces/Animation/finish.html": [
- [
- "/web-animations/interfaces/Animation/finish.html",
- {}
- ]
- ],
"web-animations/interfaces/Animation/finished.html": [
[
"/web-animations/interfaces/Animation/finished.html",
@@ -360198,12 +361314,6 @@
{}
]
],
- "web-animations/interfaces/Animation/playbackRate.html": [
- [
- "/web-animations/interfaces/Animation/playbackRate.html",
- {}
- ]
- ],
"web-animations/interfaces/Animation/ready.html": [
[
"/web-animations/interfaces/Animation/ready.html",
@@ -360402,12 +361512,6 @@
{}
]
],
- "web-animations/timing-model/animations/current-time.html": [
- [
- "/web-animations/timing-model/animations/current-time.html",
- {}
- ]
- ],
"web-animations/timing-model/animations/finishing-an-animation.html": [
[
"/web-animations/timing-model/animations/finishing-an-animation.html",
@@ -360438,21 +361542,45 @@
{}
]
],
- "web-animations/timing-model/animations/set-the-animation-start-time.html": [
+ "web-animations/timing-model/animations/seamlessly-updating-the-playback-rate-of-an-animation.html": [
[
- "/web-animations/timing-model/animations/set-the-animation-start-time.html",
+ "/web-animations/timing-model/animations/seamlessly-updating-the-playback-rate-of-an-animation.html",
{}
]
],
- "web-animations/timing-model/animations/set-the-target-effect-of-an-animation.html": [
+ "web-animations/timing-model/animations/setting-the-current-time-of-an-animation.html": [
[
- "/web-animations/timing-model/animations/set-the-target-effect-of-an-animation.html",
+ "/web-animations/timing-model/animations/setting-the-current-time-of-an-animation.html",
{}
]
],
- "web-animations/timing-model/animations/set-the-timeline-of-an-animation.html": [
+ "web-animations/timing-model/animations/setting-the-playback-rate-of-an-animation.html": [
[
- "/web-animations/timing-model/animations/set-the-timeline-of-an-animation.html",
+ "/web-animations/timing-model/animations/setting-the-playback-rate-of-an-animation.html",
+ {}
+ ]
+ ],
+ "web-animations/timing-model/animations/setting-the-start-time-of-an-animation.html": [
+ [
+ "/web-animations/timing-model/animations/setting-the-start-time-of-an-animation.html",
+ {}
+ ]
+ ],
+ "web-animations/timing-model/animations/setting-the-target-effect-of-an-animation.html": [
+ [
+ "/web-animations/timing-model/animations/setting-the-target-effect-of-an-animation.html",
+ {}
+ ]
+ ],
+ "web-animations/timing-model/animations/setting-the-timeline-of-an-animation.html": [
+ [
+ "/web-animations/timing-model/animations/setting-the-timeline-of-an-animation.html",
+ {}
+ ]
+ ],
+ "web-animations/timing-model/animations/the-current-time-of-an-animation.html": [
+ [
+ "/web-animations/timing-model/animations/the-current-time-of-an-animation.html",
{}
]
],
@@ -386970,7 +388098,7 @@
"support"
],
"./README.md": [
- "8a00f4e0dea3810e28a32421ded06b8e78e94129",
+ "60e060b31a4f9f43f09c1b2a360902e4817014e1",
"support"
],
"./check_stability.ini": [
@@ -393861,6 +394989,566 @@
"223375903efaf082b8c4a24f9bf103eaabd90d05",
"testharness"
],
+ "accname/OWNERS": [
+ "3a6002295ea2893ba74763e46965bd2d1291d55b",
+ "support"
+ ],
+ "accname/description_from_content_of_describedby_element-manual.html": [
+ "9bf362dc2f578e507bf8d0f7133f7256e061e1d2",
+ "manual"
+ ],
+ "accname/description_from_content_of_describedby_element_which_is_hidden-manual.html": [
+ "51e770a781330c01ef8ac607a8ceae8fbd9d84fd",
+ "manual"
+ ],
+ "accname/description_test_case_664-manual.html": [
+ "2961cd60ab5c6ee71945873687c4e8934e8598eb",
+ "manual"
+ ],
+ "accname/description_test_case_665-manual.html": [
+ "5319a9ac36d5097d39b927c5a8fa46c84bef1cd5",
+ "manual"
+ ],
+ "accname/description_test_case_666-manual.html": [
+ "b2d38d676b02ecb5b8358b61fa9dad15ab7fe1fa",
+ "manual"
+ ],
+ "accname/foo.jpg": [
+ "23ea35c7a9fc3418cd4004e8cc9c33b59f9c9dc6",
+ "support"
+ ],
+ "accname/name_checkbox-label-embedded-combobox-manual.html": [
+ "cccc7a6d8f9b7557036962bb718e42dba9ac96c9",
+ "manual"
+ ],
+ "accname/name_checkbox-label-embedded-menu-manual.html": [
+ "db0daa86e306d54cd23c55adb1f72e844a0a4c8b",
+ "manual"
+ ],
+ "accname/name_checkbox-label-embedded-select-manual.html": [
+ "ef66e7dc2e23bdc2a11df4788f0a5652b634614c",
+ "manual"
+ ],
+ "accname/name_checkbox-label-embedded-slider-manual.html": [
+ "6500d5fe8dd26eeab950d03f9be7f1f9c7c319a7",
+ "manual"
+ ],
+ "accname/name_checkbox-label-embedded-spinbutton-manual.html": [
+ "c3e7459eba79382148fa313f299843884fe8ef47",
+ "manual"
+ ],
+ "accname/name_checkbox-title-manual.html": [
+ "637e389beedecf101f59eae1ef9a863c71fff3a8",
+ "manual"
+ ],
+ "accname/name_file-label-embedded-combobox-manual.html": [
+ "ad015f066db67a0b02dabb35d1ec9c0fbcea4c39",
+ "manual"
+ ],
+ "accname/name_file-label-embedded-menu-manual.html": [
+ "690c7bf36edbac6909017cd144cfeea56fd98d5a",
+ "manual"
+ ],
+ "accname/name_file-label-embedded-select-manual.html": [
+ "b09f49619585bf400408c78ae97ea800af3cee72",
+ "manual"
+ ],
+ "accname/name_file-label-embedded-slider-manual.html": [
+ "e9fdf8cb3b59dd438b76fbe20ea3647d5776735a",
+ "manual"
+ ],
+ "accname/name_file-label-embedded-spinbutton-manual.html": [
+ "e8b0cd393d01efe72035ef552a0bb1133851263a",
+ "manual"
+ ],
+ "accname/name_file-title-manual.html": [
+ "b3d5042308ea5b5fee0832a2ea9089539b7f9597",
+ "manual"
+ ],
+ "accname/name_from_content-manual.html": [
+ "3553e365861c933b7b6789663e5b868e26748b88",
+ "manual"
+ ],
+ "accname/name_from_content_of_label-manual.html": [
+ "f14085504a2008a4b82eddde2b41a05f465a47ae",
+ "manual"
+ ],
+ "accname/name_from_content_of_labelledby_element-manual.html": [
+ "e917c6412966976e4eb6eae1e379a7e01bfcb5d1",
+ "manual"
+ ],
+ "accname/name_from_content_of_labelledby_elements_one_of_which_is_hidden-manual.html": [
+ "0e1d91be218401271e573e6bd93260caa1f9e842",
+ "manual"
+ ],
+ "accname/name_image-title-manual.html": [
+ "9def9482d97f96d0c3b5c5a2101ddfa8d0313072",
+ "manual"
+ ],
+ "accname/name_password-label-embedded-combobox-manual.html": [
+ "178bf7cf557d22a1a57d5f0563a57efe0d55be7a",
+ "manual"
+ ],
+ "accname/name_password-label-embedded-menu-manual.html": [
+ "3ebf4be3f8da6ce07ab13498bb537a293652b57c",
+ "manual"
+ ],
+ "accname/name_password-label-embedded-select-manual.html": [
+ "9698b2959880b2eb4ae024556c745579506e4772",
+ "manual"
+ ],
+ "accname/name_password-label-embedded-slider-manual.html": [
+ "4da98f4489d466accd6e03099f65afbbf06a5672",
+ "manual"
+ ],
+ "accname/name_password-label-embedded-spinbutton-manual.html": [
+ "28c2ff5472d78bd4a1e1d55a866af3d99186b972",
+ "manual"
+ ],
+ "accname/name_password-title-manual.html": [
+ "64c321f5eef4126a4ea6a1740074ee6fbfe14bac",
+ "manual"
+ ],
+ "accname/name_radio-label-embedded-combobox-manual.html": [
+ "3e341ee031aa1456dbd42794e1a4f0ce82ccda74",
+ "manual"
+ ],
+ "accname/name_radio-label-embedded-menu-manual.html": [
+ "cc4e583e4554cd612194814989d2875d8ef44d3a",
+ "manual"
+ ],
+ "accname/name_radio-label-embedded-select-manual.html": [
+ "8f46103e042501221901732653935bfcbdc424a3",
+ "manual"
+ ],
+ "accname/name_radio-label-embedded-slider-manual.html": [
+ "d4e4b7e25cb88efbd71c2b1c7985b1b04d699e7d",
+ "manual"
+ ],
+ "accname/name_radio-label-embedded-spinbutton-manual.html": [
+ "921070eeccfd96d2163b1f22d04e1f53789cb627",
+ "manual"
+ ],
+ "accname/name_radio-title-manual.html": [
+ "437b6d2748eadac0fb879dd0a002ad5886657b7e",
+ "manual"
+ ],
+ "accname/name_test_case_539-manual.html": [
+ "52283b3e50d6510796a37cce40ce7ae48c8363bc",
+ "manual"
+ ],
+ "accname/name_test_case_540-manual.html": [
+ "6abedb87911a568570c22e6e2e587c10b7709f39",
+ "manual"
+ ],
+ "accname/name_test_case_541-manual.html": [
+ "7f58d024e6d71031c5f24570f20749e7ac237fc3",
+ "manual"
+ ],
+ "accname/name_test_case_543-manual.html": [
+ "4f2b9608d32e8d0d8a72a989814dc2d4daf0f1c3",
+ "manual"
+ ],
+ "accname/name_test_case_544-manual.html": [
+ "48d880cfe47a081416a4a89a744410db553b664c",
+ "manual"
+ ],
+ "accname/name_test_case_545-manual.html": [
+ "6b4cb49d4d07a5532d73050ce4130a683bdb933f",
+ "manual"
+ ],
+ "accname/name_test_case_546-manual.html": [
+ "43fb0bd46634a505f9c5d51f7a0b961cf18c0b96",
+ "manual"
+ ],
+ "accname/name_test_case_547-manual.html": [
+ "baad5a48235f8a131bb7fd0559297a2800cec2bf",
+ "manual"
+ ],
+ "accname/name_test_case_548-manual.html": [
+ "05f2d69e7b9299d8c31385c614ffda7850e64bd3",
+ "manual"
+ ],
+ "accname/name_test_case_549-manual.html": [
+ "832c197f7e97965e608c1e437f3bc3f6e7d9dc81",
+ "manual"
+ ],
+ "accname/name_test_case_550-manual.html": [
+ "d3e5f8e21c6881bd455c52021983c4f20c7ce659",
+ "manual"
+ ],
+ "accname/name_test_case_551-manual.html": [
+ "a319e99cd6c180f8bdfc07af2bfdfc0962656330",
+ "manual"
+ ],
+ "accname/name_test_case_552-manual.html": [
+ "9f3f5e2fb077dac6b7e1f94bef42bea57bc85547",
+ "manual"
+ ],
+ "accname/name_test_case_553-manual.html": [
+ "e11a2890ba6ae9e2737fec9470ed857a0ad567ad",
+ "manual"
+ ],
+ "accname/name_test_case_556-manual.html": [
+ "281b70b1739ef2375e0def462bebd2079719d98a",
+ "manual"
+ ],
+ "accname/name_test_case_557-manual.html": [
+ "ffefead34a778c5cd41a57912583d3b8e7b999e4",
+ "manual"
+ ],
+ "accname/name_test_case_558-manual.html": [
+ "1e8136849dc177d72556c76c9d89ac5582efbc68",
+ "manual"
+ ],
+ "accname/name_test_case_559-manual.html": [
+ "9962a15676ec2c3e1b1d6ae54bf7939d004f01da",
+ "manual"
+ ],
+ "accname/name_test_case_560-manual.html": [
+ "8bdb7b3b0ec4c9ee72e29db04500a59a38850073",
+ "manual"
+ ],
+ "accname/name_test_case_561-manual.html": [
+ "9dc3e8af2810f6d2ba615b40a2971580fc8ff33f",
+ "manual"
+ ],
+ "accname/name_test_case_562-manual.html": [
+ "fc84e88dada119cd9bd06d1aab5021db87f86cd5",
+ "manual"
+ ],
+ "accname/name_test_case_563-manual.html": [
+ "1e185ba23a383cf051d6e0d815f973cfd9bd44eb",
+ "manual"
+ ],
+ "accname/name_test_case_564-manual.html": [
+ "f62252e5c8c68ee29f630d5827a9ff2bb06fa315",
+ "manual"
+ ],
+ "accname/name_test_case_565-manual.html": [
+ "d9fcb897b444f026d936ea335e73baf5c092641b",
+ "manual"
+ ],
+ "accname/name_test_case_566-manual.html": [
+ "93e82d0a5b6c2eb86b4dd32bf365d1a8d3a4386d",
+ "manual"
+ ],
+ "accname/name_test_case_596-manual.html": [
+ "e33d4c97450492f5340a00c2c7e0dc84be6bb91f",
+ "manual"
+ ],
+ "accname/name_test_case_597-manual.html": [
+ "2c241887bdc4eed850514dbf58d7b281dddca323",
+ "manual"
+ ],
+ "accname/name_test_case_598-manual.html": [
+ "3d1548107f86be97b7311dd1ad6721136b95b76c",
+ "manual"
+ ],
+ "accname/name_test_case_599-manual.html": [
+ "e8bf23feb35f9f864e8ce60d2e03d71787c1d4f7",
+ "manual"
+ ],
+ "accname/name_test_case_600-manual.html": [
+ "b08c44e3c77abcea5f5f35a5339a2f285479dd84",
+ "manual"
+ ],
+ "accname/name_test_case_601-manual.html": [
+ "76d1adefd5cbd9a7fd7d3a20e030ab47990eb925",
+ "manual"
+ ],
+ "accname/name_test_case_602-manual.html": [
+ "580896a142d1b9cbc1a8ec8fb42c562146e50a9e",
+ "manual"
+ ],
+ "accname/name_test_case_603-manual.html": [
+ "efaa4d546902022bc707007172395adc35750a8c",
+ "manual"
+ ],
+ "accname/name_test_case_604-manual.html": [
+ "2cd59bda65db6cfe0017eb08e84849d8ba99bca6",
+ "manual"
+ ],
+ "accname/name_test_case_605-manual.html": [
+ "92dee09996257f0a370e4f8a6a7761a7beb89637",
+ "manual"
+ ],
+ "accname/name_test_case_606-manual.html": [
+ "1e1d038b456ab23570baeecc0c3700b80ff53597",
+ "manual"
+ ],
+ "accname/name_test_case_607-manual.html": [
+ "67505192d3aad59708eee221f228c73d26b98ed4",
+ "manual"
+ ],
+ "accname/name_test_case_608-manual.html": [
+ "49c6fe71c3a8b6d6ea3eeb7dd540bb2b0ebaf45e",
+ "manual"
+ ],
+ "accname/name_test_case_609-manual.html": [
+ "bf445b1416e83e298a73c078f56e1171fadccd55",
+ "manual"
+ ],
+ "accname/name_test_case_610-manual.html": [
+ "800244d9d67c9b0dc25aa222cd4fa221be23b1b6",
+ "manual"
+ ],
+ "accname/name_test_case_611-manual.html": [
+ "69c6c0f3aeb5252b6050a13dd88eae2d08259df7",
+ "manual"
+ ],
+ "accname/name_test_case_612-manual.html": [
+ "024b7f63a574fa5b1fb05381d0306a61bb5653d8",
+ "manual"
+ ],
+ "accname/name_test_case_613-manual.html": [
+ "f818d435c5edfe6adaec5004a9bcbca044b53862",
+ "manual"
+ ],
+ "accname/name_test_case_614-manual.html": [
+ "c00ca712608c7ec97c07ac23def64d4f773e652f",
+ "manual"
+ ],
+ "accname/name_test_case_615-manual.html": [
+ "26ce5881a2b4a1e5f09ebd4fc775ce900882d516",
+ "manual"
+ ],
+ "accname/name_test_case_616-manual.html": [
+ "a193e5c8a61d55c5fb6e944256406cb6538c4354",
+ "manual"
+ ],
+ "accname/name_test_case_617-manual.html": [
+ "72d11f68a6a92811be12fa9ebb35fe34b1615865",
+ "manual"
+ ],
+ "accname/name_test_case_618-manual.html": [
+ "1d10ddf08905211b41f014c9eda4c58f80306b65",
+ "manual"
+ ],
+ "accname/name_test_case_619-manual.html": [
+ "c0a0ba3bafe1d64b436f6ce1696326fe905faca0",
+ "manual"
+ ],
+ "accname/name_test_case_620-manual.html": [
+ "5019c6af576f3cb84f43847275f6429898fe8e28",
+ "manual"
+ ],
+ "accname/name_test_case_621-manual.html": [
+ "d1a73465c5d8565bc52555f4a91f862375c44c04",
+ "manual"
+ ],
+ "accname/name_test_case_659-manual.html": [
+ "241ee4b9649de09cf8000a46d2080d35834154e0",
+ "manual"
+ ],
+ "accname/name_test_case_660-manual.html": [
+ "ac36e0a034118f61bada290a7a511b9e2ee7874c",
+ "manual"
+ ],
+ "accname/name_test_case_661-manual.html": [
+ "a4117f09f6777fba316fc3c49cafe9572cd3fd43",
+ "manual"
+ ],
+ "accname/name_test_case_662-manual.html": [
+ "6d5c1501c6b4f8cf5b2dddf924e453d8a9d24f80",
+ "manual"
+ ],
+ "accname/name_test_case_663-manual.html": [
+ "4eaadf4289477daf729267beedc919c3212a9b09",
+ "manual"
+ ],
+ "accname/name_test_case_663a-manual.html": [
+ "597df91b7e46634853198e67f156cf5063fccd8b",
+ "manual"
+ ],
+ "accname/name_test_case_721-manual.html": [
+ "c14e18a84e4eda3b45297a4ee716e19b9d1d7d3b",
+ "manual"
+ ],
+ "accname/name_test_case_723-manual.html": [
+ "75f5ceb299eec26270f0c35a7569a7f092312600",
+ "manual"
+ ],
+ "accname/name_test_case_724-manual.html": [
+ "b4e2268c2babda95248c1080a881a47a9a0acf4f",
+ "manual"
+ ],
+ "accname/name_test_case_725-manual.html": [
+ "ee3fc3d50f774a648b72b83001968f794fafebe7",
+ "manual"
+ ],
+ "accname/name_test_case_726-manual.html": [
+ "6ed641f4d77e03c661b0e0a3b94154af08257faf",
+ "manual"
+ ],
+ "accname/name_test_case_727-manual.html": [
+ "57ed68282c10cce56dd572cba54e272f29c0e7fd",
+ "manual"
+ ],
+ "accname/name_test_case_728-manual.html": [
+ "a4ed4a27e35d2b2d3b3bc1ebc5fa11a8fecdb315",
+ "manual"
+ ],
+ "accname/name_test_case_729-manual.html": [
+ "7d63e9e5fa6239340e470fcd9390ddea3db508aa",
+ "manual"
+ ],
+ "accname/name_test_case_730-manual.html": [
+ "007bbc808281d543e8606064b7e5c18cac9eab30",
+ "manual"
+ ],
+ "accname/name_test_case_731-manual.html": [
+ "e893821b92253e191fed42b78f0ec3077c19dbc3",
+ "manual"
+ ],
+ "accname/name_test_case_733-manual.html": [
+ "20531ef7e48c757f07d25f8f7902c7f079ebec92",
+ "manual"
+ ],
+ "accname/name_test_case_734-manual.html": [
+ "9d2598ba74be4a81e66f83cfc7bbfe84e705f46b",
+ "manual"
+ ],
+ "accname/name_test_case_735-manual.html": [
+ "132f73f40f7e2a7d906df53488cec5960cd91cf0",
+ "manual"
+ ],
+ "accname/name_test_case_736-manual.html": [
+ "091a489064a2ebdd831315a91c0c82dc9383392a",
+ "manual"
+ ],
+ "accname/name_test_case_737-manual.html": [
+ "f991830430c445d70bdadcd018644fdaf30228ad",
+ "manual"
+ ],
+ "accname/name_test_case_738-manual.html": [
+ "019bcb1742292293ca33959ba77ed37b5ddc14ed",
+ "manual"
+ ],
+ "accname/name_test_case_739-manual.html": [
+ "80b51db55b569b5feaad08ec8d3d6b741c59f238",
+ "manual"
+ ],
+ "accname/name_test_case_740-manual.html": [
+ "5a23a00c05138818c49a4a92b62572abd0f90f22",
+ "manual"
+ ],
+ "accname/name_test_case_741-manual.html": [
+ "1054c6f683226c327ba51ef5a741b9f71f78234c",
+ "manual"
+ ],
+ "accname/name_test_case_742-manual.html": [
+ "241363c65f067bba8839f71ead7ca1681832c81b",
+ "manual"
+ ],
+ "accname/name_test_case_743-manual.html": [
+ "ba809011cce26a6d45e1f0d36edf2df0373ccb21",
+ "manual"
+ ],
+ "accname/name_test_case_744-manual.html": [
+ "148e638515effbe4373ec5209ccee400876dd248",
+ "manual"
+ ],
+ "accname/name_test_case_745-manual.html": [
+ "8dccd0ae45fa0da395a2fef06bcbd087d2caa44d",
+ "manual"
+ ],
+ "accname/name_test_case_746-manual.html": [
+ "48aec956695d5c06aa0ab21c682d58c986d5943d",
+ "manual"
+ ],
+ "accname/name_test_case_747-manual.html": [
+ "1881961d6ad0ff89ab4bfe536fd841317cf74357",
+ "manual"
+ ],
+ "accname/name_test_case_748-manual.html": [
+ "1c774cdc38bfee4775608bdab49583ba95548951",
+ "manual"
+ ],
+ "accname/name_test_case_749-manual.html": [
+ "59a9089095a492ebb53697a6c886f0f9950c0e81",
+ "manual"
+ ],
+ "accname/name_test_case_750-manual.html": [
+ "702d5db63ef1d7f8eac049803d7ce962bcb3f112",
+ "manual"
+ ],
+ "accname/name_test_case_751-manual.html": [
+ "c1620650815ce39ab9bef833a517b992b45ea94a",
+ "manual"
+ ],
+ "accname/name_test_case_752-manual.html": [
+ "65c14f6c29990605a66791aee3d675e0df55fa2e",
+ "manual"
+ ],
+ "accname/name_test_case_753-manual.html": [
+ "0cb78d94b6a56f6785ba4940ae837cb994a0dacb",
+ "manual"
+ ],
+ "accname/name_test_case_754-manual.html": [
+ "0c51dd71ab7ac9cc27a3eb8e9e0f5244208d8aff",
+ "manual"
+ ],
+ "accname/name_test_case_755-manual.html": [
+ "31b2216a84a5b59cfcf890fe59f5839ea1208c1e",
+ "manual"
+ ],
+ "accname/name_test_case_756-manual.html": [
+ "62710efdfa73fccec1eb991993ccc6b51bf1f1ff",
+ "manual"
+ ],
+ "accname/name_test_case_757-manual.html": [
+ "839480cbfc537cf1860e48bee4e597394573da3b",
+ "manual"
+ ],
+ "accname/name_test_case_758-manual.html": [
+ "da6bcba2045179b1a9b4df5ea3b1f4c24a71ea9a",
+ "manual"
+ ],
+ "accname/name_test_case_759-manual.html": [
+ "7dddad8bc516dd14c710cd75c6c7d44db8def672",
+ "manual"
+ ],
+ "accname/name_test_case_760-manual.html": [
+ "0ce401d8c9a85d245e965fed3f506d8d88f4650b",
+ "manual"
+ ],
+ "accname/name_test_case_761-manual.html": [
+ "2226a89c8a511dfbe8e93037acf4f2b53dfd220e",
+ "manual"
+ ],
+ "accname/name_test_case_762-manual.html": [
+ "2c5436081d45b1ab470ed93050eb956a85ccc779",
+ "manual"
+ ],
+ "accname/name_text-label-embedded-combobox-manual.html": [
+ "406281ebff00851377335a6db85cdf85482df11a",
+ "manual"
+ ],
+ "accname/name_text-label-embedded-menu-manual.html": [
+ "1ae2a71295a14ceb09c6a4ac65a95c553d86a43e",
+ "manual"
+ ],
+ "accname/name_text-label-embedded-select-manual.html": [
+ "ee9cf471b60ebe327be4d877bd8a391ac0158d4d",
+ "manual"
+ ],
+ "accname/name_text-label-embedded-slider-manual.html": [
+ "df70f3aa99db3cada4a1f7bcd4e9d60a44333ef9",
+ "manual"
+ ],
+ "accname/name_text-label-embedded-spinbutton-manual.html": [
+ "214c4f8004f7d4e6dc29e0a4302e68170909a0ef",
+ "manual"
+ ],
+ "accname/name_text-title-manual.html": [
+ "2051faf3aa82d1b71dda2bd17c492329ec4c87af",
+ "manual"
+ ],
+ "accname/test.png": [
+ "ffb117851422ea6e86b7f8c2a225ef74d2bc271b",
+ "support"
+ ],
"acid/README.md": [
"76f4f73365670ecc3f97c560141a280a52b46807",
"support"
@@ -396210,7 +397898,7 @@
"testharness"
],
"beacon/headers/header-content-type.html": [
- "86ea95acb53498323dde13266834bb4bd2f3ad35",
+ "aee7b4c817f064e871d10cc80da8d25759c16158",
"testharness"
],
"beacon/headers/header-referrer-no-referrer-when-downgrade.https.html": [
@@ -418337,6 +420025,10 @@
"0c2e70a707db7426e86726fc8e9cf86159606227",
"testharness"
],
+ "cors/image-tainting-in-cross-origin-iframe.sub.html": [
+ "e0066d1d3376a5a3a73cd47597fe04efa4330cbe",
+ "testharness"
+ ],
"cors/late-upload-events.htm": [
"fd228ae2b8c82e4ec4a13659c95f9e42f8030b50",
"testharness"
@@ -418409,6 +420101,10 @@
"153ae440de7512da3001507010b5ef7bbbfb391e",
"support"
],
+ "cors/resources/image-tainting-checker.sub.html": [
+ "1e439e4c2c715bbde208c010118b382c56047d08",
+ "support"
+ ],
"cors/resources/preflight.py": [
"d57c82ffc41dd9d78ea69df75dc11aa6a626f660",
"support"
@@ -436897,6 +438593,10 @@
"c9c5728c3a45287019bbb02614229920c42518eb",
"testharness"
],
+ "css/CSS2/floats/zero-width-floats.html": [
+ "73520c10406cb5d8bb4c9dc9b0da92b924b04298",
+ "reftest"
+ ],
"css/CSS2/fonts/font-001.xht": [
"c255355156c612be7aef42ea77d8f0f37f779c68",
"visual"
@@ -487153,6 +488853,10 @@
"d24da7a545f0e28e0ee41e1bd9263eafe54211d8",
"reftest"
],
+ "css/css-fonts/font-shorthand-serialization-001.html": [
+ "003d315d72019673041c63b28a90f436c7e3855f",
+ "testharness"
+ ],
"css/css-fonts/font-size-adjust-001.html": [
"9c8cda6faa82407d5d236d25d07004405dfe93ac",
"visual"
@@ -496481,6 +498185,46 @@
"7e8b0c3a12b9d5e4d2409da06e7d7441d76d8e23",
"testharness"
],
+ "css/css-layout-api/auto-block-size-absolute-ref.html": [
+ "aae34e42447dad7c2e0487b07abc7656115687dc",
+ "support"
+ ],
+ "css/css-layout-api/auto-block-size-absolute.https.html": [
+ "5f4f8dcfeff298aa84a76a197394d51ef089ecca",
+ "reftest"
+ ],
+ "css/css-layout-api/auto-block-size-flex-ref.html": [
+ "16688468c76469754b1e55726e6c4977288b637b",
+ "support"
+ ],
+ "css/css-layout-api/auto-block-size-flex.https.html": [
+ "2b0404af908f4a1cae525c577d48c1792ce48e43",
+ "reftest"
+ ],
+ "css/css-layout-api/auto-block-size-floats-ref.html": [
+ "d92a3f18c98b014d0faa13ca71328cf734cfe347",
+ "support"
+ ],
+ "css/css-layout-api/auto-block-size-floats.https.html": [
+ "97d9413140e00cccf370e0257ea1ba2321f8df26",
+ "reftest"
+ ],
+ "css/css-layout-api/auto-block-size-inflow-ref.html": [
+ "45cd0eaedb6d81b714e30519e1cafcb454581582",
+ "support"
+ ],
+ "css/css-layout-api/auto-block-size-inflow.https.html": [
+ "d10f3a72ac907e366635dd61bb69850ef1af2829",
+ "reftest"
+ ],
+ "css/css-layout-api/auto-block-size-negative-ref.html": [
+ "b59c50fb50f5c3a118369acd1241d74d95e0e6fa",
+ "support"
+ ],
+ "css/css-layout-api/auto-block-size-negative.https.html": [
+ "6efa77b89f74771f750ca46ebe4491b127ba2f9a",
+ "reftest"
+ ],
"css/css-layout-api/box-tree-registered-ref.html": [
"e3290a53e1e47bf255ed674cf70db4798b6d20dd",
"support"
@@ -496501,6 +498245,22 @@
"a999a2a7ad8981879cdc984bf602939a23a60ea6",
"testharness"
],
+ "css/css-layout-api/fallback-constructor-error.https.html": [
+ "fdb9954e12f4628c114499a5e69f257b60377617",
+ "reftest"
+ ],
+ "css/css-layout-api/fallback-layout-error.https.html": [
+ "3d279f42a9b8e8ea0f6dc120d36ca0597372ef9b",
+ "reftest"
+ ],
+ "css/css-layout-api/fallback-layout-return.https.html": [
+ "159662be847f8657d33a0607cb0e6561d57ef4e1",
+ "reftest"
+ ],
+ "css/css-layout-api/fallback-ref.html": [
+ "464a929254bba9991b03e2d0d161c0274c7c4b59",
+ "support"
+ ],
"css/css-layout-api/inline-style-layout-function.https.html": [
"f421a9c0fb4c930922281a88eeaa45ae69adab51",
"testharness"
@@ -516506,7 +518266,7 @@
"testharness"
],
"css/css-typed-om/stylevalue-serialization/cssTransformValue.tentative.html": [
- "3026dd75aeafc3c2119953e813fba0ff8c401d4d",
+ "b9f6251545dfbce6ab0e5e971dee8e8f0480024e",
"testharness"
],
"css/css-typed-om/stylevalue-serialization/cssUnitValue.tentative.html": [
@@ -516586,7 +518346,7 @@
"testharness"
],
"css/css-typed-om/stylevalue-subclasses/cssUnparsedValue.html": [
- "16725f5047477a1a8837e464935af3da0a01deb2",
+ "46d36ae2dc68f3f3f1cee5d85cb5f496b7c3fa67",
"testharness"
],
"css/css-typed-om/stylevalue-subclasses/cssUrlImageValue-interface.html": [
@@ -516798,7 +518558,7 @@
"testharness"
],
"css/css-typed-om/the-stylepropertymap/properties/border-width.html": [
- "9a3cb4f96aa14f9a63261434ec46331447821965",
+ "1383d1d87c7128b3059162d344f26586049a6460",
"testharness"
],
"css/css-typed-om/the-stylepropertymap/properties/bottom.html": [
@@ -516810,7 +518570,7 @@
"testharness"
],
"css/css-typed-om/the-stylepropertymap/properties/height.html": [
- "aa7fdef188168368bbf8d867c96712bb9c77d857",
+ "36b8677eb45f8555da4381e1644624df2f2060e0",
"testharness"
],
"css/css-typed-om/the-stylepropertymap/properties/left.html": [
@@ -516826,7 +518586,7 @@
"testharness"
],
"css/css-typed-om/the-stylepropertymap/properties/padding.html": [
- "45d4a9a76054d2f867c28e7cda8f006d90551770",
+ "70c2e29badef7528469bcf11e1cb7bbc6cd519ea",
"testharness"
],
"css/css-typed-om/the-stylepropertymap/properties/position.html": [
@@ -516834,7 +518594,7 @@
"testharness"
],
"css/css-typed-om/the-stylepropertymap/properties/resources/testsuite.js": [
- "44d21574cfeaa42e292a5c7add83a85fd3ed6975",
+ "3ac46f9655cf07f63761850d38eb0c0cebdd98bf",
"support"
],
"css/css-typed-om/the-stylepropertymap/properties/right.html": [
@@ -516870,7 +518630,7 @@
"testharness"
],
"css/css-typed-om/the-stylepropertymap/properties/width.html": [
- "b6f2104ac9a5a4e288b83e5d4db6077ba72a0bad",
+ "d429f7a88012179ef3d604b79b3db4aaba0ca426",
"testharness"
],
"css/css-typed-om/the-stylepropertymap/properties/z-index.html": [
@@ -539637,6 +541397,10 @@
"8d195a4490df833fdd71388d9e8cc6e38d50cbd8",
"testharness"
],
+ "dom/events/event-disabled-dynamic.html": [
+ "40ab5636653dfd105738ab38e7d22316132eb630",
+ "testharness"
+ ],
"dom/historical.html": [
"ccf3d9d2d8eb3e7353ecedd8a4d8ba232f9374ec",
"testharness"
@@ -545226,7 +546990,7 @@
"support"
],
"fetch/nosniff/script.html": [
- "cfbd6d0996251d5f311a70d889af3a11552eb844",
+ "aae78384af3ed1871602eac5a5fa26467d997578",
"testharness"
],
"fetch/nosniff/stylesheet.html": [
@@ -546649,6 +548413,22 @@
"3842ac825b9fb33d0d95ef99f77c8c7d02a88e9a",
"support"
],
+ "html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-string.tentative.html": [
+ "62b5dc2524966d41e734c778932504dfa18fc132",
+ "testharness"
+ ],
+ "html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-undefined.tentative.html": [
+ "97ab442d3d409bb73851a334f5ba28824fd6224d",
+ "testharness"
+ ],
+ "html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/support/iframe-and-links.html": [
+ "ef3648a44ec979ebdb6fbd55a4cd9757855ed2d6",
+ "support"
+ ],
+ "html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/support/set-child-loaded.html": [
+ "b7be55c8262599acc8abad9ce403c945284008ae",
+ "support"
+ ],
"html/browsers/browsing-the-web/navigating-across-documents/javascript-url-global-scope.html": [
"d678c54e2c20d5f240fd68790ea4e03512db2c8a",
"testharness"
@@ -560030,7 +561810,7 @@
"testharness"
],
"html/semantics/forms/textfieldselection/selection-start-end.html": [
- "0fd9c420f831943f0d992076a7828eac066b6596",
+ "6bef6943accb6677e9f466df6cc5ad267b01680f",
"testharness"
],
"html/semantics/forms/textfieldselection/selection-value-interactions.html": [
@@ -565217,6 +566997,10 @@
"d7e6fa96c94057798d394cfbd2cf9be077ba5870",
"support"
],
+ "images/blue-png-cachable.py": [
+ "f1c756b52805137b2f472e2bc9e533949b245769",
+ "support"
+ ],
"images/blue.png": [
"7de5cdb5ad04ac365430b3b5f5ba01d2ba57ea23",
"support"
@@ -585502,7 +587286,7 @@
"testharness"
],
"service-workers/service-worker/activation.https.html": [
- "cdd7cd200ff4ec3df61c257305953b3a1f369ab8",
+ "b7a9ca969b4122f1b9adc973c60044a6ab2a2a95",
"testharness"
],
"service-workers/service-worker/active.https.html": [
@@ -585598,7 +587382,11 @@
"testharness"
],
"service-workers/service-worker/detached-context.https.html": [
- "c7645323ba0753f35beaef90836631ca16f64d3a",
+ "a4e96edc51927eb29873b0c97a7232f71ae43378",
+ "testharness"
+ ],
+ "service-workers/service-worker/embed-and-object-are-not-intercepted.https.html": [
+ "a9f08518e369c81036ce0815aab3f1a6895fb6ab",
"testharness"
],
"service-workers/service-worker/extendable-event-async-waituntil.https.html": [
@@ -585877,6 +587665,10 @@
"eac6d03a6baa43a8f326abc30a5e1244da2d0e55",
"testharness"
],
+ "service-workers/service-worker/multipart-image.https.html": [
+ "60b96c587744f167605c2d99d61bffaea6cef2ad",
+ "testharness"
+ ],
"service-workers/service-worker/multiple-register.https.html": [
"88dd84637f82e942e5efe6caafb99a18df602353",
"testharness"
@@ -586301,6 +588093,22 @@
"760b04aa2e36f55cfdbea0871a7424f787734a6e",
"support"
],
+ "service-workers/service-worker/resources/embed-and-object-are-not-intercepted-worker.js": [
+ "30d39c9d08dff37858a1ba843d7b51aaa559238b",
+ "support"
+ ],
+ "service-workers/service-worker/resources/embed-is-not-intercepted-iframe.html": [
+ "e33a11c8d4a2a14693f8eb5eb5feb8218c92de6f",
+ "support"
+ ],
+ "service-workers/service-worker/resources/embedded-content-from-server.html": [
+ "91f5b7b098eabed5c682cf8498246107fa2eb93c",
+ "support"
+ ],
+ "service-workers/service-worker/resources/embedded-content-from-service-worker.html": [
+ "1e4bd8d14e34ce47a51bf4c9a69fae0c12ee4ced",
+ "support"
+ ],
"service-workers/service-worker/resources/empty-but-slow-worker.js": [
"36ecac2f5ab2d3738ca72a7a7d1c605dbec97ff1",
"support"
@@ -586693,6 +588501,18 @@
"c99d267d5d819bebae13b1866671c9c2460b0104",
"support"
],
+ "service-workers/service-worker/resources/multipart-image-iframe.html": [
+ "f61e71879d812b892a4f5890da2beb317d1297c4",
+ "support"
+ ],
+ "service-workers/service-worker/resources/multipart-image-worker.js": [
+ "0ae02e35b65cd8a9520477f864c010c5c368e287",
+ "support"
+ ],
+ "service-workers/service-worker/resources/multipart-image.py": [
+ "715bfeb24184c2bcc0d90a196db03c2c948dace3",
+ "support"
+ ],
"service-workers/service-worker/resources/navigate-window-worker.js": [
"4d3b80c17efd78bda66333ba01ffde1b8f6e976b",
"support"
@@ -586733,6 +588553,10 @@
"ec72a4c120ccfac3a165576f59a0e02b945343b3",
"support"
],
+ "service-workers/service-worker/resources/object-is-not-intercepted-iframe.html": [
+ "412591c247a38b07cde7f42248bc412a50128b54",
+ "support"
+ ],
"service-workers/service-worker/resources/onactivate-throw-error-from-nested-event-worker.js": [
"5e7bd3fc11e1f72c91d756e04a5e1e25e565143a",
"support"
@@ -586926,11 +588750,15 @@
"support"
],
"service-workers/service-worker/resources/sandboxed-iframe-fetch-event-iframe.html": [
- "57b43f9bb4a11505dd11c187134519d60bc7c026",
+ "216f7a110ac86f441fbfc5d6f5be38ec5608962d",
+ "support"
+ ],
+ "service-workers/service-worker/resources/sandboxed-iframe-fetch-event-iframe.py": [
+ "885f52b5de4a6d5cd7042185715880a05c4f313d",
"support"
],
"service-workers/service-worker/resources/sandboxed-iframe-fetch-event-worker.js": [
- "f92786baf9a1ad0be21afd10f1343fd7220fd965",
+ "a961c23f069b3149922ce0a30df87608e7010bdb",
"support"
],
"service-workers/service-worker/resources/sandboxed-iframe-navigator-serviceworker-iframe.html": [
@@ -586982,7 +588810,7 @@
"support"
],
"service-workers/service-worker/resources/test-helpers.sub.js": [
- "55acaa1edd73a39a834e1a1ee0952f47a03e3c78",
+ "fee1648c02422cd2607b008b9a1ef0834385c69c",
"support"
],
"service-workers/service-worker/resources/testharness-helpers.js": [
@@ -587058,7 +588886,7 @@
"testharness"
],
"service-workers/service-worker/sandboxed-iframe-fetch-event.https.html": [
- "04d08798c3d1b5b158951c4243a4ab68ebea42e9",
+ "88551108e4b1d56ab41a3dee041a43f4646eb49d",
"testharness"
],
"service-workers/service-worker/sandboxed-iframe-navigator-serviceworker.https.html": [
@@ -588046,7 +589874,7 @@
"testharness"
],
"streams/piping/error-propagation-forward.js": [
- "a6c993b47a0aa820a3c763eb64ab902551bbcd91",
+ "2cd0c4476388f6a6fd104f1e00e08bf2fe8706bb",
"support"
],
"streams/piping/error-propagation-forward.serviceworker.https.html": [
@@ -588177,6 +590005,26 @@
"6f3911baf77e26af2d7e7d7472caae4df6d5a27e",
"testharness"
],
+ "streams/readable-byte-streams/construct-byob-request.dedicatedworker.html": [
+ "44f4d42b8a31c794b6252660f5cde8b0cbcc6fcb",
+ "testharness"
+ ],
+ "streams/readable-byte-streams/construct-byob-request.html": [
+ "22d393a61721610e5f5fd4cd628a14fd6f08094b",
+ "testharness"
+ ],
+ "streams/readable-byte-streams/construct-byob-request.js": [
+ "8d8167bc34049d473efb892c915efea4830d92d1",
+ "support"
+ ],
+ "streams/readable-byte-streams/construct-byob-request.serviceworker.https.html": [
+ "79dbbe66a34ca531fc532e37f6c11483a917cf9e",
+ "testharness"
+ ],
+ "streams/readable-byte-streams/construct-byob-request.sharedworker.html": [
+ "2a8a870d82e13cccac5b59de0ece4b8e9ff2775f",
+ "testharness"
+ ],
"streams/readable-byte-streams/detached-buffers.dedicatedworker.html": [
"8742d541924382fb06a3258d6723f22ddf299045",
"testharness"
@@ -588202,11 +590050,11 @@
"testharness"
],
"streams/readable-byte-streams/general.html": [
- "9e349695974543b322e5c1447352e0ab4dc490e6",
+ "d459dc11abad3162f0c412f1346820541df38d53",
"testharness"
],
"streams/readable-byte-streams/general.js": [
- "8d37d5948078b71d3f80e3799ea0dd6d818e933b",
+ "a7262a490c4a913811c8d0c489b06a567a448fc6",
"support"
],
"streams/readable-byte-streams/general.serviceworker.https.html": [
@@ -593953,6 +595801,10 @@
"da3370704ca9e83a1171a64320a240e3145fab2c",
"testharness"
],
+ "web-animations/animation-model/combining-effects/applying-the-composited-result.html": [
+ "5262331e6a2f957dd70e9a9888825250de65fd5b",
+ "testharness"
+ ],
"web-animations/animation-model/combining-effects/effect-composition.html": [
"5d6c3904de02eb3b6c890163ccdc6b8cb6499e56",
"testharness"
@@ -593997,10 +595849,6 @@
"4445fc8bd2120fb1e212dfc6a1fcf786a531ee6f",
"testharness"
],
- "web-animations/interfaces/Animation/finish.html": [
- "64acecec8528b4d241d5dcb9248ef82eafa02810",
- "testharness"
- ],
"web-animations/interfaces/Animation/finished.html": [
"ffcba3379db7094455a7798e4d5972d8e52caec5",
"testharness"
@@ -594010,7 +595858,7 @@
"testharness"
],
"web-animations/interfaces/Animation/idlharness.html": [
- "989e773dbf3d7d57f26b41108bc3d7f0b3ea3168",
+ "d61aa2d95ea31809a275183408e822c8c1eec87d",
"testharness"
],
"web-animations/interfaces/Animation/oncancel.html": [
@@ -594033,10 +595881,6 @@
"54edbdd6c0e1953f8d0e2bfbb92bfe318114ab74",
"testharness"
],
- "web-animations/interfaces/Animation/playbackRate.html": [
- "a298a65aaeb5a337fe894f0160493693f309c2a1",
- "testharness"
- ],
"web-animations/interfaces/Animation/ready.html": [
"bd4a18205791b2b0271a6266dba3ebc8482c835b",
"testharness"
@@ -594190,47 +596034,59 @@
"testharness"
],
"web-animations/timing-model/animations/canceling-an-animation.html": [
- "d82cbc5caf654b9811c90d5165fb0429891cb149",
- "testharness"
- ],
- "web-animations/timing-model/animations/current-time.html": [
- "52d23e752878c821754b2c2b752e7393882609e2",
+ "e03baa30d438529a0ebe39f0f623563aa9850d74",
"testharness"
],
"web-animations/timing-model/animations/finishing-an-animation.html": [
- "8d430adcb97bf3dab9703bc2d31be23e1adaec85",
+ "4c1cf823a81e72541abcafaa08950cf87424ae55",
"testharness"
],
"web-animations/timing-model/animations/pausing-an-animation.html": [
- "c46fbcb8bc40fc3ee26e10802a205926ab97a84f",
+ "a4cb7b89c778ad5c294eeb55e94461e19ca8eb4b",
"testharness"
],
"web-animations/timing-model/animations/play-states.html": [
- "3ec76eff991e306699b21fb03bc1f346ffd9cee3",
+ "0ab2fa3a464001272d1af541ea769fa967490c3b",
"testharness"
],
"web-animations/timing-model/animations/playing-an-animation.html": [
- "1ae05a904e5b4fbcf1d904f02825f836da7b4c18",
+ "10580a1e72892208a14c6fe55091e998edf0171c",
"testharness"
],
"web-animations/timing-model/animations/reversing-an-animation.html": [
- "3afdb3cc9a9dafb28ebe46902276c19c24aeb9a8",
+ "72b89e78ca7dac261af8de370389d89c810b3718",
+ "testharness"
+ ],
+ "web-animations/timing-model/animations/seamlessly-updating-the-playback-rate-of-an-animation.html": [
+ "a7e28aa0b40a39b00da257e347cb6ecf8d1d2882",
+ "testharness"
+ ],
+ "web-animations/timing-model/animations/setting-the-current-time-of-an-animation.html": [
+ "a7da92b9624750eccb9dce1d32e522fdbb65176f",
+ "testharness"
+ ],
+ "web-animations/timing-model/animations/setting-the-playback-rate-of-an-animation.html": [
+ "b2698d9a829a1eadb3ef3b6d8e0050e7a6315305",
"testharness"
],
- "web-animations/timing-model/animations/set-the-animation-start-time.html": [
- "fa26feebcde00a5b0b63f8f3587acc313a58f26a",
+ "web-animations/timing-model/animations/setting-the-start-time-of-an-animation.html": [
+ "cf6040eb52964f12b06a9e3cdf14948ce8141270",
"testharness"
],
- "web-animations/timing-model/animations/set-the-target-effect-of-an-animation.html": [
- "3b7f1f60cd771ff8587daf7ab76ccbecff59f781",
+ "web-animations/timing-model/animations/setting-the-target-effect-of-an-animation.html": [
+ "5575a251b9c265d98471e758b3cf9b218e381cba",
"testharness"
],
- "web-animations/timing-model/animations/set-the-timeline-of-an-animation.html": [
- "bd33cb8638aa373b17cda20906af5aea2f5a7503",
+ "web-animations/timing-model/animations/setting-the-timeline-of-an-animation.html": [
+ "e4e134b566327c9d7316aee4f3e7fe4eeb2116ba",
+ "testharness"
+ ],
+ "web-animations/timing-model/animations/the-current-time-of-an-animation.html": [
+ "90ba3d81ee9e32b1f13845301c4ad1c8ad47f2f7",
"testharness"
],
"web-animations/timing-model/animations/updating-the-finished-state.html": [
- "c30161f7d5a20db616ade354133ae6a8989d149f",
+ "59e7ed8e4eac5c9edf2526ef748b22e1877b7016",
"testharness"
],
"web-animations/timing-model/time-transformations/transformed-progress.html": [
@@ -594522,25 +596378,29 @@
"testharness"
],
"webaudio/the-audio-api/the-audioparam-interface/retrospective-exponentialRampToValueAtTime.html": [
- "53a2c031fd3c51cd401c1d192b09b745dd6b9260",
+ "12e1f35dca3f0b28d421ab39bdb2a98dc18abb3d",
"testharness"
],
"webaudio/the-audio-api/the-audioparam-interface/retrospective-linearRampToValueAtTime.html": [
- "ebd5ea3d866634ff0958eb2fda96bf58cbbea6ad",
+ "30b41f51caaf643c1acd746be3a7ce19d2498ca1",
"testharness"
],
"webaudio/the-audio-api/the-audioparam-interface/retrospective-setTargetAtTime.html": [
- "2fc8054f87b7d622b4cb5801e9f3a2083dbc23a4",
+ "2a012bfbd59445aa14789d80b94f514726e819f0",
"testharness"
],
"webaudio/the-audio-api/the-audioparam-interface/retrospective-setValueAtTime.html": [
- "30bcf53f72c13690f606b1c27584e9bb937017ef",
+ "7558fec8601a9aa3a6fc8fc93c7e978a6bf50a9e",
"testharness"
],
"webaudio/the-audio-api/the-audioparam-interface/retrospective-setValueCurveAtTime.html": [
- "fd40dc7cc8aca8ab829852dbabda3b00bcec5817",
+ "db939616369e2ce66b717d47512141e6f28e4c14",
"testharness"
],
+ "webaudio/the-audio-api/the-audioparam-interface/retrospective-test.js": [
+ "aeb2213183f2fd26848c507e030de3e5f7f01fee",
+ "support"
+ ],
"webaudio/the-audio-api/the-audioparam-interface/setTargetAtTime-after-event-within-block.html": [
"3e54f9a98e7488223e6c40929268ddec3c8b5961",
"testharness"
@@ -595034,7 +596894,7 @@
"wdspec"
],
"webdriver/tests/interface.html": [
- "6625887cfa7f461dc428c11861fce71c47bef57d",
+ "f7b2c45ff8b1b5790dd390fbe2ab997766f5d9a8",
"testharness"
],
"webdriver/tests/minimize_window.py": [
diff --git a/tests/wpt/metadata/css/CSS2/floats/zero-width-floats.html.ini b/tests/wpt/metadata/css/CSS2/floats/zero-width-floats.html.ini
new file mode 100644
index 00000000000..e20b1a193ff
--- /dev/null
+++ b/tests/wpt/metadata/css/CSS2/floats/zero-width-floats.html.ini
@@ -0,0 +1,2 @@
+[zero-width-floats.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-values/vh_not_refreshing_on_chrome.html.ini b/tests/wpt/metadata/css/css-values/vh_not_refreshing_on_chrome.html.ini
deleted file mode 100644
index 26435e28b09..00000000000
--- a/tests/wpt/metadata/css/css-values/vh_not_refreshing_on_chrome.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[vh_not_refreshing_on_chrome.html]
- expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-string.tentative.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-string.tentative.html.ini
new file mode 100644
index 00000000000..9bacb9f5c4e
--- /dev/null
+++ b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-string.tentative.html.ini
@@ -0,0 +1,4 @@
+[javascript-url-abort-return-value-string.tentative.html]
+ [Aborting fetch for javascript:string navigation]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-undefined.tentative.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-undefined.tentative.html.ini
new file mode 100644
index 00000000000..78879bad5f1
--- /dev/null
+++ b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-undefined.tentative.html.ini
@@ -0,0 +1,5 @@
+[javascript-url-abort-return-value-undefined.tentative.html]
+ expected: TIMEOUT
+ [Not aborting fetch for javascript:undefined navigation]
+ expected: TIMEOUT
+
diff --git a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/010.html.ini b/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/010.html.ini
deleted file mode 100644
index 33164945eb6..00000000000
--- a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/010.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[010.html]
- [Salvagability of document.opened document]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/webappapis/scripting/events/messageevent-constructor.https.html.ini b/tests/wpt/metadata/html/webappapis/scripting/events/messageevent-constructor.https.html.ini
index 0837c1ef142..a6931ba3609 100644
--- a/tests/wpt/metadata/html/webappapis/scripting/events/messageevent-constructor.https.html.ini
+++ b/tests/wpt/metadata/html/webappapis/scripting/events/messageevent-constructor.https.html.ini
@@ -24,3 +24,6 @@
[initMessageEvent operation default parameter values]
expected: FAIL
+ [MessageEvent constructor]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-serviceworker.https.html.ini b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-serviceworker.https.html.ini
index 84442134e47..0608a3b0a8c 100644
--- a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-serviceworker.https.html.ini
+++ b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-serviceworker.https.html.ini
@@ -3,3 +3,6 @@
[Service worker test setup]
expected: FAIL
+ [[[CanBlock\]\] in a service worker agent]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.serviceworker.https.html.ini b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.serviceworker.https.html.ini
index 62def3928b9..17e3916e7d9 100644
--- a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.serviceworker.https.html.ini
+++ b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.serviceworker.https.html.ini
@@ -3,3 +3,6 @@
[Service worker setup]
expected: FAIL
+ [Promise rejection events tests: in a service worker context]
+ expected: FAIL
+
diff --git a/tests/wpt/web-platform-tests/README.md b/tests/wpt/web-platform-tests/README.md
index 90f1f47aa4e..cc846b5d23e 100644
--- a/tests/wpt/web-platform-tests/README.md
+++ b/tests/wpt/web-platform-tests/README.md
@@ -107,7 +107,7 @@ python wpt product [tests]
where `product` is currently `firefox` or `chrome` and `[tests]` is a
list of paths to tests. This will attempt to automatically locate a
browser instance and install required dependencies. The command is
-very configurable; for examaple to specify a particular binary use
+very configurable; for example to specify a particular binary use
`wpt run --binary=path product`. The full range of options can be see
with `wpt run --help` and `wpt run --wptrunner-help`.
diff --git a/tests/wpt/web-platform-tests/accname/OWNERS b/tests/wpt/web-platform-tests/accname/OWNERS
new file mode 100644
index 00000000000..2a4c47ed4df
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/OWNERS
@@ -0,0 +1,2 @@
+@halindrome
+@joanmarie
diff --git a/tests/wpt/web-platform-tests/accname/description_from_content_of_describedby_element-manual.html b/tests/wpt/web-platform-tests/accname/description_from_content_of_describedby_element-manual.html
new file mode 100644
index 00000000000..2e7c86c6873
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/description_from_content_of_describedby_element-manual.html
@@ -0,0 +1,92 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Description from content of describedby element</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "description",
+ "is",
+ "My name is Garaventa the weird. (QED) Where are my marbles?"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXHelp",
+ "is",
+ "My name is Garaventa the weird. (QED) Where are my marbles?"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accDescription",
+ "is",
+ "My name is Garaventa the weird. (QED) Where are my marbles?"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Description",
+ "is",
+ "My name is Garaventa the weird. (QED) Where are my marbles?"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Description from content of describedby element"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Description from content of describedby element.</p>
+ <input id="test" type="text" aria-label="Important stuff" aria-describedby="descId" />
+ <div>
+ <div id="descId">
+ <span aria-hidden="true"><i> Hello, </i></span>
+ <span>My</span> name is
+ <div><img src="file.jpg" title="Bryan" alt="" role="presentation" /></div>
+ <span role="presentation" aria-label="Eli">
+ <span aria-label="Garaventa">Zambino</span>
+ </span>
+ <span>the weird.</span>
+ (<span>Q</span><span>E</span><span>D</span>)
+ <span class="hidden"><i><b>and don't you forget it.</b></i></span>
+ <table>
+ <tr>
+ <td>Where</td>
+ <td style="visibility:hidden;"><div>in</div></td>
+ <td><div style="display:none;">the world</div></td>
+ <td>are my marbles?</td>
+ </tr>
+ </table>
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/description_from_content_of_describedby_element_which_is_hidden-manual.html b/tests/wpt/web-platform-tests/accname/description_from_content_of_describedby_element_which_is_hidden-manual.html
new file mode 100644
index 00000000000..9dbe3e5c7da
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/description_from_content_of_describedby_element_which_is_hidden-manual.html
@@ -0,0 +1,100 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Description from content of describedby element which is hidden</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "description",
+ "is",
+ "My name is Garaventa the weird. (QED) Where are my marbles?"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXHelp",
+ "is",
+ "My name is Garaventa the weird. (QED) Where are my marbles?"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accDescription",
+ "is",
+ "My name is Garaventa the weird. (QED) Where are my marbles?"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Description",
+ "is",
+ "My name is Garaventa the weird. (QED) Where are my marbles?"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Description from content of describedby element which is hidden"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Description from content of describedby element which is hidden.</p>
+ <div>
+ <input id="test" type="text" aria-labelledby="lbl1 lbl2" aria-describedby="descId" />
+ <span>
+ <span aria-hidden="true" id="lbl1">Important</span>
+ <span class="hidden">
+ <span aria-hidden="true" id="lbl2">stuff</span>
+ </span>
+ </span>
+ </div>
+ <div class="hidden">
+ <div id="descId">
+ <span aria-hidden="true"><i> Hello, </i></span>
+ <span>My</span> name is
+ <div><img src="file.jpg" title="Bryan" alt="" role="presentation" /></div>
+ <span role="presentation" aria-label="Eli">
+ <span aria-label="Garaventa">Zambino</span>
+ </span>
+ <span>the weird.</span>
+ (<span>Q</span><span>E</span><span>D</span>)
+ <span class="hidden"><i><b>and don't you forget it.</b></i></span>
+ <table>
+ <tr>
+ <td>Where</td>
+ <td style="visibility:hidden;"><div>in</div></td>
+ <td><div style="display:none;">the world</div></td>
+ <td>are my marbles?</td>
+ </tr>
+ </table>
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/description_test_case_664-manual.html b/tests/wpt/web-platform-tests/accname/description_test_case_664-manual.html
new file mode 100644
index 00000000000..0ba57426d2e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/description_test_case_664-manual.html
@@ -0,0 +1,74 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Description test case 664</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "description",
+ "is",
+ "foo"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXHelp",
+ "is",
+ "foo"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accDescription",
+ "is",
+ "foo"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Description",
+ "is",
+ "foo"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Description test case 664"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Description test case 664.</p>
+ <div>
+ <img id="test" aria-describedby="ID1" src="test.png">
+ </div>
+ <div id="ID1">foo</div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/description_test_case_665-manual.html b/tests/wpt/web-platform-tests/accname/description_test_case_665-manual.html
new file mode 100644
index 00000000000..341d6d28a2d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/description_test_case_665-manual.html
@@ -0,0 +1,74 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Description test case 665</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "description",
+ "is",
+ "foo"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXHelp",
+ "is",
+ "foo"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accDescription",
+ "is",
+ "foo"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Description",
+ "is",
+ "foo"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Description test case 665"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Description test case 665.</p>
+ <div>
+ <img id="test" aria-describedby="ID1" src="test.png">
+ </div>
+ <div id="ID1" style="display:none">foo</div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/description_test_case_666-manual.html b/tests/wpt/web-platform-tests/accname/description_test_case_666-manual.html
new file mode 100644
index 00000000000..9681b89e98a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/description_test_case_666-manual.html
@@ -0,0 +1,74 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Description test case 666</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "description",
+ "is",
+ "foo"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXHelp",
+ "is",
+ "foo"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accDescription",
+ "is",
+ "foo"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Description",
+ "is",
+ "foo"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Description test case 666"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Description test case 666.</p>
+ <div>
+ <img id="test" aria-describedby="ID1" src="test.png">
+ </div>
+ <div id="ID1" role="presentation">foo</div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/foo.jpg b/tests/wpt/web-platform-tests/accname/foo.jpg
new file mode 100644
index 00000000000..7d11a4f7cf1
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/foo.jpg
Binary files differ
diff --git a/tests/wpt/web-platform-tests/accname/name_checkbox-label-embedded-combobox-manual.html b/tests/wpt/web-platform-tests/accname/name_checkbox-label-embedded-combobox-manual.html
new file mode 100644
index 00000000000..2797514bd7f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_checkbox-label-embedded-combobox-manual.html
@@ -0,0 +1,82 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name checkbox-label-embedded-combobox</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name checkbox-label-embedded-combobox"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name checkbox-label-embedded-combobox.</p>
+ <input type="checkbox" id="test" />
+ <label for="test">Flash the screen
+ <div role="combobox">
+ <div role="textbox"></div>
+ <ul role="listbox" style="list-style-type: none;">
+ <li role="option" aria-selected="true">1</li>
+ <li role="option">2</li>
+ <li role="option">3</li>
+ </ul>
+ </div>
+ times.
+ </label>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_checkbox-label-embedded-menu-manual.html b/tests/wpt/web-platform-tests/accname/name_checkbox-label-embedded-menu-manual.html
new file mode 100644
index 00000000000..5399a3cc6d0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_checkbox-label-embedded-menu-manual.html
@@ -0,0 +1,79 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name checkbox-label-embedded-menu</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name checkbox-label-embedded-menu"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name checkbox-label-embedded-menu.</p>
+ <input type="checkbox" id="test" />
+ <label for="test">Flash the screen
+ <span role="menu">
+ <span role="menuitem" aria-selected="true">1</span>
+ <span role="menuitem" hidden>2</span>
+ <span role="menuitem" hidden>3</span>
+ </span>
+ times.
+ </label>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_checkbox-label-embedded-select-manual.html b/tests/wpt/web-platform-tests/accname/name_checkbox-label-embedded-select-manual.html
new file mode 100644
index 00000000000..52a5ca80bbb
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_checkbox-label-embedded-select-manual.html
@@ -0,0 +1,79 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name checkbox-label-embedded-select</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name checkbox-label-embedded-select"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name checkbox-label-embedded-select.</p>
+ <input type="checkbox" id="test" />
+ <label for="test">Flash the screen
+ <select size="1">
+ <option selected="selected">1</option>
+ <option>2</option>
+ <option>3</option>
+ </select>
+ times.
+ </label>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_checkbox-label-embedded-slider-manual.html b/tests/wpt/web-platform-tests/accname/name_checkbox-label-embedded-slider-manual.html
new file mode 100644
index 00000000000..520e4a45f87
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_checkbox-label-embedded-slider-manual.html
@@ -0,0 +1,73 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name checkbox-label-embedded-slider</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "foo 5 baz"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "foo 5 baz"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "foo 5 baz"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "foo 5 baz"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name checkbox-label-embedded-slider"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name checkbox-label-embedded-slider.</p>
+ <input type="checkbox" id="test" />
+ <label for="test">foo <input role="slider" type="range" value="5" min="1" max="10" aria-valuenow="5" aria-valuemin="1" aria-valuemax="10"> baz
+ </label>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_checkbox-label-embedded-spinbutton-manual.html b/tests/wpt/web-platform-tests/accname/name_checkbox-label-embedded-spinbutton-manual.html
new file mode 100644
index 00000000000..bf47b1d912c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_checkbox-label-embedded-spinbutton-manual.html
@@ -0,0 +1,73 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name checkbox-label-embedded-spinbutton</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "foo 5 baz"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "foo 5 baz"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "foo 5 baz"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "foo 5 baz"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name checkbox-label-embedded-spinbutton"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name checkbox-label-embedded-spinbutton.</p>
+ <input type="checkbox" id="test" />
+ <label for="test">foo <input role="spinbutton" type="number" value="5" min="1" max="10" aria-valuenow="5" aria-valuemin="1" aria-valuemax="10"> baz
+ </label>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_checkbox-title-manual.html b/tests/wpt/web-platform-tests/accname/name_checkbox-title-manual.html
new file mode 100644
index 00000000000..b5b9a5ea3e5
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_checkbox-title-manual.html
@@ -0,0 +1,71 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name checkbox-title</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "foo"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "foo"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "foo"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "foo"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name checkbox-title"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name checkbox-title.</p>
+ <input type="checkbox" id="test" title="foo" />
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_file-label-embedded-combobox-manual.html b/tests/wpt/web-platform-tests/accname/name_file-label-embedded-combobox-manual.html
new file mode 100644
index 00000000000..a2799324e1b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_file-label-embedded-combobox-manual.html
@@ -0,0 +1,82 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name file-label-embedded-combobox</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name file-label-embedded-combobox"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name file-label-embedded-combobox.</p>
+ <input type="file" id="test" />
+ <label for="test">Flash the screen
+ <div role="combobox">
+ <div role="textbox"></div>
+ <ul role="listbox" style="list-style-type: none;">
+ <li role="option" aria-selected="true">1 </li>
+ <li role="option">2 </li>
+ <li role="option">3 </li>
+ </ul>
+ </div>
+ times.
+ </label>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_file-label-embedded-menu-manual.html b/tests/wpt/web-platform-tests/accname/name_file-label-embedded-menu-manual.html
new file mode 100644
index 00000000000..c53575db886
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_file-label-embedded-menu-manual.html
@@ -0,0 +1,79 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name file-label-embedded-menu</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name file-label-embedded-menu"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name file-label-embedded-menu.</p>
+ <input type="file" id="test" />
+ <label for="test">Flash the screen
+ <span role="menu">
+ <span role="menuitem" aria-selected="true">1</span>
+ <span role="menuitem" hidden>2</span>
+ <span role="menuitem" hidden>3</span>
+ </span>
+ times.
+ </label>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_file-label-embedded-select-manual.html b/tests/wpt/web-platform-tests/accname/name_file-label-embedded-select-manual.html
new file mode 100644
index 00000000000..7142c764a18
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_file-label-embedded-select-manual.html
@@ -0,0 +1,79 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name file-label-embedded-select</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name file-label-embedded-select"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name file-label-embedded-select.</p>
+ <input type="file" id="test" />
+ <label for="test">Flash the screen
+ <select size="1">
+ <option selected="selected">1</option>
+ <option>2</option>
+ <option>3</option>
+ </select>
+ times.
+ </label>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_file-label-embedded-slider-manual.html b/tests/wpt/web-platform-tests/accname/name_file-label-embedded-slider-manual.html
new file mode 100644
index 00000000000..de08bbcc106
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_file-label-embedded-slider-manual.html
@@ -0,0 +1,73 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name file-label-embedded-slider</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "foo 5 baz"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "foo 5 baz"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "foo 5 baz"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "foo 5 baz"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name file-label-embedded-slider"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name file-label-embedded-slider.</p>
+ <input type="file" id="test" />
+ <label for="test">foo <input role="slider" type="range" value="5" min="1" max="10" aria-valuenow="5" aria-valuemin="1" aria-valuemax="10"> baz
+ </label>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_file-label-embedded-spinbutton-manual.html b/tests/wpt/web-platform-tests/accname/name_file-label-embedded-spinbutton-manual.html
new file mode 100644
index 00000000000..67934a329e1
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_file-label-embedded-spinbutton-manual.html
@@ -0,0 +1,73 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name file-label-embedded-spinbutton</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "foo 5 baz"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "foo 5 baz"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "foo 5 baz"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "foo 5 baz"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name file-label-embedded-spinbutton"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name file-label-embedded-spinbutton.</p>
+ <input type="file" id="test" />
+ <label for="test">foo <input role="spinbutton" type="number" value="5" min="1" max="10" aria-valuenow="5" aria-valuemin="1" aria-valuemax="10"> baz
+ </label>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_file-title-manual.html b/tests/wpt/web-platform-tests/accname/name_file-title-manual.html
new file mode 100644
index 00000000000..5eae799d78d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_file-title-manual.html
@@ -0,0 +1,71 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name file-title</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "foo"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "foo"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "foo"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "foo"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name file-title"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name file-title.</p>
+ <input type="file" id="test" title="foo" />
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_from_content-manual.html b/tests/wpt/web-platform-tests/accname/name_from_content-manual.html
new file mode 100644
index 00000000000..583f30ad0e7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_from_content-manual.html
@@ -0,0 +1,89 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name from content</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "My name is Garaventa the weird. (QED) Where are my marbles?"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "My name is Garaventa the weird. (QED) Where are my marbles?"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "My name is Garaventa the weird. (QED) Where are my marbles?"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "My name is Garaventa the weird. (QED) Where are my marbles?"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name from content"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name from content.</p>
+ <div id="test" role="link" tabindex="0">
+ <span aria-hidden="true"><i> Hello, </i></span>
+ <span>My</span> name is
+ <div><img src="file.jpg" title="Bryan" alt="" role="presentation" /></div>
+ <span role="presentation" aria-label="Eli">
+ <span aria-label="Garaventa">Zambino</span>
+ </span>
+ <span>the weird.</span>
+ (<span>Q</span><span>E</span><span>D</span>)
+ <span class="hidden"><i><b>and don't you forget it.</b></i></span>
+ <table>
+ <tr>
+ <td>Where</td>
+ <td style="visibility:hidden;"><div>in</div></td>
+ <td><div style="display:none;">the world</div></td>
+ <td>are my marbles?</td>
+ </tr>
+ </table>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_from_content_of_label-manual.html b/tests/wpt/web-platform-tests/accname/name_from_content_of_label-manual.html
new file mode 100644
index 00000000000..d2407633ae8
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_from_content_of_label-manual.html
@@ -0,0 +1,90 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name from content of label</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "My name is Garaventa the weird. (QED) Where are my marbles?"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "My name is Garaventa the weird. (QED) Where are my marbles?"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "My name is Garaventa the weird. (QED) Where are my marbles?"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "My name is Garaventa the weird. (QED) Where are my marbles?"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name from content of label"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name from content of label.</p>
+ <input type="text" id="test" />
+ <label for="test" id="label">
+ <span aria-hidden="true"><i> Hello, </i></span>
+ <span>My</span> name is
+ <div><img src="file.jpg" title="Bryan" alt="" role="presentation" /></div>
+ <span role="presentation" aria-label="Eli">
+ <span aria-label="Garaventa">Zambino</span>
+ </span>
+ <span>the weird.</span>
+ (<span>Q</span><span>E</span><span>D</span>)
+ <span class="hidden"><i><b>and don't you forget it.</b></i></span>
+ <table>
+ <tr>
+ <td>Where</td>
+ <td style="visibility:hidden;"><div>in</div></td>
+ <td><div style="display:none;">the world</div></td>
+ <td>are my marbles?</td>
+ </tr>
+ </table>
+ </label>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_from_content_of_labelledby_element-manual.html b/tests/wpt/web-platform-tests/accname/name_from_content_of_labelledby_element-manual.html
new file mode 100644
index 00000000000..69304afa000
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_from_content_of_labelledby_element-manual.html
@@ -0,0 +1,90 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name from content of labelledby element</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "My name is Garaventa the weird. (QED) Where are my marbles?"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "My name is Garaventa the weird. (QED) Where are my marbles?"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "My name is Garaventa the weird. (QED) Where are my marbles?"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "My name is Garaventa the weird. (QED) Where are my marbles?"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name from content of labelledby element"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name from content of labelledby element.</p>
+ <input id="test" type="text" aria-labelledby="lblId" />
+ <div id="lblId" >
+ <span aria-hidden="true"><i> Hello, </i></span>
+ <span>My</span> name is
+ <div><img src="file.jpg" title="Bryan" alt="" role="presentation" /></div>
+ <span role="presentation" aria-label="Eli">
+ <span aria-label="Garaventa">Zambino</span>
+ </span>
+ <span>the weird.</span>
+ (<span>Q</span><span>E</span><span>D</span>)
+ <span class="hidden"><i><b>and don't you forget it.</b></i></span>
+ <table>
+ <tr>
+ <td>Where</td>
+ <td style="visibility:hidden;"><div>in</div></td>
+ <td><div style="display:none;">the world</div></td>
+ <td>are my marbles?</td>
+ </tr>
+ </table>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_from_content_of_labelledby_elements_one_of_which_is_hidden-manual.html b/tests/wpt/web-platform-tests/accname/name_from_content_of_labelledby_elements_one_of_which_is_hidden-manual.html
new file mode 100644
index 00000000000..18860233457
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_from_content_of_labelledby_elements_one_of_which_is_hidden-manual.html
@@ -0,0 +1,100 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name from content of labelledby elements one of which is hidden</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "Important stuff"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "Important stuff"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "Important stuff"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "Important stuff"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name from content of labelledby elements one of which is hidden"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name from content of labelledby elements one of which is hidden.</p>
+ <div>
+ <input id="test" type="text" aria-labelledby="lbl1 lbl2" aria-describedby="descId" />
+ <span>
+ <span aria-hidden="true" id="lbl1">Important</span>
+ <span class="hidden">
+ <span aria-hidden="true" id="lbl2">stuff</span>
+ </span>
+ </span>
+ </div>
+ <div class="hidden">
+ <div id="descId">
+ <span aria-hidden="true"><i> Hello, </i></span>
+ <span>My</span> name is
+ <div><img src="file.jpg" title="Bryan" alt="" role="presentation" /></div>
+ <span role="presentation" aria-label="Eli">
+ <span aria-label="Garaventa">Zambino</span>
+ </span>
+ <span>the weird.</span>
+ (<span>Q</span><span>E</span><span>D</span>)
+ <span class="hidden"><i><b>and don't you forget it.</b></i></span>
+ <table>
+ <tr>
+ <td>Where</td>
+ <td style="visibility:hidden;"><div>in</div></td>
+ <td><div style="display:none;">the world</div></td>
+ <td>are my marbles?</td>
+ </tr>
+ </table>
+ </div>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_image-title-manual.html b/tests/wpt/web-platform-tests/accname/name_image-title-manual.html
new file mode 100644
index 00000000000..51ead258894
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_image-title-manual.html
@@ -0,0 +1,71 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name image-title</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "foo"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "foo"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "foo"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "foo"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name image-title"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name image-title.</p>
+ <input type="image" src="test.png" id="test" title="foo" />
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_password-label-embedded-combobox-manual.html b/tests/wpt/web-platform-tests/accname/name_password-label-embedded-combobox-manual.html
new file mode 100644
index 00000000000..b2762aa6ae7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_password-label-embedded-combobox-manual.html
@@ -0,0 +1,82 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name password-label-embedded-combobox</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name password-label-embedded-combobox"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name password-label-embedded-combobox.</p>
+ <input type="password" id="test" />
+ <label for="test">Flash the screen
+ <div role="combobox">
+ <div role="textbox"></div>
+ <ul role="listbox" style="list-style-type: none;">
+ <li role="option" aria-selected="true">1</li>
+ <li role="option">2</li>
+ <li role="option">3</li>
+ </ul>
+ </div>
+ times.
+ </label>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_password-label-embedded-menu-manual.html b/tests/wpt/web-platform-tests/accname/name_password-label-embedded-menu-manual.html
new file mode 100644
index 00000000000..3c50836e271
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_password-label-embedded-menu-manual.html
@@ -0,0 +1,79 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name password-label-embedded-menu</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name password-label-embedded-menu"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name password-label-embedded-menu.</p>
+ <input type="password" id="test" />
+ <label for="test">Flash the screen
+ <span role="menu">
+ <span role="menuitem" aria-selected="true">1</span>
+ <span role="menuitem" hidden>2</span>
+ <span role="menuitem" hidden>3</span>
+ </span>
+ times.
+ </label>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_password-label-embedded-select-manual.html b/tests/wpt/web-platform-tests/accname/name_password-label-embedded-select-manual.html
new file mode 100644
index 00000000000..36471160273
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_password-label-embedded-select-manual.html
@@ -0,0 +1,79 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name password-label-embedded-select</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name password-label-embedded-select"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name password-label-embedded-select.</p>
+ <input type="password" id="test" />
+ <label for="test">Flash the screen
+ <select size="1">
+ <option selected="selected">1</option>
+ <option>2</option>
+ <option>3</option>
+ </select>
+ times.
+ </label>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_password-label-embedded-slider-manual.html b/tests/wpt/web-platform-tests/accname/name_password-label-embedded-slider-manual.html
new file mode 100644
index 00000000000..d5686a48c54
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_password-label-embedded-slider-manual.html
@@ -0,0 +1,73 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name password-label-embedded-slider</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "foo 5 baz"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "foo 5 baz"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "foo 5 baz"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "foo 5 baz"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name password-label-embedded-slider"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name password-label-embedded-slider.</p>
+ <input type="password" id="test" />
+ <label for="test">foo <input role="slider" type="range" value="5" min="1" max="10" aria-valuenow="5" aria-valuemin="1" aria-valuemax="10"> baz
+ </label>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_password-label-embedded-spinbutton-manual.html b/tests/wpt/web-platform-tests/accname/name_password-label-embedded-spinbutton-manual.html
new file mode 100644
index 00000000000..73b0d664c78
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_password-label-embedded-spinbutton-manual.html
@@ -0,0 +1,73 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name password-label-embedded-spinbutton</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "foo 5 baz"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "foo 5 baz"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "foo 5 baz"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "foo 5 baz"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name password-label-embedded-spinbutton"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name password-label-embedded-spinbutton.</p>
+ <input type="password" id="test" />
+ <label for="test">foo <input role="spinbutton" type="number" value="5" min="1" max="10" aria-valuenow="5" aria-valuemin="1" aria-valuemax="10"> baz
+ </label>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_password-title-manual.html b/tests/wpt/web-platform-tests/accname/name_password-title-manual.html
new file mode 100644
index 00000000000..2ea977fd289
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_password-title-manual.html
@@ -0,0 +1,71 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name password-title</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "foo"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "foo"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "foo"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "foo"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name password-title"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name password-title.</p>
+ <input type="password" id="test" title="foo" />
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_radio-label-embedded-combobox-manual.html b/tests/wpt/web-platform-tests/accname/name_radio-label-embedded-combobox-manual.html
new file mode 100644
index 00000000000..72d7017c534
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_radio-label-embedded-combobox-manual.html
@@ -0,0 +1,82 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name radio-label-embedded-combobox</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name radio-label-embedded-combobox"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name radio-label-embedded-combobox.</p>
+ <input type="radio" id="test" />
+ <label for="test">Flash the screen
+ <div role="combobox">
+ <div role="textbox"></div>
+ <ul role="listbox" style="list-style-type: none;">
+ <li role="option" aria-selected="true">1</li>
+ <li role="option">2</li>
+ <li role="option">3</li>
+ </ul>
+ </div>
+ times.
+ </label>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_radio-label-embedded-menu-manual.html b/tests/wpt/web-platform-tests/accname/name_radio-label-embedded-menu-manual.html
new file mode 100644
index 00000000000..ff025000595
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_radio-label-embedded-menu-manual.html
@@ -0,0 +1,79 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name radio-label-embedded-menu</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name radio-label-embedded-menu"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name radio-label-embedded-menu.</p>
+ <input type="radio" id="test" />
+ <label for="test">Flash the screen
+ <span role="menu">
+ <span role="menuitem" aria-selected="true">1</span>
+ <span role="menuitem" hidden>2</span>
+ <span role="menuitem" hidden>3</span>
+ </span>
+ times.
+ </label>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_radio-label-embedded-select-manual.html b/tests/wpt/web-platform-tests/accname/name_radio-label-embedded-select-manual.html
new file mode 100644
index 00000000000..185d8932969
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_radio-label-embedded-select-manual.html
@@ -0,0 +1,79 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name radio-label-embedded-select</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name radio-label-embedded-select"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name radio-label-embedded-select.</p>
+ <input type="radio" id="test" />
+ <label for="test">Flash the screen
+ <select size="1">
+ <option selected="selected">1</option>
+ <option>2</option>
+ <option>3</option>
+ </select>
+ times.
+ </label>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_radio-label-embedded-slider-manual.html b/tests/wpt/web-platform-tests/accname/name_radio-label-embedded-slider-manual.html
new file mode 100644
index 00000000000..aea5f8b85ce
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_radio-label-embedded-slider-manual.html
@@ -0,0 +1,73 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name radio-label-embedded-slider</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "foo 5 baz"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "foo 5 baz"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "foo 5 baz"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "foo 5 baz"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name radio-label-embedded-slider"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name radio-label-embedded-slider.</p>
+ <input type="radio" id="test" />
+ <label for="test">foo <input role="slider" type="range" value="5" min="1" max="10" aria-valuenow="5" aria-valuemin="1" aria-valuemax="10"> baz
+ </label>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_radio-label-embedded-spinbutton-manual.html b/tests/wpt/web-platform-tests/accname/name_radio-label-embedded-spinbutton-manual.html
new file mode 100644
index 00000000000..af3fe8285ac
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_radio-label-embedded-spinbutton-manual.html
@@ -0,0 +1,73 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name radio-label-embedded-spinbutton</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "foo 5 baz"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "foo 5 baz"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "foo 5 baz"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "foo 5 baz"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name radio-label-embedded-spinbutton"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name radio-label-embedded-spinbutton.</p>
+ <input type="radio" id="test" />
+ <label for="test">foo <input role="spinbutton" type="number" value="5" min="1" max="10" aria-valuenow="5" aria-valuemin="1" aria-valuemax="10"> baz
+ </label>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_radio-title-manual.html b/tests/wpt/web-platform-tests/accname/name_radio-title-manual.html
new file mode 100644
index 00000000000..aef42728a6c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_radio-title-manual.html
@@ -0,0 +1,71 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name radio-title</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "foo"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "foo"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "foo"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "foo"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name radio-title"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name radio-title.</p>
+ <input type="radio" id="test" title="foo" />
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_539-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_539-manual.html
new file mode 100644
index 00000000000..da1925241c9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_539-manual.html
@@ -0,0 +1,71 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 539</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "Rich"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "Rich"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "Rich"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "Rich"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 539"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 539.</p>
+ <input type="button" aria-label="Rich" id="test">
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_540-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_540-manual.html
new file mode 100644
index 00000000000..5fde86535bb
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_540-manual.html
@@ -0,0 +1,72 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 540</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "Rich's button"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "Rich's button"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "Rich's button"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "Rich's button"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 540"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 540.</p>
+ <div id="ID1">Rich's button</div>
+ <input type="button" aria-labelledby="ID1" id="test">
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_541-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_541-manual.html
new file mode 100644
index 00000000000..74b44b57de4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_541-manual.html
@@ -0,0 +1,72 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 541</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "Rich's button"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "Rich's button"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "Rich's button"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "Rich's button"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 541"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 541.</p>
+ <div id="ID1">Rich's button</div>
+ <input type="button" aria-label="bar" aria-labelledby="ID1" id="test"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_543-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_543-manual.html
new file mode 100644
index 00000000000..1759ffacdd8
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_543-manual.html
@@ -0,0 +1,71 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 543</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "Reset"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "Reset"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "Reset"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "Reset"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 543"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 543.</p>
+ <input type="reset" id="test"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_544-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_544-manual.html
new file mode 100644
index 00000000000..267c9302f7d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_544-manual.html
@@ -0,0 +1,71 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 544</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "foo"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "foo"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "foo"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "foo"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 544"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 544.</p>
+ <input type="button" id="test" value="foo"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_545-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_545-manual.html
new file mode 100644
index 00000000000..fda6fe1b50c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_545-manual.html
@@ -0,0 +1,71 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 545</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "foo"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "foo"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "foo"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "foo"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 545"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 545.</p>
+ <input src="baz.html" type="image" id="test" alt="foo"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_546-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_546-manual.html
new file mode 100644
index 00000000000..6dd735b6219
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_546-manual.html
@@ -0,0 +1,72 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 546</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "States:"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "States:"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "States:"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "States:"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 546"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 546.</p>
+ <label for="test">States:</label>
+ <input type="text" id="test"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_547-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_547-manual.html
new file mode 100644
index 00000000000..f80f7bb8a6f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_547-manual.html
@@ -0,0 +1,75 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 547</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "foo David"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "foo David"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "foo David"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "foo David"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 547"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 547.</p>
+ <label for="test">
+ foo
+ <input type="text" value="David"/>
+ </label>
+ <input type="text" id="test" value="baz"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_548-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_548-manual.html
new file mode 100644
index 00000000000..5f32846c406
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_548-manual.html
@@ -0,0 +1,78 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 548</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "crazy clown"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "crazy clown"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "crazy clown"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "crazy clown"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 548"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 548.</p>
+ <label for="test">
+ crazy
+ <select name="member" size="1" role="menu" tabindex="0">
+ <option role="menuitem" value="beard" selected="true">clown</option>
+ <option role="menuitem" value="scuba">rich</option>
+ </select>
+ </label>
+ <input type="text" id="test" value="baz"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_549-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_549-manual.html
new file mode 100644
index 00000000000..97839a4c6a8
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_549-manual.html
@@ -0,0 +1,76 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 549</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "crazy Monday"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "crazy Monday"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "crazy Monday"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "crazy Monday"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 549"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 549.</p>
+ <label for="test">
+ crazy
+ <div role="spinbutton" aria-valuetext="Monday" aria-valuemin="1" aria-valuemax="7" aria-valuenow="4">
+ </div>
+ </label>
+ <input type="text" id="test" value="baz"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_550-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_550-manual.html
new file mode 100644
index 00000000000..70740219883
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_550-manual.html
@@ -0,0 +1,76 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 550</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "crazy 4"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "crazy 4"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "crazy 4"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "crazy 4"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 550"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 550.</p>
+ <label for="test">
+ crazy
+ <div role="spinbutton" aria-valuemin="1" aria-valuemax="7" aria-valuenow="4">
+ </div>
+ </label>
+ <input type="text" id="test" value="baz"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_551-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_551-manual.html
new file mode 100644
index 00000000000..2b55d07cb34
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_551-manual.html
@@ -0,0 +1,71 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 551</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "crazy"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "crazy"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "crazy"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "crazy"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 551"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 551.</p>
+ <input type="text" id="test" title="crazy" value="baz"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_552-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_552-manual.html
new file mode 100644
index 00000000000..0b0ed397a12
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_552-manual.html
@@ -0,0 +1,75 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 552</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "fancy fruit"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "fancy fruit"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "fancy fruit"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "fancy fruit"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 552"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 552.</p>
+ <style>
+ label:before { content:"fancy "; }
+ </style>
+ <label for="test">fruit</label>
+ <input type="text" id="test"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_553-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_553-manual.html
new file mode 100644
index 00000000000..a7f67749f71
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_553-manual.html
@@ -0,0 +1,75 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 553</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "test content"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "test content"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "test content"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "test content"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 553"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 553.</p>
+ <style type="text/css">
+ [data-after]:after { content: attr(data-after); }
+ </style>
+ <label for="test" data-after="test content"></label>
+ <input type="text" id="test">
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_556-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_556-manual.html
new file mode 100644
index 00000000000..24453584561
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_556-manual.html
@@ -0,0 +1,71 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 556</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "1"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "1"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "1"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "1"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 556"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 556.</p>
+ <img id="test" src="foo.jpg" aria-label="1"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_557-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_557-manual.html
new file mode 100644
index 00000000000..7d5d86748d2
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_557-manual.html
@@ -0,0 +1,71 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 557</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "1"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "1"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "1"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "1"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 557"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 557.</p>
+ <img id="test" src="foo.jpg" aria-label="1" alt="a" title="t"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_558-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_558-manual.html
new file mode 100644
index 00000000000..1994cd992b8
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_558-manual.html
@@ -0,0 +1,72 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 558</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "peanuts"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "peanuts"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "peanuts"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "peanuts"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 558"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 558.</p>
+ <input type="text" value="peanuts" id="test">
+ <img aria-labelledby="test" src="foo.jpg"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_559-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_559-manual.html
new file mode 100644
index 00000000000..61afa5552fe
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_559-manual.html
@@ -0,0 +1,71 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 559</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ ""
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ ""
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ ""
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ ""
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 559"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 559.</p>
+ <img id="test" aria-labelledby="test" src="foo.jpg"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_560-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_560-manual.html
new file mode 100644
index 00000000000..aff2a0916ef
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_560-manual.html
@@ -0,0 +1,72 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 560</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "peanuts"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "peanuts"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "peanuts"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "peanuts"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 560"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 560.</p>
+ <input type="text" value="peanuts" id="test">
+ <img aria-labelledby="test" aria-label="1" src="foo.jpg"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_561-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_561-manual.html
new file mode 100644
index 00000000000..c4b2bccd72a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_561-manual.html
@@ -0,0 +1,71 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 561</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "1"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "1"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "1"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "1"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 561"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 561.</p>
+ <img id="test" aria-labelledby="test" aria-label="1" src="foo.jpg"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_562-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_562-manual.html
new file mode 100644
index 00000000000..941e3cd6e8f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_562-manual.html
@@ -0,0 +1,74 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 562</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "peanuts popcorn apple jacks"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "peanuts popcorn apple jacks"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "peanuts popcorn apple jacks"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "peanuts popcorn apple jacks"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 562"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 562.</p>
+ <input type="text" value="peanuts" id="ID1">
+ <input type="text" value="popcorn" id="ID2">
+ <input type="text" value="apple jacks" id="ID3">
+ <img aria-labelledby="ID1 ID2 ID3" id="test" src="foo.jpg"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_563-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_563-manual.html
new file mode 100644
index 00000000000..580f515d07b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_563-manual.html
@@ -0,0 +1,72 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 563</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "l peanuts"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "l peanuts"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "l peanuts"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "l peanuts"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 563"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 563.</p>
+ <input type="text" value="peanuts" id="ID1">
+ <img id="test" aria-label="l" aria-labelledby="test ID1" src="foo.jpg"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_564-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_564-manual.html
new file mode 100644
index 00000000000..22c2a542a42
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_564-manual.html
@@ -0,0 +1,73 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 564</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "l peanuts popcorn"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "l peanuts popcorn"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "l peanuts popcorn"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "l peanuts popcorn"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 564"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 564.</p>
+ <input type="text" value="peanuts" id="ID1">
+ <input type="text" value="popcorn" id="ID2">
+ <img id="test" aria-label="l" aria-labelledby="test ID1 ID2" src="foo.jpg"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_565-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_565-manual.html
new file mode 100644
index 00000000000..64f6320d331
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_565-manual.html
@@ -0,0 +1,74 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 565</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "l peanuts popcorn apple jacks"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "l peanuts popcorn apple jacks"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "l peanuts popcorn apple jacks"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "l peanuts popcorn apple jacks"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 565"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 565.</p>
+ <input type="text" value="peanuts" id="ID1">
+ <input type="text" value="popcorn" id="ID2">
+ <input type="text" value="apple jacks" id="ID3">
+ <img id="test" aria-label="l" aria-labelledby="test ID1 ID2 ID3" alt= "a" title="t" src="foo.jpg"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_566-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_566-manual.html
new file mode 100644
index 00000000000..20189f31899
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_566-manual.html
@@ -0,0 +1,74 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 566</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "t peanuts popcorn apple jacks"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "t peanuts popcorn apple jacks"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "t peanuts popcorn apple jacks"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "t peanuts popcorn apple jacks"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 566"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 566.</p>
+ <input type="text" value="peanuts" id="ID1">
+ <input type="text" value="popcorn" id="ID2">
+ <input type="text" value="apple jacks" id="ID3">
+ <img id="test" aria-label="" aria-labelledby="test ID1 ID2 ID3" alt="" title="t" src="foo.jpg"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_596-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_596-manual.html
new file mode 100644
index 00000000000..2ee191c375e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_596-manual.html
@@ -0,0 +1,72 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 596</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "bar"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "bar"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "bar"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "bar"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 596"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 596.</p>
+ <div id="test" aria-labelledby="ID1">foo</div>
+ <span id="ID1">bar</span>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_597-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_597-manual.html
new file mode 100644
index 00000000000..4c4c527a661
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_597-manual.html
@@ -0,0 +1,71 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 597</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "Tag"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "Tag"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "Tag"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "Tag"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 597"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 597.</p>
+ <div id="test" aria-label="Tag">foo</div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_598-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_598-manual.html
new file mode 100644
index 00000000000..9a150111b32
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_598-manual.html
@@ -0,0 +1,72 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 598</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "bar"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "bar"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "bar"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "bar"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 598"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 598.</p>
+ <div id="test" aria-labelledby="ID1" aria-label="Tag">foo</div>
+ <span id="ID1">bar</span>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_599-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_599-manual.html
new file mode 100644
index 00000000000..45041234ef8
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_599-manual.html
@@ -0,0 +1,73 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 599</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "bar baz"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "bar baz"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "bar baz"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "bar baz"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 599"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 599.</p>
+ <div id="test" aria-labelledby="ID0 ID1" aria-label="Tag">foo</div>
+ <span id="ID0">bar</span>
+ <span id="ID1">baz</span>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_600-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_600-manual.html
new file mode 100644
index 00000000000..8f572563a2f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_600-manual.html
@@ -0,0 +1,71 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 600</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ ""
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ ""
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ ""
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ ""
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 600"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 600.</p>
+ <div id="test">Div with text</div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_601-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_601-manual.html
new file mode 100644
index 00000000000..4dadf8a05c2
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_601-manual.html
@@ -0,0 +1,71 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 601</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "foo"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "foo"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "foo"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "foo"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 601"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 601.</p>
+ <div id="test" role="button">foo</div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_602-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_602-manual.html
new file mode 100644
index 00000000000..8f7f11a506c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_602-manual.html
@@ -0,0 +1,72 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 602</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "Tag"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "Tag"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "Tag"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "Tag"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 602"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 602.</p>
+ <div id="test" role="button" title="Tag" style="outline:medium solid black; width:2em; height:1em;">
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_603-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_603-manual.html
new file mode 100644
index 00000000000..c4e3d5e5697
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_603-manual.html
@@ -0,0 +1,72 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 603</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "foo"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "foo"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "foo"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "foo"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 603"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 603.</p>
+ <div id="ID1">foo</div>
+ <a id="test" href="test.html" aria-labelledby="ID1">bar</a>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_604-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_604-manual.html
new file mode 100644
index 00000000000..c1847087ee5
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_604-manual.html
@@ -0,0 +1,71 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 604</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "Tag"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "Tag"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "Tag"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "Tag"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 604"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 604.</p>
+ <a id="test" href="test.html" aria-label="Tag">ABC</a>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_605-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_605-manual.html
new file mode 100644
index 00000000000..5212857425e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_605-manual.html
@@ -0,0 +1,72 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 605</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "bar"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "bar"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "bar"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "bar"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 605"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 605.</p>
+ <a href="test.html" id="test" aria-labelledby="ID1" aria-label="Tag">foo</a>
+ <p id="ID1">bar</p>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_606-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_606-manual.html
new file mode 100644
index 00000000000..8c3c4610b1a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_606-manual.html
@@ -0,0 +1,72 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 606</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "Tag foo"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "Tag foo"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "Tag foo"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "Tag foo"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 606"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 606.</p>
+ <a href="test.html" id="test" aria-labelledby="test ID1" aria-label="Tag"></a>
+ <p id="ID1">foo</p>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_607-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_607-manual.html
new file mode 100644
index 00000000000..c68dd031dcf
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_607-manual.html
@@ -0,0 +1,71 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 607</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "ABC"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "ABC"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "ABC"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "ABC"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 607"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 607.</p>
+ <a href="test.html" id="test">ABC</a>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_608-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_608-manual.html
new file mode 100644
index 00000000000..cf4423cb4f0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_608-manual.html
@@ -0,0 +1,71 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 608</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "Tag"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "Tag"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "Tag"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "Tag"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 608"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 608.</p>
+ <a href="test.html" id="test" title="Tag"></a>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_609-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_609-manual.html
new file mode 100644
index 00000000000..e7ce0ed57be
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_609-manual.html
@@ -0,0 +1,74 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 609</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "foo bar baz"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "foo bar baz"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "foo bar baz"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "foo bar baz"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 609"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 609.</p>
+ <input id="test" type="text" aria-labelledby="ID1 ID2 ID3">
+ <p id="ID1">foo</p>
+ <p id="ID2">bar</p>
+ <p id="ID3">baz</p>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_610-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_610-manual.html
new file mode 100644
index 00000000000..3398e8437f7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_610-manual.html
@@ -0,0 +1,72 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 610</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "foo bar"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "foo bar"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "foo bar"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "foo bar"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 610"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 610.</p>
+ <input id="test" type="text" aria-label="bar" aria-labelledby="ID1 test">
+ <div id="ID1">foo</label>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_611-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_611-manual.html
new file mode 100644
index 00000000000..458dc3532ed
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_611-manual.html
@@ -0,0 +1,72 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 611</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "foo"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "foo"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "foo"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "foo"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 611"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 611.</p>
+ <input id="test" type="text"/>
+ <label for="test">foo</label>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_612-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_612-manual.html
new file mode 100644
index 00000000000..c3e44806674
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_612-manual.html
@@ -0,0 +1,72 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 612</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "foo"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "foo"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "foo"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "foo"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 612"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 612.</p>
+ <input type="password" id="test">
+ <label for="test">foo</label>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_613-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_613-manual.html
new file mode 100644
index 00000000000..b83a7bdadc9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_613-manual.html
@@ -0,0 +1,72 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 613</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "foo"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "foo"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "foo"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "foo"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 613"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 613.</p>
+ <input type="checkbox" id="test">
+ <label for="test">foo</label></body>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_614-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_614-manual.html
new file mode 100644
index 00000000000..0f6beb6b57c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_614-manual.html
@@ -0,0 +1,72 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 614</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "foo"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "foo"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "foo"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "foo"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 614"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 614.</p>
+ <input type="radio" id="test">
+ <label for="test">foo</label>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_615-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_615-manual.html
new file mode 100644
index 00000000000..ae06ecf2105
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_615-manual.html
@@ -0,0 +1,72 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 615</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "foo"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "foo"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "foo"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "foo"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 615"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 615.</p>
+ <input type="file" id="test">
+ <label for="test">foo</label>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_616-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_616-manual.html
new file mode 100644
index 00000000000..335e781dcbd
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_616-manual.html
@@ -0,0 +1,72 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 616</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "foo"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "foo"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "foo"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "foo"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 616"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 616.</p>
+ <input type="image" id="test">
+ <label for="test">foo</label>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_617-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_617-manual.html
new file mode 100644
index 00000000000..2ba89d38e33
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_617-manual.html
@@ -0,0 +1,72 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 617</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "foo bar baz"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "foo bar baz"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "foo bar baz"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "foo bar baz"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 617"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 617.</p>
+ <input type="checkbox" id="test">
+ <label for="test">foo<input type="text" value="bar">baz</label>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_618-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_618-manual.html
new file mode 100644
index 00000000000..0af6532c57b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_618-manual.html
@@ -0,0 +1,72 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 618</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "foo bar baz"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "foo bar baz"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "foo bar baz"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "foo bar baz"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 618"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 618.</p>
+ <input type="text" id="test">
+ <label for="test">foo<input type="text" value="bar">baz</label>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_619-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_619-manual.html
new file mode 100644
index 00000000000..154ad359f47
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_619-manual.html
@@ -0,0 +1,72 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 619</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "foo bar baz"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "foo bar baz"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "foo bar baz"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "foo bar baz"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 619"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 619.</p>
+ <input type="password" id="test">
+ <label for="test">foo<input type="text" value="bar">baz</label>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_620-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_620-manual.html
new file mode 100644
index 00000000000..b1774e2c00d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_620-manual.html
@@ -0,0 +1,72 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 620</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "foo bar baz"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "foo bar baz"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "foo bar baz"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "foo bar baz"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 620"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 620.</p>
+ <input type="radio" id="test">
+ <label for="test">foo<input type="text" value="bar">baz</label>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_621-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_621-manual.html
new file mode 100644
index 00000000000..8fb303bfb40
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_621-manual.html
@@ -0,0 +1,72 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 621</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "foo bar baz"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "foo bar baz"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "foo bar baz"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "foo bar baz"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 621"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 621.</p>
+ <input type="file" id="test">
+ <label for="test">foo <input type="text" value="bar"> baz</label>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_659-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_659-manual.html
new file mode 100644
index 00000000000..97d84e5c92d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_659-manual.html
@@ -0,0 +1,77 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 659</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "foo bar baz"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "foo bar baz"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "foo bar baz"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "foo bar baz"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 659"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 659.</p>
+ <style type="text/css">
+ label:before { content: "foo"; }
+ label:after { content: "baz"; }
+ </style>
+ <form>
+ <label for="test" title="bar"><input id="test" type="text" name="test" title="bar"></label>
+ </form>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_660-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_660-manual.html
new file mode 100644
index 00000000000..3cbd92a0adf
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_660-manual.html
@@ -0,0 +1,77 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 660</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "foo bar baz"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "foo bar baz"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "foo bar baz"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "foo bar baz"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 660"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 660.</p>
+ <style type="text/css">
+ label:before { content: "foo"; }
+ label:after { content: "baz"; }
+ </style>
+ <form>
+ <label for="test" title="bar"><input id="test" type="password" name="test" title="bar"></label>
+ </form>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_661-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_661-manual.html
new file mode 100644
index 00000000000..4ed32ec0782
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_661-manual.html
@@ -0,0 +1,77 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 661</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "foo bar baz"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "foo bar baz"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "foo bar baz"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "foo bar baz"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 661"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 661.</p>
+ <style type="text/css">
+ label:before { content: "foo"; }
+ label:after { content: "baz"; }
+ </style>
+ <form>
+ <label for="test"><input id="test" type="checkbox" name="test" title=" bar "></label>
+ </form>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_662-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_662-manual.html
new file mode 100644
index 00000000000..15e706c8c86
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_662-manual.html
@@ -0,0 +1,77 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 662</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "foo bar baz"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "foo bar baz"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "foo bar baz"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "foo bar baz"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 662"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 662.</p>
+ <style type="text/css">
+ label:before { content: "foo"; }
+ label:after { content: "baz"; }
+ </style>
+ <form>
+ <label for="test"><input id="test" type="radio" name="test" title=" bar "></label>
+ </form>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_663-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_663-manual.html
new file mode 100644
index 00000000000..883c1a9e38b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_663-manual.html
@@ -0,0 +1,77 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 663</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "foo bar baz"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "foo bar baz"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "foo bar baz"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "foo bar baz"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 663"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 663.</p>
+ <style type="text/css">
+ label:before { content: "foo"; }
+ label:after { content: "baz"; }
+ </style>
+ <form>
+ <label for="test"><input id="test" type="file" name="test" title="bar"></label>
+ </form>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_663a-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_663a-manual.html
new file mode 100644
index 00000000000..1e71fd514c7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_663a-manual.html
@@ -0,0 +1,77 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 663a</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "foo bar baz"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "foo bar baz"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "foo bar baz"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "foo bar baz"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 663a"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 663a.</p>
+ <style type="text/css">
+ label:before { content: "foo"; }
+ label:after { content: "baz"; }
+ </style>
+ <form>
+ <label for="test"><input id="test" type="image" src="foo.jpg" name="test" title="bar"></label>
+ </form>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_721-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_721-manual.html
new file mode 100644
index 00000000000..4a2d8c555b5
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_721-manual.html
@@ -0,0 +1,72 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 721</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "States:"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "States:"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "States:"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "States:"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 721"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 721.</p>
+ <label for="test">States:</label>
+ <input type="password" id="test"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_723-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_723-manual.html
new file mode 100644
index 00000000000..0d1535cb6ca
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_723-manual.html
@@ -0,0 +1,72 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 723</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "States:"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "States:"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "States:"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "States:"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 723"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 723.</p>
+ <label for="test">States:</label>
+ <input type="checkbox" id="test"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_724-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_724-manual.html
new file mode 100644
index 00000000000..d69eda490b9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_724-manual.html
@@ -0,0 +1,72 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 724</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "States:"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "States:"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "States:"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "States:"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 724"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 724.</p>
+ <label for="test">States:</label>
+ <input type="radio" id="test"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_725-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_725-manual.html
new file mode 100644
index 00000000000..47bb9d5ff5a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_725-manual.html
@@ -0,0 +1,72 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 725</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "File:"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "File:"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "File:"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "File:"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 725"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 725.</p>
+ <label for="test">File:</label>
+ <input type="file" id="test"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_726-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_726-manual.html
new file mode 100644
index 00000000000..45996d9095f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_726-manual.html
@@ -0,0 +1,72 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 726</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "States:"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "States:"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "States:"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "States:"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 726"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 726.</p>
+ <label for="test">States:</label>
+ <input type="image" id="test" src="foo.jpg"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_727-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_727-manual.html
new file mode 100644
index 00000000000..2f7f589e927
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_727-manual.html
@@ -0,0 +1,75 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 727</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "foo David"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "foo David"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "foo David"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "foo David"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 727"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 727.</p>
+ <label for="test">
+ foo
+ <input type="text" value="David"/>
+ </label>
+ <input type="password" id="test" value="baz"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_728-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_728-manual.html
new file mode 100644
index 00000000000..0a5d003839a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_728-manual.html
@@ -0,0 +1,75 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 728</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "foo David"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "foo David"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "foo David"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "foo David"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 728"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 728.</p>
+ <label for="test">
+ foo
+ <input type="text" value="David"/>
+ </label>
+ <input type="checkbox" id="test"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_729-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_729-manual.html
new file mode 100644
index 00000000000..a4a302ea49a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_729-manual.html
@@ -0,0 +1,75 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 729</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "foo David"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "foo David"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "foo David"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "foo David"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 729"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 729.</p>
+ <label for="test">
+ foo
+ <input type="text" value="David"/>
+ </label>
+ <input type="radio" id="test"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_730-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_730-manual.html
new file mode 100644
index 00000000000..230c1998942
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_730-manual.html
@@ -0,0 +1,75 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 730</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "foo David"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "foo David"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "foo David"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "foo David"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 730"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 730.</p>
+ <label for="test">
+ foo
+ <input type="text" value="David"/>
+ </label>
+ <input type="file" id="test"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_731-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_731-manual.html
new file mode 100644
index 00000000000..613bdc6f106
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_731-manual.html
@@ -0,0 +1,75 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 731</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "foo David"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "foo David"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "foo David"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "foo David"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 731"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 731.</p>
+ <label for="test">
+ foo
+ <input type="text" value="David"/>
+ </label>
+ <input type="image" id="test" src="foo.jpg"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_733-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_733-manual.html
new file mode 100644
index 00000000000..cf254067777
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_733-manual.html
@@ -0,0 +1,78 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 733</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "crazy clown"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "crazy clown"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "crazy clown"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "crazy clown"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 733"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 733.</p>
+ <label for="test">
+ crazy
+ <select name="member" size="1" role="menu" tabindex="0">
+ <option role="menuitem" value="beard" selected="true">clown</option>
+ <option role="menuitem" value="scuba">rich</option>
+ </select>
+ </label>
+ <input type="password" id="test"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_734-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_734-manual.html
new file mode 100644
index 00000000000..ed014af05aa
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_734-manual.html
@@ -0,0 +1,78 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 734</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "crazy clown"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "crazy clown"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "crazy clown"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "crazy clown"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 734"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 734.</p>
+ <label for="test">
+ crazy
+ <select name="member" size="1" role="menu" tabindex="0">
+ <option role="menuitem" value="beard" selected="true">clown</option>
+ <option role="menuitem" value="scuba">rich</option>
+ </select>
+ </label>
+ <input type="checkbox" id="test"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_735-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_735-manual.html
new file mode 100644
index 00000000000..c82e7f37d71
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_735-manual.html
@@ -0,0 +1,78 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 735</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "crazy clown"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "crazy clown"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "crazy clown"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "crazy clown"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 735"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 735.</p>
+ <label for="test">
+ crazy
+ <select name="member" size="1" role="menu" tabindex="0">
+ <option role="menuitem" value="beard" selected="true">clown</option>
+ <option role="menuitem" value="scuba">rich</option>
+ </select>
+ </label>
+ <input type="radio" id="test"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_736-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_736-manual.html
new file mode 100644
index 00000000000..b10508886ec
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_736-manual.html
@@ -0,0 +1,78 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 736</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "crazy clown"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "crazy clown"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "crazy clown"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "crazy clown"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 736"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 736.</p>
+ <label for="test">
+ crazy
+ <select name="member" size="1" role="menu" tabindex="0">
+ <option role="menuitem" value="beard" selected="true">clown</option>
+ <option role="menuitem" value="scuba">rich</option>
+ </select>
+ </label>
+ <input type="file" id="test"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_737-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_737-manual.html
new file mode 100644
index 00000000000..6493316951f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_737-manual.html
@@ -0,0 +1,78 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 737</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "crazy clown"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "crazy clown"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "crazy clown"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "crazy clown"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 737"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 737.</p>
+ <label for="test">
+ crazy
+ <select name="member" size="1" role="menu" tabindex="0">
+ <option role="menuitem" value="beard" selected="true">clown</option>
+ <option role="menuitem" value="scuba">rich</option>
+ </select>
+ </label>
+ <input type="image" id="test" src="foo.jpg"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_738-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_738-manual.html
new file mode 100644
index 00000000000..a462b03973f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_738-manual.html
@@ -0,0 +1,76 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 738</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "crazy Monday"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "crazy Monday"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "crazy Monday"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "crazy Monday"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 738"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 738.</p>
+ <label for="test">
+ crazy
+ <div role="spinbutton" aria-valuetext="Monday" aria-valuemin="1" aria-valuemax="7" aria-valuenow="4">
+ </div>
+ </label>
+ <input type="password" value="baz" id="test"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_739-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_739-manual.html
new file mode 100644
index 00000000000..3688cba8e02
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_739-manual.html
@@ -0,0 +1,76 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 739</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "crazy Monday"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "crazy Monday"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "crazy Monday"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "crazy Monday"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 739"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 739.</p>
+ <label for="test">
+ crazy
+ <div role="spinbutton" aria-valuetext="Monday" aria-valuemin="1" aria-valuemax="7" aria-valuenow="4">
+ </div>
+ </label>
+ <input type="checkbox" id="test"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_740-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_740-manual.html
new file mode 100644
index 00000000000..716b1f9d23b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_740-manual.html
@@ -0,0 +1,76 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 740</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "crazy Monday"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "crazy Monday"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "crazy Monday"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "crazy Monday"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 740"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 740.</p>
+ <label for="test">
+ crazy
+ <div role="spinbutton" aria-valuetext="Monday" aria-valuemin="1" aria-valuemax="7" aria-valuenow="4">
+ </div>
+ </label>
+ <input type="radio" id="test"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_741-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_741-manual.html
new file mode 100644
index 00000000000..6da7ff2d6f9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_741-manual.html
@@ -0,0 +1,76 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 741</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "crazy Monday"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "crazy Monday"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "crazy Monday"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "crazy Monday"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 741"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 741.</p>
+ <label for="test">
+ crazy
+ <div role="spinbutton" aria-valuetext="Monday" aria-valuemin="1" aria-valuemax="7" aria-valuenow="4">
+ </div>
+ </label>
+ <input type="file" id="test"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_742-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_742-manual.html
new file mode 100644
index 00000000000..80f9e274bc3
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_742-manual.html
@@ -0,0 +1,76 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 742</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "crazy Monday"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "crazy Monday"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "crazy Monday"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "crazy Monday"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 742"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 742.</p>
+ <label for="test">
+ crazy
+ <div role="spinbutton" aria-valuetext="Monday" aria-valuemin="1" aria-valuemax="7" aria-valuenow="4">
+ </div>
+ </label>
+ <input type="image" src="foo.jpg" id="test"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_743-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_743-manual.html
new file mode 100644
index 00000000000..8df359cfc69
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_743-manual.html
@@ -0,0 +1,76 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 743</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "crazy 4"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "crazy 4"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "crazy 4"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "crazy 4"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 743"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 743.</p>
+ <label for="test">
+ crazy
+ <div role="spinbutton" aria-valuemin="1" aria-valuemax="7" aria-valuenow="4">
+ </div>
+ </label>
+ <input type="password" id="test" value="baz"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_744-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_744-manual.html
new file mode 100644
index 00000000000..528cf71005e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_744-manual.html
@@ -0,0 +1,76 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 744</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "crazy 4"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "crazy 4"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "crazy 4"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "crazy 4"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 744"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 744.</p>
+ <label for="test">
+ crazy
+ <div role="spinbutton" aria-valuemin="1" aria-valuemax="7" aria-valuenow="4">
+ </div>
+ </label>
+ <input type="checkbox" id="test"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_745-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_745-manual.html
new file mode 100644
index 00000000000..f25740059d1
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_745-manual.html
@@ -0,0 +1,76 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 745</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "crazy 4"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "crazy 4"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "crazy 4"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "crazy 4"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 745"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 745.</p>
+ <label for="test">
+ crazy
+ <div role="spinbutton" aria-valuemin="1" aria-valuemax="7" aria-valuenow="4">
+ </div>
+ </label>
+ <input type="radio" id="test"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_746-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_746-manual.html
new file mode 100644
index 00000000000..0477908e9c5
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_746-manual.html
@@ -0,0 +1,76 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 746</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "crazy 4"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "crazy 4"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "crazy 4"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "crazy 4"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 746"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 746.</p>
+ <label for="test">
+ crazy
+ <div role="spinbutton" aria-valuemin="1" aria-valuemax="7" aria-valuenow="4">
+ </div>
+ </label>
+ <input type="file" id="test"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_747-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_747-manual.html
new file mode 100644
index 00000000000..015bd566fde
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_747-manual.html
@@ -0,0 +1,76 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 747</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "crazy 4"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "crazy 4"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "crazy 4"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "crazy 4"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 747"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 747.</p>
+ <label for="test">
+ crazy
+ <div role="spinbutton" aria-valuemin="1" aria-valuemax="7" aria-valuenow="4">
+ </div>
+ </label>
+ <input type="image" src="foo.jpg" id="test"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_748-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_748-manual.html
new file mode 100644
index 00000000000..ddbed2c9a75
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_748-manual.html
@@ -0,0 +1,71 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 748</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "crazy"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "crazy"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "crazy"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "crazy"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 748"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 748.</p>
+ <input type="password" id="test" title="crazy" value="baz"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_749-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_749-manual.html
new file mode 100644
index 00000000000..0f542b34766
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_749-manual.html
@@ -0,0 +1,71 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 749</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "crazy"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "crazy"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "crazy"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "crazy"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 749"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 749.</p>
+ <input type="checkbox" id="test" title="crazy"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_750-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_750-manual.html
new file mode 100644
index 00000000000..603a698f8a9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_750-manual.html
@@ -0,0 +1,71 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 750</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "crazy"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "crazy"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "crazy"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "crazy"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 750"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 750.</p>
+ <input type="radio" id="test" title="crazy"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_751-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_751-manual.html
new file mode 100644
index 00000000000..02963819455
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_751-manual.html
@@ -0,0 +1,71 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 751</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "crazy"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "crazy"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "crazy"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "crazy"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 751"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 751.</p>
+ <input type="file" id="test" title="crazy"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_752-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_752-manual.html
new file mode 100644
index 00000000000..52503e62397
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_752-manual.html
@@ -0,0 +1,71 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 752</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "crazy"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "crazy"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "crazy"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "crazy"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 752"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 752.</p>
+ <input type="image" src="foo.jpg" id="test" title="crazy"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_753-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_753-manual.html
new file mode 100644
index 00000000000..8a1278bbe7f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_753-manual.html
@@ -0,0 +1,75 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 753</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "fancy fruit"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "fancy fruit"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "fancy fruit"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "fancy fruit"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 753"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 753.</p>
+ <style>
+ label:before { content:"fancy "; }
+ </style>
+ <label for="test">fruit</label>
+ <input type="password" id="test"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_754-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_754-manual.html
new file mode 100644
index 00000000000..41f06aaea76
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_754-manual.html
@@ -0,0 +1,75 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 754</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "fancy fruit"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "fancy fruit"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "fancy fruit"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "fancy fruit"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 754"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 754.</p>
+ <style>
+ label:before { content:"fancy "; }
+ </style>
+ <label for="test">fruit</label>
+ <input type="checkbox" id="test"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_755-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_755-manual.html
new file mode 100644
index 00000000000..dd410b88e92
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_755-manual.html
@@ -0,0 +1,75 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 755</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "fancy fruit"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "fancy fruit"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "fancy fruit"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "fancy fruit"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 755"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 755.</p>
+ <style>
+ label:before { content:"fancy "; }
+ </style>
+ <label for="test">fruit</label>
+ <input type="radio" id="test"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_756-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_756-manual.html
new file mode 100644
index 00000000000..600d75fe173
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_756-manual.html
@@ -0,0 +1,75 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 756</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "fancy fruit"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "fancy fruit"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "fancy fruit"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "fancy fruit"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 756"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 756.</p>
+ <style>
+ label:before { content:"fancy "; }
+ </style>
+ <label for="test">fruit</label>
+ <input type="file" id="test"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_757-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_757-manual.html
new file mode 100644
index 00000000000..993c4d16c16
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_757-manual.html
@@ -0,0 +1,75 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 757</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "fancy fruit"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "fancy fruit"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "fancy fruit"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "fancy fruit"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 757"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 757.</p>
+ <style>
+ label:before { content:"fancy "; }
+ </style>
+ <label for="test">fruit</label>
+ <input type="image" src="foo.jpg" id="test"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_758-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_758-manual.html
new file mode 100644
index 00000000000..9ab6467a281
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_758-manual.html
@@ -0,0 +1,75 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 758</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "fancy fruit"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "fancy fruit"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "fancy fruit"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "fancy fruit"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 758"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 758.</p>
+ <style>
+ label:after { content:" fruit"; }
+ </style>
+ <label for="test">fancy</label>
+ <input type="password" id="test"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_759-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_759-manual.html
new file mode 100644
index 00000000000..159edc74728
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_759-manual.html
@@ -0,0 +1,75 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 759</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "fancy fruit"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "fancy fruit"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "fancy fruit"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "fancy fruit"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 759"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 759.</p>
+ <style>
+ label:after { content:" fruit"; }
+ </style>
+ <label for="test">fancy</label>
+ <input type="checkbox" id="test"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_760-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_760-manual.html
new file mode 100644
index 00000000000..30d8a7e0e9e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_760-manual.html
@@ -0,0 +1,75 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 760</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "fancy fruit"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "fancy fruit"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "fancy fruit"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "fancy fruit"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 760"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 760.</p>
+ <style>
+ label:after { content:" fruit"; }
+ </style>
+ <label for="test">fancy</label>
+ <input type="radio" id="test"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_761-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_761-manual.html
new file mode 100644
index 00000000000..3dedb942a4d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_761-manual.html
@@ -0,0 +1,75 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 761</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "fancy fruit"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "fancy fruit"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "fancy fruit"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "fruitfancy"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 761"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 761.</p>
+ <style>
+ label:after { content:" fruit"; }
+ </style>
+ <label for="test">fancy</label>
+ <input type="file" id="test"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_762-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_762-manual.html
new file mode 100644
index 00000000000..e131861d0c7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_762-manual.html
@@ -0,0 +1,75 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name test case 762</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "fancy fruit"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "fancy fruit"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "fancy fruit"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "fancy fruit"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name test case 762"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name test case 762.</p>
+ <style>
+ label:after { content:" fruit"; }
+ </style>
+ <label for="test">fancy</label>
+ <input type="image" src="foo.jpg" id="test"/>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_text-label-embedded-combobox-manual.html b/tests/wpt/web-platform-tests/accname/name_text-label-embedded-combobox-manual.html
new file mode 100644
index 00000000000..7fde09c3ce8
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_text-label-embedded-combobox-manual.html
@@ -0,0 +1,82 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name text-label-embedded-combobox</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name text-label-embedded-combobox"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name text-label-embedded-combobox.</p>
+ <input type="text" id="test" />
+ <label for="test">Flash the screen
+ <div role="combobox">
+ <div role="textbox"></div>
+ <ul role="listbox" style="list-style-type: none;">
+ <li role="option" aria-selected="true">1</li>
+ <li role="option">2</li>
+ <li role="option">3</li>
+ </ul>
+ </div>
+ times.
+ </label>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_text-label-embedded-menu-manual.html b/tests/wpt/web-platform-tests/accname/name_text-label-embedded-menu-manual.html
new file mode 100644
index 00000000000..bdd1f5407c7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_text-label-embedded-menu-manual.html
@@ -0,0 +1,79 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name text-label-embedded-menu</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name text-label-embedded-menu"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name text-label-embedded-menu.</p>
+ <input type="text" id="test" />
+ <label for="test">Flash the screen
+ <span role="menu">
+ <span role="menuitem" aria-selected="true">1</span>
+ <span role="menuitem" hidden>2</span>
+ <span role="menuitem" hidden>3</span>
+ </span>
+ times.
+ </label>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_text-label-embedded-select-manual.html b/tests/wpt/web-platform-tests/accname/name_text-label-embedded-select-manual.html
new file mode 100644
index 00000000000..e27a302e611
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_text-label-embedded-select-manual.html
@@ -0,0 +1,79 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name text-label-embedded-select</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "Flash the screen 1 times."
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name text-label-embedded-select"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name text-label-embedded-select.</p>
+ <input type="text" id="test" />
+ <label for="test">Flash the screen
+ <select size="1">
+ <option selected="selected">1</option>
+ <option>2</option>
+ <option>3</option>
+ </select>
+ times.
+ </label>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_text-label-embedded-slider-manual.html b/tests/wpt/web-platform-tests/accname/name_text-label-embedded-slider-manual.html
new file mode 100644
index 00000000000..d65c1c104b6
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_text-label-embedded-slider-manual.html
@@ -0,0 +1,73 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name text-label-embedded-slider</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "foo 5 baz"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "foo 5 baz"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "foo 5 baz"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "foo 5 baz"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name text-label-embedded-slider"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name text-label-embedded-slider.</p>
+ <input type="text" id="test" />
+ <label for="test">foo <input role="slider" type="range" value="5" min="1" max="10" aria-valuenow="5" aria-valuemin="1" aria-valuemax="10"> baz
+ </label>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_text-label-embedded-spinbutton-manual.html b/tests/wpt/web-platform-tests/accname/name_text-label-embedded-spinbutton-manual.html
new file mode 100644
index 00000000000..e81e220eef9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_text-label-embedded-spinbutton-manual.html
@@ -0,0 +1,73 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name text-label-embedded-spinbutton</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "foo 5 baz"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "foo 5 baz"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "foo 5 baz"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "foo 5 baz"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name text-label-embedded-spinbutton"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name text-label-embedded-spinbutton.</p>
+ <input type="text" id="test" />
+ <label for="test">foo <input role="spinbutton" type="number" value="5" min="1" max="10" aria-valuenow="5" aria-valuemin="1" aria-valuemax="10"> baz
+ </label>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/name_text-title-manual.html b/tests/wpt/web-platform-tests/accname/name_text-title-manual.html
new file mode 100644
index 00000000000..cc0b645e89a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/name_text-title-manual.html
@@ -0,0 +1,71 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Name text-title</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "name",
+ "is",
+ "foo"
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXDescription",
+ "is",
+ "foo"
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accName",
+ "is",
+ "foo"
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Name",
+ "is",
+ "foo"
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Name text-title"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Name text-title.</p>
+ <input type="text" id="test" title="foo" />
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/test.png b/tests/wpt/web-platform-tests/accname/test.png
new file mode 100644
index 00000000000..85cfa35fd13
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/test.png
Binary files differ
diff --git a/tests/wpt/web-platform-tests/beacon/headers/header-content-type.html b/tests/wpt/web-platform-tests/beacon/headers/header-content-type.html
index 2d23adfb712..9dd8787b76d 100644
--- a/tests/wpt/web-platform-tests/beacon/headers/header-content-type.html
+++ b/tests/wpt/web-platform-tests/beacon/headers/header-content-type.html
@@ -10,36 +10,30 @@
<script src="/common/utils.js"></script>
<script src="/common/get-host-info.sub.js"></script>
<script>
-var RESOURCES_DIR = "/beacon/resources/";
-
-function pollResult(test, id) {
- var checkUrl = RESOURCES_DIR + "content-type.py?cmd=get&id=" + id;
-
- return new Promise(resolve => {
- step_timeout(test.step_func(() => {
- fetch(checkUrl).then(response => {
- response.text().then(body => {
- resolve(body);
- });
- });
- }), 1000);
- });
-}
+const RESOURCES_DIR = "/beacon/resources/";
function testContentTypeHeader(what, contentType, title) {
- var testBase = RESOURCES_DIR;
- var id = self.token();
- var testUrl = testBase + "content-type.py?cmd=put&id=" + id;
-
- promise_test(function(test) {
+ function wait(ms) {
+ return new Promise(resolve => step_timeout(resolve, ms));
+ }
+ promise_test(async t => {
+ const id = self.token();
+ const testUrl = new Request(RESOURCES_DIR + "content-type.py?cmd=put&id=" + id).url;
assert_true(navigator.sendBeacon(testUrl, what), "SendBeacon Succeeded");
- return pollResult(test, id) .then(result => {
- if (contentType == "multipart/form-data") {
- assert_true(result.startsWith(contentType), "Correct Content-Type header result");
- } else {
- assert_equals(result, contentType, "Correct Content-Type header result");
- }
- });
+ assert_equals(performance.getEntriesByName(testUrl).length, 0);
+
+ do {
+ await wait(50);
+ } while (performance.getEntriesByName(testUrl).length === 0);
+ assert_equals(performance.getEntriesByName(testUrl).length, 1);
+ const checkUrl = RESOURCES_DIR + "content-type.py?cmd=get&id=" + id;
+ const response = await fetch(checkUrl);
+ const text = await response.text();
+ if (contentType === "multipart/form-data") {
+ assert_true(text.startsWith(contentType), "Correct Content-Type header result");
+ } else {
+ assert_equals(text, contentType, "Correct Content-Type header result");
+ }
}, "Test content-type header for a body " + title);
}
diff --git a/tests/wpt/web-platform-tests/cors/image-tainting-in-cross-origin-iframe.sub.html b/tests/wpt/web-platform-tests/cors/image-tainting-in-cross-origin-iframe.sub.html
new file mode 100644
index 00000000000..0cd87756e94
--- /dev/null
+++ b/tests/wpt/web-platform-tests/cors/image-tainting-in-cross-origin-iframe.sub.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<body>
+</body>
+<script>
+async_test(t => {
+ const img = document.createElement('img');
+ img.onload = t.step_func(() => {
+ const iframe = document.createElement('iframe');
+ window.onmessage = t.step_func_done(e => {
+ assert_equals(e.data, 'DONE');
+ });
+ iframe.src = 'http://{{domains[www1]}}:{{ports[http][0]}}/cors/resources/image-tainting-checker.sub.html';
+ document.body.appendChild(iframe);
+ });
+ img.src = '/images/blue-png-cachable.py';
+ document.body.appendChild(img);
+}, 'An image resource that is same-origin to the top-level frame loaded in ' +
+ 'the frame is not treated as same-origin for an iframe that is ' +
+ 'cross-origin to the top-level frame, and therefore a canvas where the ' +
+ 'image is drawn gets tainted.');
+</script>
diff --git a/tests/wpt/web-platform-tests/cors/resources/image-tainting-checker.sub.html b/tests/wpt/web-platform-tests/cors/resources/image-tainting-checker.sub.html
new file mode 100644
index 00000000000..59de9e7a23c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/cors/resources/image-tainting-checker.sub.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<body>
+<canvas id="canvas"></canvas>
+<script>
+// Used by image-tainting-in-cross-origin-iframe.sub.html to check that an
+// image resource loaded by the top level frame that is same-origin to the
+// frame isn't treated as a same-origin resource in a cross-origin iframe.
+const canvas = document.getElementById('canvas');
+const ctx = canvas.getContext('2d');
+const img = new Image();
+img.src = 'http://{{host}}:{{ports[http][0]}}/images/blue-png-cachable.py';
+img.onload = () => {
+ ctx.drawImage(img, 0, 0);
+ try {
+ ctx.getImageData(0, 0, 1, 1);
+ parent.postMessage('FAIL: getImageData() didn\'t throw', '*');
+ } catch (e) {
+ parent.postMessage('DONE', '*');
+ }
+};
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/CSS2/floats/zero-width-floats.html b/tests/wpt/web-platform-tests/css/CSS2/floats/zero-width-floats.html
new file mode 100644
index 00000000000..affecab5132
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/CSS2/floats/zero-width-floats.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<title>Zero width floats</title>
+<link rel="author" title="Morten Stenshorne" href="mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/CSS22/visudet.html#float-width" title="10.3.5 Floating, non-replaced elements">
+<link rel="match" href="../../reference/ref-filled-green-200px-square.html">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="margin-left:50px; width:100px;">
+ <div style="float:left; width:0; height:50px;"></div>
+ <div style="float:right; clear:left; width:0; height:150px;"></div>
+ <div style="overflow:hidden; margin:0 -50px; height:100px; background:green;"></div>
+</div>
+<div style="position:relative; top:-100px; overflow:hidden; clear:both; width:200px; height:100px; background:green;"></div>
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-shorthand-serialization-001.html b/tests/wpt/web-platform-tests/css/css-fonts/font-shorthand-serialization-001.html
new file mode 100644
index 00000000000..e44cc7b7c8d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/font-shorthand-serialization-001.html
@@ -0,0 +1,19 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>CSS Test: font shorthand serialization</title>
+<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
+<link rel="help" href="https://drafts.csswg.org/css-fonts-4/#propdef-font">
+<link rel="help" href="https://drafts.csswg.org/cssom/">
+<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/1564">
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1436031">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div style="font: bold medium serif"></div>
+<script>
+test(function() {
+ assert_equals(
+ document.querySelector('div').style.font, "bold medium serif",
+ "Default values of the longhands don't get serialized on the font shorthand"
+ );
+}, "Default values of the longhands don't get serialized on the font shorthand");
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-absolute-ref.html b/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-absolute-ref.html
new file mode 100644
index 00000000000..416d57c43fa
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-absolute-ref.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<style>
+.container {
+ position: relative;
+ margin: 20px 0;
+ width: 200px;
+ height: 200px;
+ border: solid 2px;
+}
+
+.result {
+ position: absolute;
+ background: green;
+}
+</style>
+<div class="container">
+ <div class="result" style="width: 100px; height: 100px; bottom: 0px;"></div>
+</div>
+<div class="container">
+ <div class="result" style="width: 100px; height: 200px;"></div>
+</div>
+<div class="container">
+ <div class="result" style="width: 100px; height: 100px;"></div>
+</div>
+<div class="container">
+ <div class="result" style="width: 200px; height: 100px;"></div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-absolute.https.html b/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-absolute.https.html
new file mode 100644
index 00000000000..c2a58c9a2a3
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-absolute.https.html
@@ -0,0 +1,73 @@
+<!DOCTYPE html>
+<html class=reftest-wait>
+<link rel="help" href="https://drafts.css-houdini.org/css-layout-api/#interaction-sizing">
+<link rel="match" href="auto-block-size-absolute-ref.html">
+<meta name="assert" content="This test checks that the absolute positioning respects the auto-block-size." />
+
+<style>
+.test {
+ position: absolute;
+ background: red;
+}
+
+@supports (display: layout(block-size-100)) {
+ .test {
+ display: layout(block-size-100);
+ background: green;
+ }
+}
+
+.container {
+ position: relative;
+ margin: 20px 0;
+ width: 200px;
+ height: 200px;
+ border: solid 2px;
+}
+
+.width-100 {
+ width: 100px;
+ writing-mode: horizontal-tb;
+}
+
+.height-100 {
+ height: 100px;
+ writing-mode: vertical-rl;
+}
+</style>
+<script src="/common/reftest-wait.js"></script>
+<script src="/common/worklet-reftest.js"></script>
+
+<!-- 100px x 100px, bottom-left -->
+<div class="container">
+ <div class="test width-100" style="bottom: 0px"></div>
+</div>
+
+<!-- 100px x 200px, left, auto-size is ignored. -->
+<div class="container">
+ <div class="test width-100" style="top: 0px; bottom: 0px"></div>
+</div>
+
+<!-- 100px x 100px, top-left -->
+<div class="container">
+ <div class="test height-100" style="left: 0px;"></div>
+</div>
+
+<!-- 100px x 100px, top, auto-size is ignored. -->
+<div class="container">
+ <div class="test height-100" style="left: 0px; right: 0px;"></div>
+</div>
+
+<script id="code" type="text/worklet">
+registerLayout('block-size-100', class {
+ *intrinsicSizes() {}
+ *layout() {
+ return {autoBlockSize: 100};
+ }
+});
+</script>
+
+<script>
+importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, document.getElementById('code').textContent);
+</script>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-flex-ref.html b/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-flex-ref.html
new file mode 100644
index 00000000000..e71b104c742
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-flex-ref.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<style>
+.container {
+ border: solid 2px;
+ display: flow-root;
+ width: 300px;
+}
+
+.child {
+ background: green;
+ border: solid 2px;
+ box-sizing: border-box;
+ float: left;
+ height: 100px;
+}
+</style>
+
+<div class="container">
+ <div class="child" style="width: 100px;"></div>
+ <div class="child" style="width: 200px;"></div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-flex.https.html b/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-flex.https.html
new file mode 100644
index 00000000000..fe95c7e23cc
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-flex.https.html
@@ -0,0 +1,61 @@
+<!DOCTYPE html>
+<html class=reftest-wait>
+<link rel="help" href="https://drafts.css-houdini.org/css-layout-api/#interaction-sizing">
+<link rel="match" href="auto-block-size-flex-ref.html">
+<meta name="assert" content="This test checks that the flex layout respects the auto-block-size." />
+
+<style>
+.flex {
+ width: 300px;
+ display: flex;
+ border: solid 2px;
+}
+
+.custom {
+ background: red;
+ box-sizing: border-box;
+ border: solid 2px;
+ height: 100px;
+ writing-mode: vertical-rl;
+}
+
+@supports (display: layout(block-size-100)) {
+ .custom-100 {
+ display: layout(block-size-100);
+ background: green;
+ }
+ .custom-50 {
+ display: layout(block-size-50);
+ background: green;
+ flex: 1;
+ }
+}
+</style>
+<script src="/common/reftest-wait.js"></script>
+<script src="/common/worklet-reftest.js"></script>
+
+<!-- Tests that floats using an auto block size get positioned correctly. -->
+<div class="flex">
+ <div class="custom custom-100"></div>
+ <div class="custom custom-50"></div>
+</div>
+
+<script id="code" type="text/worklet">
+registerLayout('block-size-100', class {
+ *intrinsicSizes() {}
+ *layout() {
+ return {autoBlockSize: 100};
+ }
+});
+registerLayout('block-size-50', class {
+ *intrinsicSizes() {}
+ *layout() {
+ return {autoBlockSize: 50};
+ }
+});
+</script>
+
+<script>
+importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, document.getElementById('code').textContent);
+</script>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-floats-ref.html b/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-floats-ref.html
new file mode 100644
index 00000000000..368d3d8693f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-floats-ref.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<style>
+.container {
+ width: 150px;
+ border: solid 2px;
+}
+
+.left {
+ float: left;
+ background: green;
+ width: 100px;
+ height: 100px;
+}
+
+.right {
+ float: right;
+ background: green;
+ width: 100px;
+ height: 100px;
+}
+</style>
+
+<div class="container">
+ <div class="left"></div>
+ <div class="right"></div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-floats.https.html b/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-floats.https.html
new file mode 100644
index 00000000000..67775eb9954
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-floats.https.html
@@ -0,0 +1,57 @@
+<!DOCTYPE html>
+<html class=reftest-wait>
+<link rel="help" href="https://drafts.css-houdini.org/css-layout-api/#interaction-sizing">
+<link rel="match" href="auto-block-size-floats-ref.html">
+<meta name="assert" content="This test checks that if the layout() is a float, the flow layout respects the auto-block-size." />
+
+<style>
+.test {
+ background: red;
+}
+
+@supports (display: layout(block-size-100)) {
+ .test {
+ display: layout(block-size-100);
+ background: green;
+ }
+}
+
+.container {
+ width: 150px;
+ border: solid 2px;
+}
+
+.left {
+ float: left;
+ width: 100px;
+ writing-mode: horizontal-tb;
+}
+
+.right {
+ float: right;
+ height: 100px;
+ writing-mode: vertical-rl;
+}
+</style>
+<script src="/common/reftest-wait.js"></script>
+<script src="/common/worklet-reftest.js"></script>
+
+<!-- Tests that floats using an auto block size get positioned correctly. -->
+<div class="container">
+ <div class="left test"></div>
+ <div class="right test"></div>
+</div>
+
+<script id="code" type="text/worklet">
+registerLayout('block-size-100', class {
+ *intrinsicSizes() {}
+ *layout() {
+ return {autoBlockSize: 100};
+ }
+});
+</script>
+
+<script>
+importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, document.getElementById('code').textContent);
+</script>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-inflow-ref.html b/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-inflow-ref.html
new file mode 100644
index 00000000000..73f84811b18
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-inflow-ref.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<style>
+.result {
+ margin: 20px 0;
+ background: green;
+}
+</style>
+<div class="result" style="width: 100px; height: 100px;"></div>
+<div class="result" style="width: 100px; height: 150px;"></div>
+<div class="result" style="width: 100px; height: 50px;"></div>
+<div class="result" style="width: 100px; height: 100px;"></div>
+<div class="result" style="width: 150px; height: 100px;"></div>
+<div class="result" style="width: 50px; height: 100px;"></div>
diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-inflow.https.html b/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-inflow.https.html
new file mode 100644
index 00000000000..b8bc0d1934e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-inflow.https.html
@@ -0,0 +1,63 @@
+<!DOCTYPE html>
+<html class=reftest-wait>
+<link rel="help" href="https://drafts.css-houdini.org/css-layout-api/#interaction-sizing">
+<link rel="match" href="auto-block-size-inflow-ref.html">
+<meta name="assert" content="This test checks that min/max-block-size constraints are applied correctly to a layout()." />
+
+<style>
+.test {
+ margin: 20px 0;
+ background: red;
+}
+
+@supports (display: layout(block-size-100)) {
+ .test {
+ display: layout(block-size-100);
+ background: green;
+ }
+}
+
+.width-100 {
+ width: 100px;
+ writing-mode: horizontal-tb;
+}
+
+.height-100 {
+ height: 100px;
+ writing-mode: vertical-rl;
+}
+</style>
+<script src="/common/reftest-wait.js"></script>
+<script src="/common/worklet-reftest.js"></script>
+
+<!-- 100px x 100px -->
+<div class="test width-100"></div>
+
+<!-- 100px x 150px -->
+<div class="test width-100" style="min-height: 150px"></div>
+
+<!-- 100px x 50px -->
+<div class="test width-100" style="max-height: 50px"></div>
+
+<!-- 100px x 100px -->
+<div class="test height-100"></div>
+
+<!-- 150px x 100px -->
+<div class="test height-100" style="min-width: 150px"></div>
+
+<!-- 50px x 100px -->
+<div class="test height-100" style="max-width: 50px"></div>
+
+<script id="code" type="text/worklet">
+registerLayout('block-size-100', class {
+ *intrinsicSizes() {}
+ *layout() {
+ return {autoBlockSize: 100};
+ }
+});
+</script>
+
+<script>
+importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, document.getElementById('code').textContent);
+</script>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-negative-ref.html b/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-negative-ref.html
new file mode 100644
index 00000000000..665b5c6620b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-negative-ref.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<style>
+.result {
+ background: green;
+ border: solid 2px;
+ margin: 20px 0;
+}
+</style>
+
+<div class="result" style="width: 100px; height: 0px;"></div>
+<div class="result" style="width: 0px; height: 100px;"></div>
diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-negative.https.html b/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-negative.https.html
new file mode 100644
index 00000000000..4e912ed9f2a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-layout-api/auto-block-size-negative.https.html
@@ -0,0 +1,51 @@
+<!DOCTYPE html>
+<html class=reftest-wait>
+<link rel="help" href="https://drafts.css-houdini.org/css-layout-api/#interaction-sizing">
+<link rel="match" href="auto-block-size-negative-ref.html">
+<meta name="assert" content="This test checks that auto-block-size is correctly clamped to zero." />
+<meta name="assert" content="TODO" />
+
+<style>
+
+.test {
+ background: red;
+ border: solid 2px;
+ margin: 20px 0;
+}
+
+.width-100 {
+ width: 100px;
+ writing-mode: horizontal-tb;
+}
+
+.height-100 {
+ height: 100px;
+ writing-mode: vertical-rl;
+}
+
+@supports (display: layout(block-size-negative)) {
+ .test {
+ display: layout(block-size-negative);
+ background: green;
+ }
+}
+</style>
+<script src="/common/reftest-wait.js"></script>
+<script src="/common/worklet-reftest.js"></script>
+
+<div class="test width-100"></div>
+<div class="test height-100"></div>
+
+<script id="code" type="text/worklet">
+registerLayout('block-size-negative', class {
+ *intrinsicSizes() {}
+ *layout() {
+ return {autoBlockSize: -100};
+ }
+});
+</script>
+
+<script>
+importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, document.getElementById('code').textContent);
+</script>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/fallback-constructor-error.https.html b/tests/wpt/web-platform-tests/css/css-layout-api/fallback-constructor-error.https.html
new file mode 100644
index 00000000000..590a9d01f90
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-layout-api/fallback-constructor-error.https.html
@@ -0,0 +1,51 @@
+<!DOCTYPE html>
+<html class=reftest-wait>
+<link rel="help" href="https://drafts.css-houdini.org/css-layout-api/#get-a-layout-class-instance">
+<link rel="match" href="fallback-ref.html">
+<meta name="assert" content="This test checks that a layout() class with a throwing constructor will fallback to block layout." />
+<style>
+.test {
+ background: red;
+ border: solid 2px;
+ width: 100px;
+}
+
+.float {
+ float: left;
+ width: 50%;
+ height: 100px;
+}
+
+.fc {
+ display: flow-root;
+ height: 100px;
+}
+
+@supports (display: layout(throwing-ctor)) {
+ .test {
+ display: layout(throwing-ctor);
+ background: green;
+ }
+}
+</style>
+<script src="/common/reftest-wait.js"></script>
+<script src="/common/worklet-reftest.js"></script>
+
+<!-- This tests that when the "layout()" constructor fails, it will fallback to block layout. -->
+<div class="test">
+ <div class="float"></div>
+ <div class="fc"></div>
+</div>
+
+<script id="code" type="text/worklet">
+registerLayout('throwing-ctor', class {
+ constructor() { throw Error('fail!'); }
+ *intrinsicSizes() {}
+ *layout() {}
+});
+</script>
+
+<script>
+importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, document.getElementById('code').textContent);
+</script>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/fallback-layout-error.https.html b/tests/wpt/web-platform-tests/css/css-layout-api/fallback-layout-error.https.html
new file mode 100644
index 00000000000..54ea80b36b8
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-layout-api/fallback-layout-error.https.html
@@ -0,0 +1,50 @@
+<!DOCTYPE html>
+<html class=reftest-wait>
+<link rel="help" href="https://drafts.css-houdini.org/css-layout-api/#invoke-a-layout-callback">
+<link rel="match" href="fallback-ref.html">
+<meta name="assert" content="This test checks that a layout() class with a throwing layout function will fallback to block layout." />
+<style>
+.test {
+ background: red;
+ border: solid 2px;
+ width: 100px;
+}
+
+.float {
+ float: left;
+ width: 50%;
+ height: 100px;
+}
+
+.fc {
+ display: flow-root;
+ height: 100px;
+}
+
+@supports (display: layout(throwing-layout)) {
+ .test {
+ display: layout(throwing-layout);
+ background: green;
+ }
+}
+</style>
+<script src="/common/reftest-wait.js"></script>
+<script src="/common/worklet-reftest.js"></script>
+
+<!-- This tests that when the "layout()" layout function fails, it will fallback to block layout. -->
+<div class="test">
+ <div class="float"></div>
+ <div class="fc"></div>
+</div>
+
+<script id="code" type="text/worklet">
+registerLayout('throwing-layout', class {
+ *intrinsicSizes() {}
+ *layout() { throw Error('fail!'); }
+});
+</script>
+
+<script>
+importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, document.getElementById('code').textContent);
+</script>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/fallback-layout-return.https.html b/tests/wpt/web-platform-tests/css/css-layout-api/fallback-layout-return.https.html
new file mode 100644
index 00000000000..42ccfc5c83c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-layout-api/fallback-layout-return.https.html
@@ -0,0 +1,50 @@
+<!DOCTYPE html>
+<html class=reftest-wait>
+<link rel="help" href="https://drafts.css-houdini.org/css-layout-api/#invoke-a-layout-callback">
+<link rel="match" href="fallback-ref.html">
+<meta name="assert" content="This test checks that a layout() class with the layout function returning a bad value will fallback to block layout." />
+<style>
+.test {
+ background: red;
+ border: solid 2px;
+ width: 100px;
+}
+
+.float {
+ float: left;
+ width: 50%;
+ height: 100px;
+}
+
+.fc {
+ display: flow-root;
+ height: 100px;
+}
+
+@supports (display: layout(bad-return)) {
+ .test {
+ display: layout(bad-return);
+ background: green;
+ }
+}
+</style>
+<script src="/common/reftest-wait.js"></script>
+<script src="/common/worklet-reftest.js"></script>
+
+<!-- This tests that when the "layout()" layout function returns a bad value, it will fallback to block layout. -->
+<div class="test">
+ <div class="float"></div>
+ <div class="fc"></div>
+</div>
+
+<script id="code" type="text/worklet">
+registerLayout('bad-return', class {
+ *intrinsicSizes() {}
+ *layout() { return 42; }
+});
+</script>
+
+<script>
+importWorkletAndTerminateTestAfterAsyncPaint(CSS.layoutWorklet, document.getElementById('code').textContent);
+</script>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/fallback-ref.html b/tests/wpt/web-platform-tests/css/css-layout-api/fallback-ref.html
new file mode 100644
index 00000000000..63bb91e90ca
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-layout-api/fallback-ref.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<style>
+.result {
+ background: green;
+ border: solid 2px;
+ height: 100px;
+ width: 100px;
+}
+</style>
+
+<div class="result"></div>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-serialization/cssTransformValue.tentative.html b/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-serialization/cssTransformValue.tentative.html
index dc87e81271f..0184cbd303e 100644
--- a/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-serialization/cssTransformValue.tentative.html
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-serialization/cssTransformValue.tentative.html
@@ -65,6 +65,11 @@ const gTestCases = [
desc: 'CSSPerspective'
},
{
+ value: new CSSPerspective(CSS.px(-1)),
+ cssText: 'perspective(calc(-1px))',
+ desc: 'CSSPerspective with negative length'
+ },
+ {
value: new CSSTransformValue([new CSSPerspective(CSS.px(1))]),
cssText: 'perspective(1px)',
desc: 'CSSTransformValue with a single transform'
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssUnparsedValue.html b/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssUnparsedValue.html
index 8af27e1b85f..f33703256fb 100644
--- a/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssUnparsedValue.html
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssUnparsedValue.html
@@ -5,6 +5,7 @@
<meta name="assert" content="Test CSSUnparsedValue constructor and members">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
+<script src="../resources/testhelper.js"></script>
<body>
<div id="log">
<script>
@@ -47,4 +48,44 @@ for (const {args, description} of gTestArguments) {
}, 'CSSUnparsedValue can be constructed from ' + description);
}
+test(() => {
+ let result = new CSSUnparsedValue([new CSSVariableReferenceValue('--foo')]);
+
+ result[0] = 'A';
+ assert_equals(result[0], 'A', 'Item should be updated to new value');
+}, 'Can update item in CSSUnparsedValue to a string');
+
+test(() => {
+ let result = new CSSUnparsedValue(['foo']);
+
+ result[0] = new CSSVariableReferenceValue('--A');
+ assert_style_value_equals(result[0], new CSSVariableReferenceValue('--A'),
+ 'Item should be updated to new value');
+}, 'Can update item in CSSUnparsedValue to a variable reference');
+
+test(() => {
+ let result = new CSSUnparsedValue([]);
+
+ result[0] = new CSSVariableReferenceValue('--A');
+ assert_equals(result.length, 1,
+ 'Length of CSSUnparsedValue should have increased');
+ assert_style_value_equals(result[0], new CSSVariableReferenceValue('--A'),
+ 'New item should be appended');
+
+ result[1] = 'foo';
+ assert_equals(result.length, 2,
+ 'Length of CSSUnparsedValue should have increased');
+ assert_equals(result[1], 'foo', 'New item should be appended');
+}, 'Can append items to CSSUnparsedValue');
+
+test(() => {
+ const result = new CSSUnparsedValue(['foo', 'bar']);
+ assert_equals(result[3], undefined);
+}, 'Getting invalid index in CSSUnparsedValue returns undefined');
+
+test(() => {
+ let result = new CSSUnparsedValue(['foo', 'bar']);
+ assert_throws(new RangeError(), () => result[3] = 'foo');
+}, 'Setting invalid index in CSSUnparsedValue throws RangeError');
+
</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/border-width.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/border-width.html
index d1fe0b0a716..5066637f737 100644
--- a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/border-width.html
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/border-width.html
@@ -21,10 +21,23 @@ for (const suffix of ['top', 'left', 'right', 'bottom']) {
runPropertyTests('border-' + suffix + '-width', [
// Computed value is 0 when border-style is 'none'.
// FIXME: Add separate test where border-style is not 'none' or 'hidden'.
- { syntax: 'thin', computed: assert_is_zero_px },
- { syntax: 'medium', computed: assert_is_zero_px },
- { syntax: 'thick', computed: assert_is_zero_px },
- { syntax: '<length>' },
+ {
+ syntax: 'thin',
+ computed: (_, result) => assert_is_zero_px(result)
+ },
+ {
+ syntax: 'medium',
+ computed: (_, result) => assert_is_zero_px(result)
+ },
+ {
+ syntax: 'thick',
+ computed: (_, result) => assert_is_zero_px(result)
+ },
+ {
+ syntax: '<length>',
+ specified: assert_is_equal_with_range_handling,
+ computed: (_, result) => assert_is_zero_px(result)
+ },
]);
}
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/height.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/height.html
index 7d126ecf10c..4ec1a7a4ba0 100644
--- a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/height.html
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/height.html
@@ -15,8 +15,8 @@
runPropertyTests('height', [
{ syntax: 'auto' },
- { syntax: '<percentage>' },
- { syntax: '<length>' },
+ { syntax: '<percentage>', specified: assert_is_equal_with_range_handling },
+ { syntax: '<length>', specified: assert_is_equal_with_range_handling },
]);
</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/padding.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/padding.html
index c740ae7f406..42761f52bc5 100644
--- a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/padding.html
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/padding.html
@@ -15,8 +15,14 @@
for (const suffix of ['top', 'left', 'right', 'bottom']) {
runPropertyTests('padding-' + suffix, [
- { syntax: '<percentage>' },
- { syntax: '<length>' },
+ {
+ syntax: '<percentage>',
+ specified: assert_is_equal_with_range_handling
+ },
+ {
+ syntax: '<length>',
+ specified: assert_is_equal_with_range_handling
+ },
]);
}
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/resources/testsuite.js b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/resources/testsuite.js
index f7f3bd81fc2..bb607edbbec 100644
--- a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/resources/testsuite.js
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/resources/testsuite.js
@@ -1,3 +1,21 @@
+function assert_is_unit(unit, result) {
+ assert_class_string(result, 'CSSUnitValue',
+ 'relative lengths must compute to a CSSUnitValue');
+ assert_equals(result.unit, unit, 'unit');
+}
+
+function assert_is_calc_sum(result) {
+ assert_class_string(result, 'CSSMathSum',
+ 'specified calc must be a CSSMathSum');
+}
+
+function assert_is_equal_with_range_handling(input, result) {
+ if (input instanceof CSSUnitValue && input.value < 0)
+ assert_style_value_equals(result, new CSSMathSum(input));
+ else
+ assert_style_value_equals(result, input);
+}
+
const gTestSyntaxExamples = {
'<length>': {
description: 'a length',
@@ -9,23 +27,23 @@ const gTestSyntaxExamples = {
{
description: "a negative em",
input: new CSSUnitValue(-3.14, 'em'),
- defaultComputed: value => {
- // 'ems' are relative units, so just check that it computes to px
- assert_class_string(value, 'CSSUnitValue',
- '"em" lengths must compute to a CSSUnitValue');
- assert_equals(value.unit, 'px', 'unit');
- }
+ // 'ems' are relative units, so just check that it computes to px
+ defaultComputed: (_, result) => assert_is_unit('px', result)
},
{
description: "a positive cm",
input: new CSSUnitValue(3.14, 'cm'),
- defaultComputed: value => {
- // 'cms' are relative units, so just check that it computes to px
- assert_class_string(value, 'CSSUnitValue',
- '"cm" lengths must compute to a CSSUnitValue');
- assert_equals(value.unit, 'px', 'unit');
- }
+ // 'cms' are relative units, so just check that it computes to px
+ defaultComputed: (_, result) => assert_is_unit('px', result)
},
+ {
+ description: "a calc length",
+ input: new CSSMathSum(new CSSUnitValue(0, 'px'), new CSSUnitValue(0, 'em')),
+ // Specified/computed calcs are usually simplified.
+ // FIXME: Test this properly
+ defaultSpecified: (_, result) => assert_is_calc_sum(result),
+ defaultComputed: (_, result) => assert_is_unit('px', result)
+ }
],
},
'<percentage>': {
@@ -43,6 +61,14 @@ const gTestSyntaxExamples = {
description: "a positive percent",
input: new CSSUnitValue(3.14, 'percent')
},
+ {
+ description: "a calc percent",
+ input: new CSSMathSum(new CSSUnitValue(0, 'percent'), new CSSUnitValue(0, 'percent')),
+ // Specified/computed calcs are usually simplified.
+ // FIXME: Test this properly
+ defaultSpecified: (_, result) => assert_is_calc_sum(result),
+ defaultComputed: (_, result) => assert_is_unit('percent', result)
+ }
],
},
'<time>': {
@@ -60,6 +86,14 @@ const gTestSyntaxExamples = {
description: "positive seconds",
input: new CSSUnitValue(3.14, 's')
},
+ {
+ description: "a calc time",
+ input: new CSSMathSum(new CSSUnitValue(0, 's'), new CSSUnitValue(0, 'ms')),
+ // Specified/computed calcs are usually simplified.
+ // FIXME: Test this properly
+ defaultSpecified: (_, result) => assert_is_calc_sum(result),
+ defaultComputed: (_, result) => assert_is_unit('s', result)
+ }
],
},
'<position>': {
@@ -77,7 +111,7 @@ const gTestSyntaxExamples = {
{
description: "a PNG image",
input: new CSSURLImageValue('/media/1x1.png'),
- defaultComputed: result => {
+ defaultComputed: (_, result) => {
// URLs compute to absolute URLs
assert_true(result instanceof CSSURLImageValue,
'Computed value should be a CSSURLImageValue');
@@ -116,7 +150,7 @@ function testPropertyValid(propertyName, examples, specified, computed, descript
// specified style
const specifiedResult = element.attributeStyleMap.get(propertyName);
if (specified || example.defaultSpecified) {
- (specified || example.defaultSpecified)(specifiedResult);
+ (specified || example.defaultSpecified)(example.input, specifiedResult);
} else {
assert_not_equals(specifiedResult, null,
'Specified value must not be null');
@@ -129,7 +163,7 @@ function testPropertyValid(propertyName, examples, specified, computed, descript
// computed style
const computedResult = element.computedStyleMap().get(propertyName);
if (computed || example.defaultComputed) {
- (computed || example.defaultComputed)(computedResult);
+ (computed || example.defaultComputed)(example.input, computedResult);
} else {
assert_not_equals(computedResult, null,
'Computed value must not be null');
@@ -169,12 +203,20 @@ function createKeywordExample(keyword) {
// }
//
// If a callback is passed to |specified|, then the callback will be passed
-// the result of calling get() on the inline style map (specified values).
+// two arguments:
+// 1. The input test case
+// 2. The result of calling get() on the inline style map (specified values).
+//
// The callback should check if the result is expected using assert_* functions.
// If no callback is passed, then we assert that the result is the same as
// the input.
//
// Same goes for |computed|, but with the computed style map (computed values).
+//
+// FIXME: The reason we pass argument #2 is that it's sometimes difficult to
+// compute exactly what the expected result should be (e.g. browser-specific
+// values). Once we can do that, we can remove argument #2 and just return
+// the expected result.
function runPropertyTests(propertyName, testCases) {
let syntaxTested = new Set();
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/width.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/width.html
index 021a87fb5d2..f79eda147c6 100644
--- a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/width.html
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/width.html
@@ -15,8 +15,14 @@
runPropertyTests('width', [
{ syntax: 'auto' },
- { syntax: '<percentage>' },
- { syntax: '<length>' },
+ {
+ syntax: '<percentage>',
+ specified: assert_is_equal_with_range_handling
+ },
+ {
+ syntax: '<length>',
+ specified: assert_is_equal_with_range_handling
+ },
]);
</script>
diff --git a/tests/wpt/web-platform-tests/dom/events/event-disabled-dynamic.html b/tests/wpt/web-platform-tests/dom/events/event-disabled-dynamic.html
new file mode 100644
index 00000000000..3f995b02f1b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/dom/events/event-disabled-dynamic.html
@@ -0,0 +1,21 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>Test that disabled is honored immediately in presence of dynamic changes</title>
+<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
+<link rel="author" title="Andreas Farre" href="mailto:afarre@mozilla.com">
+<link rel="help" href="https://html.spec.whatwg.org/multipage/#enabling-and-disabling-form-controls:-the-disabled-attribute">
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1405087">
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<input type="button" value="Click" disabled>
+<script>
+async_test(t => {
+ // NOTE: This test will timeout if it fails.
+ window.addEventListener('load', t.step_func(() => {
+ let e = document.querySelector('input');
+ e.disabled = false;
+ e.onclick = t.step_func_done(() => {});
+ e.click();
+ }));
+}, "disabled is honored properly in presence of dynamic changes");
+</script>
diff --git a/tests/wpt/web-platform-tests/fetch/nosniff/script.html b/tests/wpt/web-platform-tests/fetch/nosniff/script.html
index 6532e3db62f..e0b5dac7099 100644
--- a/tests/wpt/web-platform-tests/fetch/nosniff/script.html
+++ b/tests/wpt/web-platform-tests/fetch/nosniff/script.html
@@ -5,7 +5,7 @@
var log = function() {}, // see comment below
p = function() {}, // see comment below
fails = [null, "", "x", "x/x", "text/html", "text/json"],
- passes = ["text/javascript", "text/ecmascript", "text/ecmascript;blah"]
+ passes = ["text/javascript", "text/ecmascript", "text/ecmascript;blah", "text/javascript1.0"]
// Ideally we'd also check whether the scripts in fact execute, but that would involve
// timers and might get a bit racy without cross-browser support for the execute events.
diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-string.tentative.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-string.tentative.html
new file mode 100644
index 00000000000..f626a79ae66
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-string.tentative.html
@@ -0,0 +1,28 @@
+<!doctype html>
+<title>Aborting fetch for javascript:string navigation</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<link rel="help" href="https://html.spec.whatwg.org/multipage/#navigate">
+<link rel="help" href="https://github.com/whatwg/html/issues/2590">
+<div id="log"></div>
+<iframe src="support/iframe-and-links.html"></iframe>
+<script>
+async_test(test => {
+ onload = () => {
+ const child = document.querySelector('iframe').contentWindow;
+ child.document.querySelector("#slowLink").click();
+ // The step below is in a timeout. The framed page can't communicate back mid-parse because that
+ // would involve running script, which makes that navigation "mature", and we need to do this
+ // before it matures.
+ test.step_timeout(() => {
+ child.document.querySelector("#javascriptStringLink").click();
+ child.document.querySelector("iframe").onload = test.step_func_done(() => {
+ assert_false(child.childLoaded, 'child.childLoaded');
+ });
+ }, 100);
+ };
+ window.javascriptStringDocLoaded = test.step_func(() => {
+ assert_unreached("javascript: URL doc replaced the document, should be targeted to child iframe.");
+ });
+});
+</script>
diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-undefined.tentative.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-undefined.tentative.html
new file mode 100644
index 00000000000..80a0d27a7d9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-undefined.tentative.html
@@ -0,0 +1,25 @@
+<!doctype html>
+<title>Not aborting fetch for javascript:undefined navigation</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<link rel="help" href="https://html.spec.whatwg.org/multipage/#navigate">
+<link rel="help" href="https://github.com/whatwg/html/issues/2590">
+<div id="log"></div>
+<iframe src="support/iframe-and-links.html"></iframe>
+<script>
+async_test(test => {
+ onload = () => {
+ const child = document.querySelector('iframe').contentWindow;
+ child.document.querySelector("#slowLink").click();
+ // The step below is in a timeout. The framed page can't communicate back mid-parse because that
+ // would involve running script, which makes that navigation "mature", and we need to do this
+ // before it matures.
+ test.step_timeout(() => {
+ child.document.querySelector("#javascriptUndefinedLink").click();
+ child.document.querySelector("iframe").onload = test.step_func_done(() => {
+ assert_true(child.childLoaded, 'child.childLoaded');
+ });
+ }, 100);
+ };
+});
+</script>
diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/support/iframe-and-links.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/support/iframe-and-links.html
new file mode 100644
index 00000000000..545b0988ba9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/support/iframe-and-links.html
@@ -0,0 +1,18 @@
+<!doctype html>
+
+<iframe name="iframe"></iframe>
+
+<!-- slow link's response is delayed by 1 second -->
+<!-- https://wptserve.readthedocs.io/en/latest/pipes.html#trickle -->
+<a target="iframe" href="set-child-loaded.html?pipe=trickle(d1)" id="slowLink">slow link</a>
+<a target="iframe" href="javascript:'javascript:string <script> parent.javascriptStringDocLoaded(); </script>'" id="javascriptStringLink">javascript:string link</a>
+<a target="iframe" href="javascript:undefined" id="javascriptUndefinedLink">javascript:undefined link</a>
+
+<script>
+// set-child-loaded.html (the slow link) sets this to true.
+window.childLoaded = false;
+
+// Do nothing when the javascript:string doc has loaded, if it's correctly targeted to the above iframe.
+// However, if it replaces this document, it needs to fail the test (handled in the parent).
+function javascriptStringDocLoaded() {}
+</script>
diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/support/set-child-loaded.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/support/set-child-loaded.html
new file mode 100644
index 00000000000..a4b34ad6e9d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/support/set-child-loaded.html
@@ -0,0 +1,5 @@
+<!doctype html>
+set-child-loaded.html
+<script>
+parent.childLoaded = true;
+</script>
diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/textfieldselection/selection-start-end.html b/tests/wpt/web-platform-tests/html/semantics/forms/textfieldselection/selection-start-end.html
index 0c4deb93ed6..4bcecf234cc 100644
--- a/tests/wpt/web-platform-tests/html/semantics/forms/textfieldselection/selection-start-end.html
+++ b/tests/wpt/web-platform-tests/html/semantics/forms/textfieldselection/selection-start-end.html
@@ -62,7 +62,7 @@
for (let prop of ["selectionStart", "selectionEnd"]) {
for (let el of createTestElements(testValue)) {
test(function() {
- assert_equals(el.selectionStart, testValue.length);
+ assert_equals(el[prop], testValue.length);
}, `Initial .value set on ${el.id} should set ${prop} to end of value`);
}
}
diff --git a/tests/wpt/web-platform-tests/images/blue-png-cachable.py b/tests/wpt/web-platform-tests/images/blue-png-cachable.py
new file mode 100644
index 00000000000..e87975343f6
--- /dev/null
+++ b/tests/wpt/web-platform-tests/images/blue-png-cachable.py
@@ -0,0 +1,13 @@
+import os
+import time
+
+def main(request, response):
+ """Serves the contents in blue.png but with a Cache-Control header.
+
+ Emits a Cache-Control header with max-age set to 1h to allow the browser
+ cache the image. Used for testing behaviors involving caching logics.
+ """
+ image_path = os.path.join(os.path.dirname(__file__), "blue.png")
+ response.headers.set("Cache-Control", "max-age=3600")
+ response.headers.set("Content-Type", "image/png")
+ response.content = open(image_path, mode='rb').read()
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/activation.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/activation.https.html
index 82138dda466..48aefd4a7af 100644
--- a/tests/wpt/web-platform-tests/service-workers/service-worker/activation.https.html
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/activation.https.html
@@ -6,24 +6,6 @@
<script src="resources/test-helpers.sub.js"></script>
<body>
<script>
-// Registers, waits for activation, then unregisters on a dummy scope.
-//
-// This helper can be used in tests that assert that activation doesn't happen.
-// It would not be sufficient to check the .waiting/.active properties once,
-// since activation could be scheduled and just hasn't happened yet. Since this
-// helper shows that activation of another registration completed, we can be
-// sure that activation really will not happen.
-function wait_for_activation_on_dummy_scope(t) {
- var dummy_scope = 'resources/there/is/no/there/there';
- var registration;
- return navigator.serviceWorker.register('resources/empty-worker.js',
- { scope: dummy_scope })
- .then(r => {
- registration = r;
- return wait_for_state(t, registration.installing, 'activated');
- })
- .then(() => registration.unregister());
-}
// Returns {registration, iframe}, where |registration| has an active and
// waiting worker. The active worker controls |iframe| and has an inflight
// message event that can be finished by calling
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/detached-context.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/detached-context.https.html
index d345982343f..e70de4d70b6 100644
--- a/tests/wpt/web-platform-tests/service-workers/service-worker/detached-context.https.html
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/detached-context.https.html
@@ -16,6 +16,7 @@ promise_test(t => {
const scope_for_main = 'resources/' + scope_for_iframe;
const script = 'resources/empty-worker.js';
let frame;
+ let resolvedCount = 0;
return service_worker_unregister(t, scope_for_main)
.then(() => {
@@ -41,9 +42,23 @@ promise_test(t => {
assert_equals(r.active.state, 'activated');
assert_equals(r.scope, normalizeURL(scope_for_main));
r.onupdatefound = () => { /* empty */ };
- return Promise.all([
- promise_rejects(t, 'InvalidStateError', r.unregister()),
- promise_rejects(t, 'InvalidStateError', r.update())]);
+
+ // We want to verify that unregister() and update() do not
+ // resolve on a detached registration. We can't check for
+ // an explicit rejection, though, because not all browsers
+ // fire rejection callbacks on detached promises. Instead
+ // we wait for a dummy scope to install, activate, and
+ // unregister before declaring that the promises did not
+ // resolve.
+ r.unregister().then(() => resolvedCount += 1,
+ () => {});
+ r.update().then(() => resolvedCount += 1,
+ () => {});
+ return wait_for_activation_on_dummy_scope(t);
+ })
+ .then(() => {
+ assert_equals(resolvedCount, 0,
+ 'methods called on a detached registration should not resolve');
})
}, 'accessing a ServiceWorkerRegistration from a removed iframe');
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/embed-and-object-are-not-intercepted.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/embed-and-object-are-not-intercepted.https.html
new file mode 100644
index 00000000000..22ddddc3e2a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/embed-and-object-are-not-intercepted.https.html
@@ -0,0 +1,51 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>embed and object are not intercepted</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="resources/test-helpers.sub.js?pipe=sub"></script>
+<body>
+<script>
+let registration;
+
+const kScript = 'resources/embed-and-object-are-not-intercepted-worker.js';
+const kScope = 'resources/';
+
+promise_test(t => {
+ return service_worker_unregister_and_register(t, kScript, kScope)
+ .then(registration => {
+ promise_test(() => {
+ return registration.unregister();
+ }, 'restore global state');
+
+ return wait_for_state(t, registration.installing, 'activated');
+ })
+ }, 'initialize global state');
+
+promise_test(t => {
+ let frame;
+ return with_iframe('resources/embed-is-not-intercepted-iframe.html')
+ .then(f => {
+ frame = f;
+ t.add_cleanup(() => { frame.remove(); });
+ return frame.contentWindow.test_promise;
+ })
+ .then(result => {
+ assert_equals(result, 'request for embedded content was not intercepted');
+ });
+ }, 'requests for EMBED elements should not be intercepted by service workers');
+
+promise_test(t => {
+ let frame;
+ return with_iframe('resources/object-is-not-intercepted-iframe.html')
+ .then(f => {
+ frame = f;
+ t.add_cleanup(() => { frame.remove(); });
+ return frame.contentWindow.test_promise;
+ })
+ .then(result => {
+ assert_equals(result, 'request for embedded content was not intercepted');
+ });
+ }, 'requests for OBJECT elements should not be intercepted by service workers');
+</script>
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/multipart-image.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/multipart-image.https.html
new file mode 100644
index 00000000000..9bdadff21fb
--- /dev/null
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/multipart-image.https.html
@@ -0,0 +1,67 @@
+<!DOCTYPE html>
+<title>Tests for cross-origin multipart image returned by service worker</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/test-helpers.sub.js"></script>
+
+<script>
+// This tests loading a multipart image via service worker. The service worker responds with
+// an opaque or a non-opaque response. The content of opaque response should not be readable.
+
+const script = 'resources/multipart-image-worker.js';
+const scope = 'resources/multipart-image-iframe.html';
+let frame;
+
+function check_image_data(data) {
+ assert_equals(data[0], 255);
+ assert_equals(data[1], 0);
+ assert_equals(data[2], 0);
+ assert_equals(data[3], 255);
+}
+
+promise_test(t => {
+ return service_worker_unregister_and_register(t, script, scope)
+ .then(registration => {
+ promise_test(() => {
+ if (frame) {
+ frame.remove();
+ }
+ return registration.unregister();
+ }, 'restore global state');
+
+ return wait_for_state(t, registration.installing, 'activated');
+ })
+ .then(() => with_iframe(scope))
+ .then(f => {
+ frame = f;
+ });
+ }, 'initialize global state');
+
+promise_test(t => {
+ return frame.contentWindow.load_multipart_image('same-origin-multipart-image')
+ .then(img => frame.contentWindow.get_image_data(img))
+ .then(img_data => {
+ check_image_data(img_data.data);
+ });
+ }, 'same-origin multipart image via SW should be readable');
+
+promise_test(t => {
+ return frame.contentWindow.load_multipart_image('cross-origin-multipart-image-with-cors-approved')
+ .then(img => frame.contentWindow.get_image_data(img))
+ .then(img_data => {
+ check_image_data(img_data.data);
+ });
+ }, 'cross-origin multipart image via SW with approved CORS should be readable');
+
+promise_test(t => {
+ return frame.contentWindow.load_multipart_image('cross-origin-multipart-image-with-no-cors')
+ .then(img => {
+ assert_throws('SecurityError', () => frame.contentWindow.get_image_data(img));
+ });
+ }, 'cross-origin multipart image with no-cors via SW should not be readable');
+
+promise_test(t => {
+ const promise = frame.contentWindow.load_multipart_image('cross-origin-multipart-image-with-cors-rejected');
+ return promise_rejects(t, new DOMException('load failed', 'NetworkError'), promise);
+ }, 'cross-origin multipart image via SW with rejected CORS should fail to load');
+</script>
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/embed-and-object-are-not-intercepted-worker.js b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/embed-and-object-are-not-intercepted-worker.js
new file mode 100644
index 00000000000..7a2e874c286
--- /dev/null
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/embed-and-object-are-not-intercepted-worker.js
@@ -0,0 +1,8 @@
+// This worker intercepts a request for EMBED/OBJECT and responds with a
+// response that indicates that interception occurred. The tests expect
+// that interception does not occur.
+self.addEventListener('fetch', e => {
+ if (e.request.url.indexOf('embedded-content-from-server.html') != -1) {
+ e.respondWith(fetch('embedded-content-from-service-worker.html'));
+ }
+ });
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/embed-is-not-intercepted-iframe.html b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/embed-is-not-intercepted-iframe.html
new file mode 100644
index 00000000000..a168b29b76a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/embed-is-not-intercepted-iframe.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>iframe for embed-and-object-are-not-intercepted test</title>
+<body>
+<script>
+// The EMBED element will call this with the result about whether the EMBED
+// request was intercepted by the service worker.
+var report_result;
+
+// Our parent (the root frame of the test) will examine this to get the result.
+var test_promise = new Promise(resolve => {
+ report_result = resolve;
+ });
+</script>
+
+<embed src="embedded-content-from-server.html"></embed>
+</body>
+
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/embedded-content-from-server.html b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/embedded-content-from-server.html
new file mode 100644
index 00000000000..ff50a9c7526
--- /dev/null
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/embedded-content-from-server.html
@@ -0,0 +1,6 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>embed for embed-and-object-are-not-intercepted test</title>
+<script>
+window.parent.report_result('request for embedded content was not intercepted');
+</script>
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/embedded-content-from-service-worker.html b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/embedded-content-from-service-worker.html
new file mode 100644
index 00000000000..2e2b9236082
--- /dev/null
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/embedded-content-from-service-worker.html
@@ -0,0 +1,7 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>embed for embed-and-object-are-not-intercepted test</title>
+<script>
+window.parent.report_result('request for embedded content was intercepted by service worker');
+</script>
+
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/multipart-image-iframe.html b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/multipart-image-iframe.html
new file mode 100644
index 00000000000..c59b95594ff
--- /dev/null
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/multipart-image-iframe.html
@@ -0,0 +1,19 @@
+<script>
+function load_multipart_image(src) {
+ return new Promise((resolve, reject) => {
+ const img = document.createElement('img');
+ img.addEventListener('load', () => resolve(img));
+ img.addEventListener('error', (e) => reject(new DOMException('load failed', 'NetworkError')));
+ img.src = src;
+ });
+}
+
+function get_image_data(img) {
+ const canvas = document.createElement('canvas');
+ const context = canvas.getContext('2d');
+ context.drawImage(img, 0, 0);
+ // When |img.src| is cross origin, this should throw a SecurityError.
+ const imageData = context.getImageData(0, 0, 1, 1);
+ return imageData;
+}
+</script>
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/multipart-image-worker.js b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/multipart-image-worker.js
new file mode 100644
index 00000000000..a38fe54d34f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/multipart-image-worker.js
@@ -0,0 +1,21 @@
+importScripts('/common/get-host-info.sub.js');
+importScripts('test-helpers.sub.js');
+
+const host_info = get_host_info();
+
+const multipart_image_path = base_path() + 'multipart-image.py';
+const sameorigin_url = host_info['HTTPS_ORIGIN'] + multipart_image_path;
+const cross_origin_url = host_info['HTTPS_REMOTE_ORIGIN'] + multipart_image_path;
+
+self.addEventListener('fetch', event => {
+ const url = event.request.url;
+ if (url.indexOf('cross-origin-multipart-image-with-no-cors') >= 0) {
+ event.respondWith(fetch(cross_origin_url, {mode: 'no-cors'}));
+ } else if (url.indexOf('cross-origin-multipart-image-with-cors-rejected') >= 0) {
+ event.respondWith(fetch(cross_origin_url, {mode: 'cors'}));
+ } else if (url.indexOf('cross-origin-multipart-image-with-cors-approved') >= 0) {
+ event.respondWith(fetch(cross_origin_url + '?approvecors', {mode: 'cors'}));
+ } else if (url.indexOf('same-origin-multipart-image') >= 0) {
+ event.respondWith(fetch(sameorigin_url));
+ }
+});
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/multipart-image.py b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/multipart-image.py
new file mode 100644
index 00000000000..53b77aeb0e1
--- /dev/null
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/multipart-image.py
@@ -0,0 +1,23 @@
+# A request handler that serves a multipart image.
+
+import os
+
+
+BOUNDARY = 'cutHere'
+
+
+def create_part(path):
+ with open(path, 'rb') as f:
+ return 'Content-Type: image/png\r\n\r\n' + f.read() + '--%s' % BOUNDARY
+
+
+def main(request, response):
+ content_type = 'multipart/x-mixed-replace; boundary=%s' % BOUNDARY
+ headers = [('Content-Type', content_type)]
+ if 'approvecors' in request.GET:
+ headers.append(('Access-Control-Allow-Origin', '*'))
+
+ image_path = os.path.join(request.doc_root, 'images')
+ body = create_part(os.path.join(image_path, 'green-1x1.png'))
+ body = body + create_part(os.path.join(image_path, 'red-16x16.png'))
+ return headers, body
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/object-is-not-intercepted-iframe.html b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/object-is-not-intercepted-iframe.html
new file mode 100644
index 00000000000..0aeb81951ed
--- /dev/null
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/object-is-not-intercepted-iframe.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>iframe for embed-and-object-are-not-intercepted test</title>
+<body>
+<script>
+// The OBJECT element will call this with the result about whether the OBJECT
+// request was intercepted by the service worker.
+var report_result;
+
+// Our parent (the root frame of the test) will examine this to get the result.
+var test_promise = new Promise(resolve => {
+ report_result = resolve;
+ });
+</script>
+
+<object data="embedded-content-from-server.html"></object>
+</body>
+
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/sandboxed-iframe-fetch-event-iframe.html b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/sandboxed-iframe-fetch-event-iframe.html
index 155dbddb6d4..239fa733037 100644
--- a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/sandboxed-iframe-fetch-event-iframe.html
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/sandboxed-iframe-fetch-event-iframe.html
@@ -1,56 +1,63 @@
<script>
function with_iframe(url) {
- return new Promise(function(resolve) {
- var frame = document.createElement('iframe');
- frame.src = url;
- frame.onload = function() { resolve(frame); };
- document.body.appendChild(frame);
- });
+ return new Promise(resolve => {
+ let frame = document.createElement('iframe');
+ frame.src = url;
+ frame.onload = () => { resolve(frame); };
+ document.body.appendChild(frame);
+ });
}
function with_sandboxed_iframe(url, sandbox) {
- return new Promise(function(resolve) {
- var frame = document.createElement('iframe');
- frame.sandbox = sandbox;
- frame.src = url;
- frame.onload = function() { resolve(frame); };
- document.body.appendChild(frame);
- });
+ return new Promise(resolve => {
+ let frame = document.createElement('iframe');
+ frame.sandbox = sandbox;
+ frame.src = url;
+ frame.onload = () => { resolve(frame); };
+ document.body.appendChild(frame);
+ });
}
-function fetch_in_worker() {
- return new Promise((resolve) => {
- var blob = new Blob([
- "fetch('" + location.href + "_workerfetch', {mode: 'no-cors'})" +
+function fetch_from_worker(url) {
+ return new Promise(resolve => {
+ let blob = new Blob([
+ `fetch('${url}', {mode: 'no-cors'})` +
" .then(() => { self.postMessage('OK'); });"]);
- var url = URL.createObjectURL(blob);
- var worker = new Worker(url);
+ let worker_url = URL.createObjectURL(blob);
+ let worker = new Worker(worker_url);
worker.onmessage = resolve;
});
}
-window.onmessage = function (e) {
- var id = e.data['id'];
- fetch(location.href + "_fetch", {mode: 'no-cors'})
- .then(function() {
- return fetch_in_worker();
- })
- .then(function() {
- return with_iframe(location.href + "_iframe");
- })
- .then(function() {
- return with_sandboxed_iframe(location.href + "_script",
- "allow-scripts");
- })
- .then(function() {
- return with_sandboxed_iframe(location.href + "_script-origin",
- "allow-scripts allow-same-origin");
- })
- .then(function() {
- window.top.postMessage({id: id, result: 'done'}, '*');
- })
- .catch(function(e) {
- window.top.postMessage({id: id, result: 'error: ' + e.toString()}, '*');
- });
+function run_test(type) {
+ const base_path = location.href;
+ switch (type) {
+ case 'fetch':
+ return fetch(`${base_path}&test=fetch`, {mode: 'no-cors'});
+ case 'fetch-from-worker':
+ return fetch_from_worker(`${base_path}&test=fetch-from-worker`);
+ case 'iframe':
+ return with_iframe(`${base_path}&test=iframe`);
+ case 'sandboxed-iframe':
+ return with_sandboxed_iframe(`${base_path}&test=sandboxed-iframe`,
+ "allow-scripts");
+ case 'sandboxed-iframe-same-origin':
+ return with_sandboxed_iframe(
+ `${base_path}&test=sandboxed-iframe-same-origin`,
+ "allow-scripts allow-same-origin");
+ default:
+ return Promise.reject(`Unknown type: ${type}`);
+ }
+}
+
+window.onmessage = event => {
+ let id = event.data['id'];
+ run_test(event.data['type'])
+ .then(() => {
+ window.top.postMessage({id: id, result: 'done'}, '*');
+ })
+ .catch(e => {
+ window.top.postMessage({id: id, result: 'error: ' + e.toString()}, '*');
+ });
};
</script>
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/sandboxed-iframe-fetch-event-iframe.py b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/sandboxed-iframe-fetch-event-iframe.py
new file mode 100644
index 00000000000..4d84839c813
--- /dev/null
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/sandboxed-iframe-fetch-event-iframe.py
@@ -0,0 +1,13 @@
+import os.path
+
+def main(request, response):
+ header = [('Content-Type', 'text/html')]
+ if 'test' in request.GET:
+ with open(os.path.join(os.path.dirname(__file__),'blank.html'), 'r') as f:
+ body = f.read()
+ return (header, body)
+
+ with open(os.path.join(os.path.dirname(__file__),
+ 'sandboxed-iframe-fetch-event-iframe.html'), 'r') as f:
+ body = f.read()
+ return (header, body)
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/sandboxed-iframe-fetch-event-worker.js b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/sandboxed-iframe-fetch-event-worker.js
index ffa0abac34f..4035a8b19b9 100644
--- a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/sandboxed-iframe-fetch-event-worker.js
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/sandboxed-iframe-fetch-event-worker.js
@@ -10,6 +10,7 @@ self.addEventListener('message', function(event) {
client_urls = client_urls.sort();
event.data.port.postMessage(
{clients: client_urls, requests: requests});
+ requests = [];
}));
});
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/test-helpers.sub.js b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/test-helpers.sub.js
index 38ec4ae9674..b99ed200f1a 100644
--- a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/test-helpers.sub.js
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/test-helpers.sub.js
@@ -257,3 +257,17 @@ function with_sandboxed_iframe(url, sandbox) {
document.body.appendChild(frame);
});
}
+
+// Registers, waits for activation, then unregisters on a dummy scope.
+//
+// This can be used to wait for a period of time needed to register,
+// activate, and then unregister a service worker. When checking that
+// certain behavior does *NOT* happen, this is preferable to using an
+// arbitrary delay.
+async function wait_for_activation_on_dummy_scope(t) {
+ const script = 'resources/empty-worker.js';
+ const scope = 'resources/there/is/no/there/there?' + Date.now();
+ let registration = await navigator.serviceWorker.register(script, { scope });
+ await wait_for_state(t, registration.installing, 'activated');
+ await registration.unregister();
+}
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/sandboxed-iframe-fetch-event.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/sandboxed-iframe-fetch-event.https.html
index 8b361bd25df..db012c2e9ad 100644
--- a/tests/wpt/web-platform-tests/service-workers/service-worker/sandboxed-iframe-fetch-event.https.html
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/sandboxed-iframe-fetch-event.https.html
@@ -7,210 +7,351 @@
<script>
var lastCallbackId = 0;
var callbacks = {};
-function postMessageAndWaitResult(frame) {
+function doTest(frame, type) {
return new Promise(function(resolve) {
var id = ++lastCallbackId;
callbacks[id] = resolve;
- frame.contentWindow.postMessage({id:id}, '*');
+ frame.contentWindow.postMessage({id: id, type: type}, '*');
+ });
+}
+
+// Asks the service worker for data about requests and clients seen. The
+// worker posts a message back with |data| where:
+// |data.requests|: the requests the worker received FetchEvents for
+// |data.clients|: the URLs of all the worker's clients
+// The worker clears its data after responding.
+function getResultsFromWorker(worker) {
+ return new Promise(resolve => {
+ let channel = new MessageChannel();
+ channel.port1.onmessage = msg => {
+ resolve(msg.data);
+ };
+ worker.postMessage({port: channel.port2}, [channel.port2]);
});
}
window.onmessage = function (e) {
message = e.data;
var id = message['id'];
- var calback = callbacks[id];
+ var callback = callbacks[id];
delete callbacks[id];
- calback(message['result']);
+ callback(message['result']);
};
-promise_test(function(t) {
- var SCOPE = 'resources/sandboxed-iframe-fetch-event-iframe.html';
- var SCRIPT = 'resources/sandboxed-iframe-fetch-event-worker.js';
- var frames = [];
- var worker;
- return service_worker_unregister_and_register(t, SCRIPT, SCOPE)
- .then(function(registration) {
- worker = registration.installing;
- return wait_for_state(t, registration.installing, 'activated');
- })
- .then(function() {
- return with_iframe(SCOPE + '?iframe');
- })
- .then(function(frame) {
- frames.push(frame);
- return postMessageAndWaitResult(frame);
- })
- .then(function(result) {
- assert_equals(result, 'done');
- return with_sandboxed_iframe(SCOPE + '?script', 'allow-scripts');
- })
- .then(function(frame) {
- frames.push(frame);
- return postMessageAndWaitResult(frame);
- })
- .then(function(result) {
- assert_equals(result, 'done');
- return with_sandboxed_iframe(SCOPE + '?script-origin',
- 'allow-scripts allow-same-origin');
- })
- .then(function(frame) {
- frames.push(frame);
- return postMessageAndWaitResult(frame);
- })
- .then(function(result) {
- assert_equals(result, 'done');
- return new Promise(function(resolve) {
- var channel = new MessageChannel();
- channel.port1.onmessage = function(msg) {
- resolve(msg);
- };
- worker.postMessage({port: channel.port2}, [channel.port2]);
- });
- })
- .then(function(msg) {
- for (var frame of frames) {
- frame.remove();
- }
- var expected_base_url = new URL(SCOPE, location.href).href;
- var request_set = {};
- for (var request of msg.data.requests) {
- request_set[request] = true;
- }
- assert_true(
- expected_base_url + '?iframe' in request_set,
- 'The request for normal iframe should be handled by SW.');
- assert_true(
- expected_base_url + '?iframe_fetch' in request_set,
- 'The fetch request from normal iframe should be handled by SW.');
- assert_true(
- expected_base_url + '?iframe_workerfetch' in request_set,
- 'The fetch request from worker in normal iframe should be ' +
- 'handled by SW.');
- assert_true(
- expected_base_url + '?iframe_iframe' in request_set,
- 'The request for normal iframe inside normal iframe should be ' +
- 'handled by SW.');
- assert_false(
- expected_base_url + '?iframe_script' in request_set,
- 'The request for sandboxed iframe with allow-scripts flag ' +
- 'inside normal iframe should not be handled by SW.');
- assert_true(
- expected_base_url + '?iframe_script-origin' in request_set,
- 'The request for sandboxed iframe with allow-scripts and ' +
- 'allow-same-origin flag inside normal iframe should be handled ' +
- 'by SW.');
- assert_false(
- expected_base_url + '?script' in request_set,
- 'The request for sandboxed iframe with allow-scripts flag ' +
- 'should not be handled by SW.');
- assert_false(
- expected_base_url + '?script_fetch' in request_set,
- 'The fetch request from sandboxed iframe with allow-scripts ' +
- 'flag should not be handled by SW.');
- assert_false(
- expected_base_url + '?script_workerfetch' in request_set,
- 'The fetch request from worker from sandboxed iframe with ' +
- 'allow-scripts flag should not be handled by SW.');
- assert_false(
- expected_base_url + '?script_iframe' in request_set,
- 'The request for normal iframe inside sandboxed iframe with ' +
- 'allow-scripts flag should not be handled by SW.');
- assert_false(
- expected_base_url + '?script_script' in request_set,
- 'The request for sandboxed iframe with allow-scripts flag ' +
- 'inside sandboxed iframe with allow-scripts flag should not be ' +
- 'handled by SW.');
- assert_false(
- expected_base_url + '?script_script-origin' in request_set,
- 'The request for sandboxed iframe with allow-scripts and ' +
- 'allow-same-origin flag inside sandboxed iframe with ' +
- 'allow-scripts flag should not be handled by SW.');
- assert_true(
- expected_base_url + '?script-origin' in request_set,
- 'The request for sandboxed iframe with allow-scripts and ' +
- 'allow-same-origin flag should be handled by SW.');
- assert_true(
- expected_base_url + '?script-origin_fetch' in request_set,
- 'The fetch request from sandboxed iframe with allow-scripts ' +
- 'and allow-same-origin flag should be handled by SW.');
- assert_true(
- expected_base_url + '?script-origin_workerfetch' in request_set,
- 'The fetch request from worker in sandboxed iframe with ' +
- 'allow-scripts and allow-same-origin flag should be handled ' +
- 'by SW.');
- assert_true(
- expected_base_url + '?script-origin_iframe' in request_set,
- 'The request for normal iframe inside sandboxed iframe with ' +
- 'allow-scripts and allow-same-origin flag should be handled by' +
- 'SW.');
- assert_false(
- expected_base_url + '?script-origin_script' in request_set,
- 'The request for sandboxed iframe with allow-scripts flag ' +
- 'inside sandboxed iframe with allow-scripts and ' +
- 'allow-same-origin flag should be handled by SW.');
- assert_true(
- expected_base_url + '?script-origin_script-origin' in request_set,
- 'The request for sandboxed iframe with allow-scripts and' +
- 'allow-same-origin flag inside sandboxed iframe with ' +
- 'allow-scripts and allow-same-origin flag should be handled by' +
- 'SW.');
-
- var client_set = {};
- for (var client of msg.data.clients) {
- client_set[client] = true;
- }
- assert_true(
- expected_base_url + '?iframe' in client_set,
- 'The normal iframe should be controlled by SW.');
- assert_true(
- expected_base_url + '?iframe_iframe' in client_set,
- 'The normal iframe inside normal iframe should be controlled ' +
- 'by SW.');
- assert_false(
- expected_base_url + '?iframe_script' in client_set,
- 'The sandboxed iframe with allow-scripts flag inside normal ' +
- 'iframe should not be controlled by SW.');
- assert_true(
- expected_base_url + '?iframe_script-origin' in client_set,
- 'The sandboxed iframe with allow-scripts and allow-same-origin' +
- 'flag inside normal iframe should be controlled by SW.');
- assert_false(
- expected_base_url + '?script' in client_set,
- 'The sandboxed iframe with allow-scripts flag should not be ' +
- 'controlled by SW.');
- assert_false(
- expected_base_url + '?script_iframe' in client_set,
- 'The normal iframe inside sandboxed iframe with allow-scripts' +
- 'flag should not be controlled by SW.');
- assert_false(
- expected_base_url + '?script_script' in client_set,
- 'The sandboxed iframe with allow-scripts flag inside sandboxed ' +
- 'iframe with allow-scripts flag should not be controlled by SW.');
- assert_false(
- expected_base_url + '?script_script-origin' in client_set,
- 'The sandboxed iframe with allow-scripts and allow-same-origin ' +
- 'flag inside sandboxed iframe with allow-scripts flag should ' +
- 'not be controlled by SW.');
- assert_true(
- expected_base_url + '?script-origin' in client_set,
- 'The sandboxed iframe with allow-scripts and allow-same-origin ' +
- 'flag should be controlled by SW.');
- assert_true(
- expected_base_url + '?script-origin_iframe' in client_set,
- 'The normal iframe inside sandboxed iframe with allow-scripts ' +
- 'and allow-same-origin flag should be controlled by SW.');
- assert_false(
- expected_base_url + '?script-origin_script' in client_set,
- 'The sandboxed iframe with allow-scripts flag inside sandboxed ' +
- 'iframe with allow-scripts and allow-same-origin flag should ' +
- 'be controlled by SW.');
- assert_true(
- expected_base_url + '?script-origin_script-origin' in client_set,
- 'The sandboxed iframe with allow-scripts and allow-same-origin ' +
- 'flag inside sandboxed iframe with allow-scripts and ' +
- 'allow-same-origin flag should be controlled by SW.');
- return service_worker_unregister_and_done(t, SCOPE);
- });
- }, 'ServiceWorker FetchEvent for sandboxed iframe.');
+const SCOPE = 'resources/sandboxed-iframe-fetch-event-iframe.py';
+const SCRIPT = 'resources/sandboxed-iframe-fetch-event-worker.js';
+const expected_base_url = new URL(SCOPE, location.href);
+// Service worker controlling |SCOPE|.
+let worker;
+// A normal iframe.
+// This should be controlled by a service worker.
+let normal_frame;
+// An iframe created by <iframe sandbox='allow-scripts'>.
+// This should NOT be controlled by a service worker.
+let sandboxed_frame;
+// An iframe created by <iframe sandbox='allow-scripts allow-same-origin'>.
+// This should be controlled by a service worker.
+let sandboxed_same_origin_frame;
+
+promise_test(t => {
+ return service_worker_unregister_and_register(t, SCRIPT, SCOPE)
+ .then(function(registration) {
+ add_completion_callback(() => registration.unregister());
+ worker = registration.installing;
+ return wait_for_state(t, registration.installing, 'activated');
+ });
+}, 'Prepare a service worker.');
+
+promise_test(t => {
+ return with_iframe(SCOPE + '?iframe')
+ .then(f => {
+ normal_frame = f;
+ add_completion_callback(() => f.remove());
+ return getResultsFromWorker(worker);
+ })
+ .then(data => {
+ let requests = data.requests;
+ assert_equals(requests.length, 1);
+ assert_equals(requests[0], expected_base_url + '?iframe');
+ assert_true(data.clients.includes(expected_base_url + '?iframe'));
+ });
+}, 'Prepare a normal iframe.');
+
+promise_test(t => {
+ return with_sandboxed_iframe(SCOPE + '?sandboxed-iframe', 'allow-scripts')
+ .then(f => {
+ sandboxed_frame = f;
+ add_completion_callback(() => f.remove());
+ return getResultsFromWorker(worker);
+ })
+ .then(data => {
+ assert_equals(data.requests.length, 0);
+ assert_false(data.clients.includes(expected_base_url +
+ '?sandboxed-iframe'));
+ });
+}, 'Prepare an iframe sandboxed by <iframe sandbox="allow-scripts">.');
+
+promise_test(t => {
+ return with_sandboxed_iframe(SCOPE + '?sandboxed-iframe-same-origin',
+ 'allow-scripts allow-same-origin')
+ .then(f => {
+ sandboxed_same_origin_frame = f;
+ add_completion_callback(() => f.remove());
+ return getResultsFromWorker(worker);
+ })
+ .then(data => {
+ let requests = data.requests;
+ assert_equals(requests.length, 1);
+ assert_equals(requests[0],
+ expected_base_url + '?sandboxed-iframe-same-origin');
+ assert_true(data.clients.includes(
+ expected_base_url + '?sandboxed-iframe-same-origin'));
+ })
+}, 'Prepare an iframe sandboxed by ' +
+ '<iframe sandbox="allow-scripts allow-same-origin">.');
+
+promise_test(t => {
+ let frame = normal_frame;
+ return doTest(frame, 'fetch')
+ .then(result => {
+ assert_equals(result, 'done');
+ return getResultsFromWorker(worker);
+ })
+ .then(data => {
+ let requests = data.requests;
+ assert_equals(requests.length, 1,
+ 'The fetch request should be handled by SW.');
+ assert_equals(requests[0], frame.src + '&test=fetch');
+ });
+}, 'Fetch request from a normal iframe');
+
+promise_test(t => {
+ let frame = normal_frame;
+ return doTest(frame, 'fetch-from-worker')
+ .then(result => {
+ assert_equals(result, 'done');
+ return getResultsFromWorker(worker);
+ })
+ .then(data => {
+ let requests = data.requests;
+ assert_equals(requests.length, 1,
+ 'The fetch request should be handled by SW.');
+ assert_equals(requests[0], frame.src + '&test=fetch-from-worker');
+ });
+}, 'Fetch request from a worker in a normal iframe');
+
+promise_test(t => {
+ let frame = normal_frame;
+ return doTest(frame, 'iframe')
+ .then(result => {
+ assert_equals(result, 'done');
+ return getResultsFromWorker(worker);
+ })
+ .then(data => {
+ let requests = data.requests;
+ assert_equals(requests.length, 1,
+ 'The request should be handled by SW.');
+ assert_equals(requests[0], frame.src + '&test=iframe');
+ assert_true(data.clients.includes(frame.src + '&test=iframe'));
+
+ });
+}, 'Request for an iframe in the normal iframe');
+
+promise_test(t => {
+ let frame = normal_frame;
+ return doTest(frame, 'sandboxed-iframe')
+ .then(result => {
+ assert_equals(result, 'done');
+ return getResultsFromWorker(worker);
+ })
+ .then(data => {
+ assert_equals(data.requests.length, 0,
+ 'The request should NOT be handled by SW.');
+ assert_false(data.clients.includes(
+ frame.src + '&test=sandboxed-iframe'));
+ });
+}, 'Request for an sandboxed iframe with allow-scripts flag in the normal ' +
+ 'iframe');
+
+promise_test(t => {
+ let frame = normal_frame;
+ return doTest(frame, 'sandboxed-iframe-same-origin')
+ .then(result => {
+ assert_equals(result, 'done');
+ return getResultsFromWorker(worker);
+ })
+ .then(data => {
+ let requests = data.requests;
+ assert_equals(requests.length, 1,
+ 'The request should be handled by SW.');
+ assert_equals(requests[0],
+ frame.src + '&test=sandboxed-iframe-same-origin');
+ assert_true(data.clients.includes(
+ frame.src + '&test=sandboxed-iframe-same-origin'));
+ });
+}, 'Request for an sandboxed iframe with allow-scripts and ' +
+ 'allow-same-origin flag in the normal iframe');
+
+promise_test(t => {
+ let frame = sandboxed_frame;
+ return doTest(frame, 'fetch')
+ .then(result => {
+ assert_equals(result, 'done');
+ return getResultsFromWorker(worker);
+ })
+ .then(data => {
+ assert_equals(data.requests.length, 0,
+ 'The fetch request should NOT be handled by SW.');
+ });
+}, 'Fetch request from iframe sandboxed by an attribute with allow-scripts ' +
+ 'flag');
+
+promise_test(t => {
+ let frame = sandboxed_frame;
+ return doTest(frame, 'fetch-from-worker')
+ .then(result => {
+ assert_equals(result, 'done');
+ return getResultsFromWorker(worker);
+ })
+ .then(data => {
+ assert_equals(data.requests.length, 0,
+ 'The fetch request should NOT be handled by SW.');
+ });
+}, 'Fetch request from a worker in iframe sandboxed by an attribute with ' +
+ 'allow-scripts flag');
+
+promise_test(t => {
+ let frame = sandboxed_frame;
+ return doTest(frame, 'iframe')
+ .then(result => {
+ assert_equals(result, 'done');
+ return getResultsFromWorker(worker);
+ })
+ .then(data => {
+ assert_equals(data.requests.length, 0,
+ 'The request should NOT be handled by SW.');
+ assert_false(data.clients.includes(frame.src + '&test=iframe'));
+ });
+}, 'Request for an iframe in the iframe sandboxed by an attribute with ' +
+ 'allow-scripts flag');
+
+promise_test(t => {
+ let frame = sandboxed_frame;
+ return doTest(frame, 'sandboxed-iframe')
+ .then(result => {
+ assert_equals(result, 'done');
+ return getResultsFromWorker(worker);
+ })
+ .then(data => {
+ assert_equals(data.requests.length, 0,
+ 'The request should NOT be handled by SW.');
+ assert_false(data.clients.includes(
+ frame.src + '&test=sandboxed-iframe'));
+ });
+}, 'Request for an sandboxed iframe with allow-scripts flag in the iframe ' +
+ 'sandboxed by an attribute with allow-scripts flag');
+
+promise_test(t => {
+ let frame = sandboxed_frame;
+ return doTest(frame, 'sandboxed-iframe-same-origin')
+ .then(result => {
+ assert_equals(result, 'done');
+ return getResultsFromWorker(worker);
+ })
+ .then(data => {
+ assert_equals(data.requests.length, 0,
+ 'The request should NOT be handled by SW.');
+ assert_false(data.clients.includes(
+ frame.src + '&test=sandboxed-iframe-same-origin'));
+ });
+}, 'Request for an sandboxed iframe with allow-scripts and ' +
+ 'allow-same-origin flag in the iframe sandboxed by an attribute with ' +
+ 'allow-scripts flag');
+
+promise_test(t => {
+ let frame = sandboxed_same_origin_frame;
+ return doTest(frame, 'fetch')
+ .then(result => {
+ assert_equals(result, 'done');
+ return getResultsFromWorker(worker);
+ })
+ .then(data => {
+ let requests = data.requests;
+ assert_equals(requests.length, 1,
+ 'The fetch request should be handled by SW.');
+ assert_equals(requests[0], frame.src + '&test=fetch');
+ });
+}, 'Fetch request from iframe sandboxed by an attribute with allow-scripts ' +
+ 'and allow-same-origin flag');
+
+promise_test(t => {
+ let frame = sandboxed_same_origin_frame;
+ return doTest(frame, 'fetch-from-worker')
+ .then(result => {
+ assert_equals(result, 'done');
+ return getResultsFromWorker(worker);
+ })
+ .then(data => {
+ let requests = data.requests;
+ assert_equals(requests.length, 1,
+ 'The fetch request should be handled by SW.');
+ assert_equals(requests[0],
+ frame.src + '&test=fetch-from-worker');
+ });
+}, 'Fetch request from a worker in iframe sandboxed by an attribute with ' +
+ 'allow-scripts and allow-same-origin flag');
+
+promise_test(t => {
+ let frame = sandboxed_same_origin_frame;
+ return doTest(frame, 'iframe')
+ .then(result => {
+ assert_equals(result, 'done');
+ return getResultsFromWorker(worker);
+ })
+ .then(data => {
+ let requests = data.requests;
+ assert_equals(requests.length, 1,
+ 'The request should be handled by SW.');
+ assert_equals(requests[0], frame.src + '&test=iframe');
+ assert_true(data.clients.includes(frame.src + '&test=iframe'));
+ });
+}, 'Request for an iframe in the iframe sandboxed by an attribute with ' +
+ 'allow-scripts and allow-same-origin flag');
+
+promise_test(t => {
+ let frame = sandboxed_same_origin_frame;
+ return doTest(frame, 'sandboxed-iframe')
+ .then(result => {
+ assert_equals(result, 'done');
+ return getResultsFromWorker(worker);
+ })
+ .then(data => {
+ assert_equals(data.requests.length, 0,
+ 'The request should NOT be handled by SW.');
+ assert_false(data.clients.includes(
+ frame.src + '&test=sandboxed-iframe'));
+ });
+}, 'Request for an sandboxed iframe with allow-scripts flag in the iframe ' +
+ 'sandboxed by attribute with allow-scripts and allow-same-origin flag');
+
+promise_test(t => {
+ let frame = sandboxed_same_origin_frame;
+ return doTest(frame, 'sandboxed-iframe-same-origin')
+ .then(result => {
+ assert_equals(result, 'done');
+ return getResultsFromWorker(worker);
+ })
+ .then(data => {
+ let requests = data.requests;
+ assert_equals(requests.length, 1,
+ 'The request should be handled by SW.');
+ assert_equals(requests[0],
+ frame.src + '&test=sandboxed-iframe-same-origin');
+ assert_true(data.clients.includes(
+ frame.src + '&test=sandboxed-iframe-same-origin'));
+ });
+}, 'Request for an sandboxed iframe with allow-scripts and ' +
+ 'allow-same-origin flag in the iframe sandboxed by attribute with ' +
+ 'allow-scripts and allow-same-origin flag');
</script>
</body>
diff --git a/tests/wpt/web-platform-tests/streams/piping/error-propagation-forward.js b/tests/wpt/web-platform-tests/streams/piping/error-propagation-forward.js
index a6d30fe747e..cf95c443275 100644
--- a/tests/wpt/web-platform-tests/streams/piping/error-propagation-forward.js
+++ b/tests/wpt/web-platform-tests/streams/piping/error-propagation-forward.js
@@ -428,4 +428,52 @@ promise_test(t => {
}, 'Errors must be propagated forward: shutdown must not occur until the final write completes');
+promise_test(t => {
+
+ const rs = recordingReadableStream();
+
+ let resolveWriteCalled;
+ const writeCalledPromise = new Promise(resolve => {
+ resolveWriteCalled = resolve;
+ });
+
+ let resolveWritePromise;
+ const ws = recordingWritableStream({
+ write() {
+ resolveWriteCalled();
+
+ return new Promise(resolve => {
+ resolveWritePromise = resolve;
+ });
+ }
+ }, new CountQueuingStrategy({ highWaterMark: 2 }));
+
+ let pipeComplete = false;
+ const pipePromise = promise_rejects(t, error1, rs.pipeTo(ws)).then(() => {
+ pipeComplete = true;
+ });
+
+ rs.controller.enqueue('a');
+ rs.controller.enqueue('b');
+
+ return writeCalledPromise.then(() => flushAsyncEvents()).then(() => {
+ assert_array_equals(ws.events, ['write', 'a'], 'abort should not be called before the first write completes');
+ assert_false(pipeComplete, 'the pipe should not complete while the first write is pending');
+
+ rs.controller.error(error1);
+ resolveWritePromise();
+ return flushAsyncEvents();
+ }).then(() => {
+ assert_array_equals(ws.events, ['write', 'a', 'write', 'b'],
+ 'abort should not be called before the second write completes');
+ assert_false(pipeComplete, 'the pipe should not complete while the second write is pending');
+
+ resolveWritePromise();
+ return pipePromise;
+ }).then(() => {
+ assert_array_equals(ws.events, ['write', 'a', 'write', 'b', 'abort', error1], 'sink abort should be called');
+ });
+
+}, 'Errors must be propagated forward: abort should not happen until all queued writes complete');
+
done();
diff --git a/tests/wpt/web-platform-tests/streams/readable-byte-streams/construct-byob-request.dedicatedworker.html b/tests/wpt/web-platform-tests/streams/readable-byte-streams/construct-byob-request.dedicatedworker.html
new file mode 100644
index 00000000000..887e3343d21
--- /dev/null
+++ b/tests/wpt/web-platform-tests/streams/readable-byte-streams/construct-byob-request.dedicatedworker.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>construct-byob-request.js dedicated worker wrapper file</title>
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<script>
+'use strict';
+fetch_tests_from_worker(new Worker('construct-byob-request.js'));
+</script>
diff --git a/tests/wpt/web-platform-tests/streams/readable-byte-streams/construct-byob-request.html b/tests/wpt/web-platform-tests/streams/readable-byte-streams/construct-byob-request.html
new file mode 100644
index 00000000000..4e071e70c56
--- /dev/null
+++ b/tests/wpt/web-platform-tests/streams/readable-byte-streams/construct-byob-request.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>construct-byob-request.js browser context wrapper file</title>
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<script src="../resources/rs-utils.js"></script>
+
+<script src="construct-byob-request.js"></script>
diff --git a/tests/wpt/web-platform-tests/streams/readable-byte-streams/construct-byob-request.js b/tests/wpt/web-platform-tests/streams/readable-byte-streams/construct-byob-request.js
new file mode 100644
index 00000000000..29fdac5baa9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/streams/readable-byte-streams/construct-byob-request.js
@@ -0,0 +1,82 @@
+'use strict';
+
+// Prior to whatwg/stream#870 it was possible to construct a ReadableStreamBYOBRequest directly. This made it possible
+// to construct requests that were out-of-sync with the state of the ReadableStream. They could then be used to call
+// internal operations, resulting in asserts or bad behaviour. This file contains regression tests for the change.
+
+if (self.importScripts) {
+ self.importScripts('../resources/rs-utils.js');
+ self.importScripts('/resources/testharness.js');
+}
+
+function getRealByteStreamController() {
+ let controller;
+ new ReadableStream({
+ start(c) {
+ controller = c;
+ },
+ type: 'bytes'
+ });
+ return controller;
+}
+
+const ReadableByteStreamController = getRealByteStreamController().constructor;
+
+// Create an object pretending to have prototype |prototype|, of type |type|. |type| is one of "undefined", "null",
+// "fake", or "real". "real" will call the realObjectCreator function to get a real instance of the object.
+function createDummyObject(prototype, type, realObjectCreator) {
+ switch (type) {
+ case 'undefined':
+ return undefined;
+
+ case 'null':
+ return null;
+
+ case 'fake':
+ return Object.create(prototype);
+
+ case 'real':
+ return realObjectCreator();
+ }
+
+ throw new Error('not reached');
+}
+
+const dummyTypes = ['undefined', 'null', 'fake', 'real'];
+
+function runTests(ReadableStreamBYOBRequest) {
+ for (const controllerType of dummyTypes) {
+ const controller = createDummyObject(ReadableByteStreamController.prototype, controllerType,
+ getRealByteStreamController);
+ for (const viewType of dummyTypes) {
+ const view = createDummyObject(Uint8Array.prototype, viewType, () => new Uint8Array(16));
+ test(() => {
+ assert_throws(new TypeError(), () => new ReadableStreamBYOBRequest(controller, view),
+ 'constructor should throw');
+ }, `ReadableStreamBYOBRequest constructor should throw when passed a ${controllerType} ` +
+ `ReadableByteStreamController and a ${viewType} view`);
+ }
+ }
+}
+
+function getConstructorAndRunTests() {
+ let ReadableStreamBYOBRequest;
+ const rs = new ReadableStream({
+ pull(controller) {
+ const byobRequest = controller.byobRequest;
+ ReadableStreamBYOBRequest = byobRequest.constructor;
+ byobRequest.respond(4);
+ },
+ type: 'bytes'
+ });
+ rs.getReader({ mode: 'byob' }).read(new Uint8Array(8)).then(() => {
+ runTests(ReadableStreamBYOBRequest);
+ done();
+ });
+}
+
+// We can only get at the ReadableStreamBYOBRequest constructor asynchronously, so we need to make the test harness wait
+// for us to explicitly tell it all our tests have run.
+setup({ explicit_done: true });
+
+getConstructorAndRunTests();
diff --git a/tests/wpt/web-platform-tests/streams/readable-byte-streams/construct-byob-request.serviceworker.https.html b/tests/wpt/web-platform-tests/streams/readable-byte-streams/construct-byob-request.serviceworker.https.html
new file mode 100644
index 00000000000..abf70cbf643
--- /dev/null
+++ b/tests/wpt/web-platform-tests/streams/readable-byte-streams/construct-byob-request.serviceworker.https.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>construct-byob-request.js service worker wrapper file</title>
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/service-workers/service-worker/resources/test-helpers.sub.js"></script>
+
+<script>
+'use strict';
+service_worker_test('construct-byob-request.js', 'Service worker test setup');
+</script>
diff --git a/tests/wpt/web-platform-tests/streams/readable-byte-streams/construct-byob-request.sharedworker.html b/tests/wpt/web-platform-tests/streams/readable-byte-streams/construct-byob-request.sharedworker.html
new file mode 100644
index 00000000000..6f7ef5ca59f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/streams/readable-byte-streams/construct-byob-request.sharedworker.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>construct-byob-request.js shared worker wrapper file</title>
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<script>
+'use strict';
+fetch_tests_from_worker(new SharedWorker('construct-byob-request.js'));
+</script>
diff --git a/tests/wpt/web-platform-tests/streams/readable-byte-streams/general.html b/tests/wpt/web-platform-tests/streams/readable-byte-streams/general.html
index 32de3b20d53..717f3863872 100644
--- a/tests/wpt/web-platform-tests/streams/readable-byte-streams/general.html
+++ b/tests/wpt/web-platform-tests/streams/readable-byte-streams/general.html
@@ -6,5 +6,6 @@
<script src="/resources/testharnessreport.js"></script>
<script src="../resources/rs-utils.js"></script>
+<script src="../resources/test-utils.js"></script>
<script src="general.js"></script>
diff --git a/tests/wpt/web-platform-tests/streams/readable-byte-streams/general.js b/tests/wpt/web-platform-tests/streams/readable-byte-streams/general.js
index edbe1c83f15..4207277d1a5 100644
--- a/tests/wpt/web-platform-tests/streams/readable-byte-streams/general.js
+++ b/tests/wpt/web-platform-tests/streams/readable-byte-streams/general.js
@@ -2,6 +2,7 @@
if (self.importScripts) {
self.importScripts('../resources/rs-utils.js');
+ self.importScripts('../resources/test-utils.js');
self.importScripts('/resources/testharness.js');
}
@@ -1883,6 +1884,93 @@ promise_test(t => {
'errored in it');
promise_test(() => {
+ let byobRequest;
+ const rs = new ReadableStream({
+ pull(controller) {
+ byobRequest = controller.byobRequest;
+ byobRequest.respond(4);
+ },
+ type: 'bytes'
+ });
+ const reader = rs.getReader({ mode: 'byob' });
+ const view = new Uint8Array(16);
+ return reader.read(view).then(() => {
+ assert_throws(new TypeError(), () => byobRequest.respond(4), 'respond() should throw a TypeError');
+ });
+}, 'calling respond() twice on the same byobRequest should throw');
+
+promise_test(() => {
+ let byobRequest;
+ const newView = () => new Uint8Array(16);
+ const rs = new ReadableStream({
+ pull(controller) {
+ byobRequest = controller.byobRequest;
+ byobRequest.respondWithNewView(newView());
+ },
+ type: 'bytes'
+ });
+ const reader = rs.getReader({ mode: 'byob' });
+ return reader.read(newView()).then(() => {
+ assert_throws(new TypeError(), () => byobRequest.respondWithNewView(newView()),
+ 'respondWithNewView() should throw a TypeError');
+ });
+}, 'calling respondWithNewView() twice on the same byobRequest should throw');
+
+promise_test(() => {
+ let byobRequest;
+ let resolvePullCalledPromise;
+ const pullCalledPromise = new Promise(resolve => {
+ resolvePullCalledPromise = resolve;
+ });
+ let resolvePull;
+ const rs = new ReadableStream({
+ pull(controller) {
+ byobRequest = controller.byobRequest;
+ resolvePullCalledPromise();
+ return new Promise(resolve => {
+ resolvePull = resolve;
+ });
+ },
+ type: 'bytes'
+ });
+ const reader = rs.getReader({ mode: 'byob' });
+ const readPromise = reader.read(new Uint8Array(16));
+ return pullCalledPromise.then(() => {
+ const cancelPromise = reader.cancel('meh');
+ resolvePull();
+ byobRequest.respond(0);
+ return Promise.all([readPromise, cancelPromise]).then(() => {
+ assert_throws(new TypeError(), () => byobRequest.respond(0), 'respond() should throw');
+ });
+ });
+}, 'calling respond(0) twice on the same byobRequest should throw even when closed');
+
+promise_test(() => {
+ let resolvePullCalledPromise;
+ const pullCalledPromise = new Promise(resolve => {
+ resolvePullCalledPromise = resolve;
+ });
+ let resolvePull;
+ const rs = new ReadableStream({
+ pull() {
+ resolvePullCalledPromise();
+ return new Promise(resolve => {
+ resolvePull = resolve;
+ });
+ },
+ type: 'bytes'
+ });
+ const reader = rs.getReader({ mode: 'byob' });
+ reader.read(new Uint8Array(16));
+ return pullCalledPromise.then(() => {
+ resolvePull();
+ return delay(0).then(() => {
+ assert_throws(new TypeError(), () => reader.releaseLock(), 'releaseLock() should throw');
+ });
+ });
+}, 'pull() resolving should not make releaseLock() possible');
+
+promise_test(() => {
// Tests https://github.com/whatwg/streams/issues/686
let controller;
diff --git a/tests/wpt/web-platform-tests/tools/manifest/manifest.py b/tests/wpt/web-platform-tests/tools/manifest/manifest.py
index e466e6ff56a..7adf49b64e5 100644
--- a/tests/wpt/web-platform-tests/tools/manifest/manifest.py
+++ b/tests/wpt/web-platform-tests/tools/manifest/manifest.py
@@ -3,6 +3,7 @@ import os
import re
from collections import defaultdict
from six import iteritems, itervalues, viewkeys, string_types
+from tempfile import mkstemp
from .item import ManualTest, WebdriverSpecTest, Stub, RefTestNode, RefTest, TestharnessTest, SupportFile, ConformanceCheckerTest, VisualTest
from .log import get_logger
@@ -232,6 +233,11 @@ def write(manifest, manifest_path):
dir_name = os.path.dirname(manifest_path)
if not os.path.exists(dir_name):
os.makedirs(dir_name)
- with open(manifest_path, "wb") as f:
- json.dump(manifest.to_json(), f, sort_keys=True, indent=1, separators=(',', ': '))
- f.write("\n")
+
+ fd, temp_manifest_path = mkstemp(dir=dir_name)
+ temp_manifest = open(temp_manifest_path, "wb")
+ json.dump(manifest.to_json(), temp_manifest,
+ sort_keys=True, indent=1, separators=(',', ': '))
+ temp_manifest.write("\n")
+ os.rename(temp_manifest_path, manifest_path)
+ os.close(fd)
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/MANIFEST.in b/tests/wpt/web-platform-tests/tools/wptrunner/MANIFEST.in
index d3b530a500b..d36344f9668 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/MANIFEST.in
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/MANIFEST.in
@@ -4,4 +4,3 @@ include wptrunner.default.ini
include wptrunner/testharness_runner.html
include wptrunner/*.js
include wptrunner/executors/*.js
-include wptrunner/config.json
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/setup.py b/tests/wpt/web-platform-tests/tools/wptrunner/setup.py
index 148a1d2f8c1..63d3edde244 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/setup.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/setup.py
@@ -50,7 +50,6 @@ setup(name=PACKAGE_NAME,
"executors/reftest-wait.js",
"testharnessreport.js",
"testharness_runner.html",
- "config.json",
"wptrunner.default.ini",
"browsers/sauce_setup/*",
"prefs/*"]},
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/firefox.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/firefox.py
index 57e05278c0a..acec0efe572 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/firefox.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/firefox.py
@@ -117,6 +117,11 @@ def env_extras(**kwargs):
def env_options():
+ # The server host is set to 127.0.0.1 as Firefox is configured (through the
+ # network.dns.localDomains preference set below) to resolve the test
+ # domains to localhost without relying on the network stack.
+ #
+ # https://github.com/w3c/web-platform-tests/pull/9480
return {"host": "127.0.0.1",
"external_host": "web-platform.test",
"bind_hostname": "false",
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/sauce.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/sauce.py
index 42c83c5d24f..69ebc07a814 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/sauce.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/sauce.py
@@ -127,15 +127,29 @@ def get_tar(url, dest):
class SauceConnect():
def __init__(self, **kwargs):
- self.config = kwargs["config"]
self.sauce_user = kwargs["sauce_user"]
self.sauce_key = kwargs["sauce_key"]
self.sauce_tunnel_id = kwargs["sauce_tunnel_id"]
self.sauce_connect_binary = kwargs.get("sauce_connect_binary")
self.sc_process = None
self.temp_dir = None
+ self.env_config = None
+
+ def __call__(self, env_options, env_config):
+ self.env_config = env_config
+
+ return self
+
+ def __enter__(self):
+ # Because this class implements the context manager protocol, it is
+ # possible for instances to be provided to the `with` statement
+ # directly. This class implements the callable protocol so that data
+ # which is not available during object initialization can be provided
+ # prior to this moment. Instances must be invoked in preparation for
+ # the context manager protocol, but this additional constraint is not
+ # itself part of the protocol.
+ assert self.env_config is not None, 'The instance has been invoked.'
- def __enter__(self, options):
if not self.sauce_connect_binary:
self.temp_dir = tempfile.mkdtemp()
get_tar("https://saucelabs.com/downloads/sc-4.4.9-linux.tar.gz", self.temp_dir)
@@ -153,7 +167,7 @@ class SauceConnect():
"--metrics-address=0.0.0.0:9876",
"--readyfile=./sauce_is_ready",
"--tunnel-domains",
- ",".join(self.config['domains'].values())
+ ",".join(self.env_config['domains'].values())
])
# Timeout config vars
@@ -180,6 +194,7 @@ class SauceConnect():
raise SauceException("Unable to start Sauce Connect Proxy. Process exited with code %s", self.sc_process.returncode)
def __exit__(self, exc_type, exc_val, exc_tb):
+ self.env_config = None
self.sc_process.terminate()
if self.temp_dir and os.path.exists(self.temp_dir):
try:
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/servo.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/servo.py
index 17fa59834fd..f16363199a3 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/servo.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/servo.py
@@ -54,7 +54,7 @@ def env_extras(**kwargs):
def env_options():
return {"host": "127.0.0.1",
"external_host": "web-platform.test",
- "bind_hostname": "false",
+ "bind_hostname": False,
"testharnessreport": "testharnessreport-servo.js",
"supports_debugger": True}
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/config.json b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/config.json
deleted file mode 100644
index d146424a0f0..00000000000
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/config.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{"host": "%(host)s",
- "ports":{"http":[8000, 8001],
- "https":[8443],
- "ws":[8888]},
- "check_subdomains":false,
- "bind_hostname":%(bind_hostname)s,
- "ssl":{}}
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/environment.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/environment.py
index 22b02a9e4ad..8ecbb4bb8e7 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/environment.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/environment.py
@@ -84,18 +84,29 @@ class TestEnvironment(object):
self.cache_manager = multiprocessing.Manager()
self.stash = serve.stash.StashServer()
self.env_extras = env_extras
+ self.env_extras_cms = None
def __enter__(self):
self.stash.__enter__()
self.ssl_env.__enter__()
self.cache_manager.__enter__()
- for cm in self.env_extras:
- cm.__enter__(self.options)
- self.setup_server_logging()
+
self.config = self.load_config()
+ self.setup_server_logging()
ports = serve.get_ports(self.config, self.ssl_env)
self.config = serve.normalise_config(self.config, ports)
+
+ assert self.env_extras_cms is None, (
+ "A TestEnvironment object cannot be nested")
+
+ self.env_extras_cms = []
+
+ for env in self.env_extras:
+ cm = env(self.options, self.config)
+ cm.__enter__()
+ self.env_extras_cms.append(cm)
+
self.servers = serve.start(self.config, self.ssl_env,
self.get_routes())
if self.options.get("supports_debugger") and self.debug_info and self.debug_info.interactive:
@@ -108,8 +119,11 @@ class TestEnvironment(object):
for scheme, servers in self.servers.iteritems():
for port, server in servers:
server.kill()
- for cm in self.env_extras:
+ for cm in self.env_extras_cms:
cm.__exit__(exc_type, exc_val, exc_tb)
+
+ self.env_extras_cms = None
+
self.cache_manager.__exit__(exc_type, exc_val, exc_tb)
self.ssl_env.__exit__(exc_type, exc_val, exc_tb)
self.stash.__exit__()
@@ -122,15 +136,23 @@ class TestEnvironment(object):
def load_config(self):
default_config_path = os.path.join(serve_path(self.test_paths), "config.default.json")
- local_config_path = os.path.join(here, "config.json")
+ local_config = {
+ "ports": {
+ "http": [8000, 8001],
+ "https": [8443],
+ "ws": [8888]
+ },
+ "check_subdomains": False,
+ "bind_hostname": self.options["bind_hostname"],
+ "ssl": {}
+ }
+
+ if "host" in self.options:
+ local_config["host"] = self.options["host"]
with open(default_config_path) as f:
default_config = json.load(f)
- with open(local_config_path) as f:
- data = f.read()
- local_config = json.loads(data % self.options)
-
#TODO: allow non-default configuration for ssl
local_config["external_host"] = self.options.get("external_host", None)
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/font.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/font.py
index fdf1b1249e2..79fca428ceb 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/font.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/font.py
@@ -17,7 +17,10 @@ class FontInstaller(object):
self.created_dir = False
self.fonts = fonts
- def __enter__(self, options=None):
+ def __call__(self, env_options=None, env_config=None):
+ return self
+
+ def __enter__(self):
for _, font_path in self.fonts.items():
font_name = font_path.split('/')[-1]
install = getattr(self, 'install_%s_font' % SYSTEM, None)
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/browsers/test_sauce.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/browsers/test_sauce.py
index 019b538ec1c..62c092533a8 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/browsers/test_sauce.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/browsers/test_sauce.py
@@ -20,15 +20,15 @@ def test_sauceconnect_success():
exists.return_value = True
sauce_connect = sauce.SauceConnect(
- config={
- "domains": {"": "example.net"}
- },
sauce_user="aaa",
sauce_key="bbb",
sauce_tunnel_id="ccc",
sauce_connect_binary="ddd")
- sauce_connect.__enter__(None)
+ env_config = {
+ "domains": {"": "example.net"}
+ }
+ sauce_connect.__enter__(None, env_config)
@pytest.mark.parametrize("readyfile,returncode", [
@@ -49,16 +49,16 @@ def test_sauceconnect_failure_exit(readyfile, returncode):
exists.return_value = readyfile
sauce_connect = sauce.SauceConnect(
- config={
- "domains": {"": "example.net"}
- },
sauce_user="aaa",
sauce_key="bbb",
sauce_tunnel_id="ccc",
sauce_connect_binary="ddd")
+ env_config = {
+ "domains": {"": "example.net"}
+ }
with pytest.raises(sauce.SauceException):
- sauce_connect.__enter__(None)
+ sauce_connect.__enter__(None, env_config)
# Given we appear to exit immediately with these mocks, sleep shouldn't be called
sleep.assert_not_called()
@@ -74,16 +74,16 @@ def test_sauceconnect_failure_never_ready():
exists.return_value = False
sauce_connect = sauce.SauceConnect(
- config={
- "domains": {"": "example.net"}
- },
sauce_user="aaa",
sauce_key="bbb",
sauce_tunnel_id="ccc",
sauce_connect_binary="ddd")
+ env_config = {
+ "domains": {"": "example.net"}
+ }
with pytest.raises(sauce.SauceException):
- sauce_connect.__enter__(None)
+ sauce_connect.__enter__(None, env_config)
# We should sleep while waiting for it to create the readyfile
sleep.assert_called()
@@ -102,15 +102,15 @@ def test_sauceconnect_tunnel_domains():
exists.return_value = True
sauce_connect = sauce.SauceConnect(
- config={
- "domains": {"foo": "foo.bar.example.com", "": "example.net"}
- },
sauce_user="aaa",
sauce_key="bbb",
sauce_tunnel_id="ccc",
sauce_connect_binary="ddd")
- sauce_connect.__enter__(None)
+ env_config = {
+ "domains": {"foo": "foo.bar.example.com", "": "example.net"}
+ }
+ sauce_connect.__enter__(None, env_config)
Popen.assert_called_once()
args, kwargs = Popen.call_args
diff --git a/tests/wpt/web-platform-tests/web-animations/animation-model/combining-effects/applying-the-composited-result.html b/tests/wpt/web-platform-tests/web-animations/animation-model/combining-effects/applying-the-composited-result.html
new file mode 100644
index 00000000000..336115e5779
--- /dev/null
+++ b/tests/wpt/web-platform-tests/web-animations/animation-model/combining-effects/applying-the-composited-result.html
@@ -0,0 +1,29 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>Applying the composited result</title>
+<link rel="help"
+ href="https://drafts.csswg.org/web-animations-1/#applying-the-composited-result">
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src="../../testcommon.js"></script>
+<div id="log"></div>
+<script>
+'use strict';
+
+promise_test(async t => {
+ const div = createDiv(t);
+ div.style.marginLeft = '10px';
+ const animation = div.animate(
+ { marginLeft: ['100px', '200px'] },
+ 100 * MS_PER_SEC
+ );
+ await animation.ready;
+
+ animation.finish();
+
+ const marginLeft = parseFloat(getComputedStyle(div).marginLeft);
+ assert_equals(marginLeft, 10, 'The computed style should be reset');
+}, 'Finishing an animation that does not fill forwards causes its animation'
+ + ' style to be cleared');
+
+</script>
diff --git a/tests/wpt/web-platform-tests/web-animations/interfaces/Animation/finish.html b/tests/wpt/web-platform-tests/web-animations/interfaces/Animation/finish.html
deleted file mode 100644
index 1f81867ebdd..00000000000
--- a/tests/wpt/web-platform-tests/web-animations/interfaces/Animation/finish.html
+++ /dev/null
@@ -1,246 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<title>Animation.finish</title>
-<link rel="help" href="https://drafts.csswg.org/web-animations/#dom-animation-finish">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="../../testcommon.js"></script>
-<body>
-<div id="log"></div>
-<script>
-'use strict';
-
-const gKeyFrames = { 'marginLeft': ['100px', '200px'] };
-
-test(t => {
- const div = createDiv(t);
- const animation = div.animate(gKeyFrames, 100 * MS_PER_SEC);
- animation.playbackRate = 0;
-
- assert_throws({name: 'InvalidStateError'}, () => {
- animation.finish();
- });
-}, 'Test exceptions when finishing non-running animation');
-
-test(t => {
- const div = createDiv(t);
- const animation = div.animate(gKeyFrames,
- { duration : 100 * MS_PER_SEC,
- iterations : Infinity });
-
- assert_throws({name: 'InvalidStateError'}, () => {
- animation.finish();
- });
-}, 'Test exceptions when finishing infinite animation');
-
-test(t => {
- const div = createDiv(t);
- const animation = div.animate(gKeyFrames, 100 * MS_PER_SEC);
- animation.finish();
-
- assert_equals(animation.currentTime, 100 * MS_PER_SEC,
- 'After finishing, the currentTime should be set to the end ' +
- 'of the active duration');
-}, 'Test finishing of animation');
-
-test(t => {
- const div = createDiv(t);
- const animation = div.animate(gKeyFrames, 100 * MS_PER_SEC);
- // 1s past effect end
- animation.currentTime =
- animation.effect.getComputedTiming().endTime + 1 * MS_PER_SEC;
- animation.finish();
-
- assert_equals(animation.currentTime, 100 * MS_PER_SEC,
- 'After finishing, the currentTime should be set back to the ' +
- 'end of the active duration');
-}, 'Test finishing of animation with a current time past the effect end');
-
-promise_test(t => {
- const div = createDiv(t);
- const animation = div.animate(gKeyFrames, 100 * MS_PER_SEC);
- animation.currentTime = 100 * MS_PER_SEC;
- return animation.finished.then(() => {
- animation.playbackRate = -1;
- animation.finish();
-
- assert_equals(animation.currentTime, 0,
- 'After finishing a reversed animation the currentTime ' +
- 'should be set to zero');
- });
-}, 'Test finishing of reversed animation');
-
-promise_test(t => {
- const div = createDiv(t);
- const animation = div.animate(gKeyFrames, 100 * MS_PER_SEC);
- animation.currentTime = 100 * MS_PER_SEC;
- return animation.finished.then(() => {
- animation.playbackRate = -1;
- animation.currentTime = -1000;
- animation.finish();
-
- assert_equals(animation.currentTime, 0,
- 'After finishing a reversed animation the currentTime ' +
- 'should be set back to zero');
- });
-}, 'Test finishing of reversed animation with a current time less than zero');
-
-promise_test(t => {
- const div = createDiv(t);
- const animation = div.animate(gKeyFrames, 100 * MS_PER_SEC);
- animation.pause();
- return animation.ready.then(() => {
- animation.finish();
-
- assert_equals(animation.playState, 'finished',
- 'The play state of a paused animation should become ' +
- '"finished" after finish() is called');
- assert_times_equal(animation.startTime,
- animation.timeline.currentTime - 100 * MS_PER_SEC,
- 'The start time of a paused animation should be set ' +
- 'after calling finish()');
- });
-}, 'Test finish() while paused');
-
-test(t => {
- const div = createDiv(t);
- const animation = div.animate(gKeyFrames, 100 * MS_PER_SEC);
- animation.pause();
- // Update playbackRate so we can test that the calculated startTime
- // respects it
- animation.playbackRate = 2;
- // While animation is still pause-pending call finish()
- animation.finish();
-
- assert_equals(animation.playState, 'finished',
- 'The play state of a pause-pending animation should become ' +
- '"finished" after finish() is called');
- assert_times_equal(animation.startTime,
- animation.timeline.currentTime - 100 * MS_PER_SEC / 2,
- 'The start time of a pause-pending animation should ' +
- 'be set after calling finish()');
-}, 'Test finish() while pause-pending with positive playbackRate');
-
-test(t => {
- const div = createDiv(t);
- const animation = div.animate(gKeyFrames, 100 * MS_PER_SEC);
- animation.pause();
- animation.playbackRate = -2;
- animation.finish();
-
- assert_equals(animation.playState, 'finished',
- 'The play state of a pause-pending animation should become ' +
- '"finished" after finish() is called');
- assert_equals(animation.startTime, animation.timeline.currentTime,
- 'The start time of a pause-pending animation should be ' +
- 'set after calling finish()');
-}, 'Test finish() while pause-pending with negative playbackRate');
-
-test(t => {
- const div = createDiv(t);
- const animation = div.animate(gKeyFrames, 100 * MS_PER_SEC);
- animation.playbackRate = 0.5;
- animation.finish();
-
- assert_equals(animation.playState, 'finished',
- 'The play state of a play-pending animation should become ' +
- '"finished" after finish() is called');
- assert_times_equal(animation.startTime,
- animation.timeline.currentTime - 100 * MS_PER_SEC / 0.5,
- 'The start time of a play-pending animation should ' +
- 'be set after calling finish()');
-}, 'Test finish() while play-pending');
-
-// FIXME: Add a test for when we are play-pending without an active timeline.
-// - In that case even after calling finish() we should still be pending but
-// the current time should be updated
-
-promise_test(t => {
- const div = createDiv(t);
- const animation = div.animate(gKeyFrames, 100 * MS_PER_SEC);
- return animation.ready.then(() => {
- animation.pause();
- animation.play();
- // We are now in the unusual situation of being play-pending whilst having
- // a resolved start time. Check that finish() still triggers a transition
- // to the finished state immediately.
- animation.finish();
-
- assert_equals(animation.playState, 'finished',
- 'After aborting a pause then calling finish() the play ' +
- 'state of an animation should become "finished" immediately');
- });
-}, 'Test finish() during aborted pause');
-
-promise_test(t => {
- const div = createDiv(t);
- div.style.marginLeft = '10px';
- const animation = div.animate(gKeyFrames, 100 * MS_PER_SEC);
- return animation.ready.then(() => {
- animation.finish();
- const marginLeft = parseFloat(getComputedStyle(div).marginLeft);
-
- assert_equals(marginLeft, 10,
- 'The computed style should be reset when finish() is ' +
- 'called');
- });
-}, 'Test resetting of computed style');
-
-promise_test(t => {
- const div = createDiv(t);
- const animation = div.animate(gKeyFrames, 100 * MS_PER_SEC);
- let resolvedFinished = false;
- animation.finished.then(() => {
- resolvedFinished = true;
- });
-
- return animation.ready.then(() => {
- animation.finish();
- }).then(() => {
- assert_true(resolvedFinished,
- 'Animation.finished should be resolved soon after ' +
- 'Animation.finish()');
- });
-}, 'Test finish() resolves finished promise synchronously');
-
-promise_test(t => {
- const effect = new KeyframeEffectReadOnly(null, gKeyFrames, 100 * MS_PER_SEC);
- const animation = new Animation(effect, document.timeline);
- let resolvedFinished = false;
- animation.finished.then(() => {
- resolvedFinished = true;
- });
-
- return animation.ready.then(() => {
- animation.finish();
- }).then(() => {
- assert_true(resolvedFinished,
- 'Animation.finished should be resolved soon after ' +
- 'Animation.finish()');
- });
-}, 'Test finish() resolves finished promise synchronously with an animation ' +
- 'without a target');
-
-promise_test(t => {
- const effect = new KeyframeEffectReadOnly(null, gKeyFrames, 100 * MS_PER_SEC);
- const animation = new Animation(effect, document.timeline);
- animation.play();
-
- let resolvedFinished = false;
- animation.finished.then(() => {
- resolvedFinished = true;
- });
-
- return animation.ready.then(() => {
- animation.currentTime = animation.effect.getComputedTiming().endTime - 1;
- return waitForAnimationFrames(2);
- }).then(() => {
- assert_true(resolvedFinished,
- 'Animation.finished should be resolved soon after ' +
- 'Animation finishes normally');
- });
-}, 'Test normally finished animation resolves finished promise synchronously ' +
- 'with an animation without a target');
-
-</script>
-</body>
diff --git a/tests/wpt/web-platform-tests/web-animations/interfaces/Animation/idlharness.html b/tests/wpt/web-platform-tests/web-animations/interfaces/Animation/idlharness.html
index 30751460121..bf7c9f39beb 100644
--- a/tests/wpt/web-platform-tests/web-animations/interfaces/Animation/idlharness.html
+++ b/tests/wpt/web-platform-tests/web-animations/interfaces/Animation/idlharness.html
@@ -29,6 +29,7 @@ interface Animation : EventTarget {
void finish ();
void play ();
void pause ();
+ void updatePlaybackRate (double playbackRate);
void reverse ();
};
</script>
diff --git a/tests/wpt/web-platform-tests/web-animations/interfaces/Animation/playbackRate.html b/tests/wpt/web-platform-tests/web-animations/interfaces/Animation/playbackRate.html
deleted file mode 100644
index be5bf969498..00000000000
--- a/tests/wpt/web-platform-tests/web-animations/interfaces/Animation/playbackRate.html
+++ /dev/null
@@ -1,84 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<title>Animation.playbackRate</title>
-<link rel="help" href="https://drafts.csswg.org/web-animations/#dom-animation-playbackrate">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="../../testcommon.js"></script>
-<body>
-<div id="log"></div>
-<script>
-'use strict';
-
-function assert_playbackrate(animation,
- previousAnimationCurrentTime,
- previousTimelineCurrentTime,
- description) {
- const animationCurrentTimeDifference =
- animation.currentTime - previousAnimationCurrentTime;
- const timelineCurrentTimeDifference =
- animation.timeline.currentTime - previousTimelineCurrentTime;
-
- assert_times_equal(animationCurrentTimeDifference,
- timelineCurrentTimeDifference * animation.playbackRate,
- description);
-}
-
-promise_test(t => {
- const div = createDiv(t);
- const animation = div.animate(null, 100 * MS_PER_SEC);
- return animation.ready.then(() => {
- animation.currentTime = 7 * MS_PER_SEC; // ms
- animation.playbackRate = 0.5;
-
- assert_equals(animation.currentTime, 7 * MS_PER_SEC,
- 'Reducing Animation.playbackRate should not change the currentTime ' +
- 'of a playing animation');
- animation.playbackRate = 2;
- assert_equals(animation.currentTime, 7 * MS_PER_SEC,
- 'Increasing Animation.playbackRate should not change the currentTime ' +
- 'of a playing animation');
- });
-}, 'Test the initial effect of setting playbackRate on currentTime');
-
-promise_test(t => {
- const div = createDiv(t);
- const animation = div.animate(null, 100 * MS_PER_SEC);
- animation.playbackRate = 2;
- let previousTimelineCurrentTime;
- let previousAnimationCurrentTime;
- return animation.ready.then(() => {
- previousAnimationCurrentTime = animation.currentTime;
- previousTimelineCurrentTime = animation.timeline.currentTime;
- return waitForAnimationFrames(1);
- }).then(() => {
- assert_playbackrate(animation,
- previousAnimationCurrentTime,
- previousTimelineCurrentTime,
- 'animation.currentTime should be 2 times faster than timeline.');
- });
-}, 'Test the effect of setting playbackRate on currentTime');
-
-promise_test(t => {
- const div = createDiv(t);
- const animation = div.animate(null, 100 * MS_PER_SEC);
- animation.playbackRate = 2;
- let previousTimelineCurrentTime;
- let previousAnimationCurrentTime;
- return animation.ready.then(() => {
- previousAnimationCurrentTime = animation.currentTime;
- previousTimelineCurrentTime = animation.timeline.currentTime;
- animation.playbackRate = 1;
- return waitForAnimationFrames(1);
- }).then(() => {
- assert_equals(animation.playbackRate, 1,
- 'sanity check: animation.playbackRate is still 1.');
- assert_playbackrate(animation,
- previousAnimationCurrentTime,
- previousTimelineCurrentTime,
- 'animation.currentTime should be the same speed as timeline now.');
- });
-}, 'Test the effect of setting playbackRate while playing animation');
-
-</script>
-</body>
diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/canceling-an-animation.html b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/canceling-an-animation.html
index 69644319a63..87b3ee06c26 100644
--- a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/canceling-an-animation.html
+++ b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/canceling-an-animation.html
@@ -26,29 +26,28 @@ promise_test(t => {
}, 'A play-pending ready promise should be rejected when the animation is'
+ ' canceled');
-promise_test(t => {
+promise_test(async t => {
const animation = createDiv(t).animate(null, 100 * MS_PER_SEC);
- return animation.ready.then(() => {
- animation.pause();
- // Set up listeners on pause-pending ready promise
- const retPromise = animation.ready.then(() => {
- assert_unreached('ready promise was fulfilled');
- }).catch(err => {
- assert_equals(err.name, 'AbortError',
- 'ready promise is rejected with AbortError');
- });
- animation.cancel();
- return retPromise;
- });
+ await animation.ready;
+
+ // Make it pause-pending
+ animation.pause();
+
+ // We need to store the original ready promise since cancel() will
+ // replace it
+ const originalPromise = animation.ready;
+ animation.cancel();
+
+ await promise_rejects(t, 'AbortError', originalPromise,
+ 'Cancel should abort ready promise');
}, 'A pause-pending ready promise should be rejected when the animation is'
+ ' canceled');
-promise_test(t => {
+promise_test(async t => {
const animation = createDiv(t).animate(null);
animation.cancel();
- return animation.ready.then(p => {
- assert_equals(p, animation);
- });
+ const promiseResult = await animation.ready;
+ assert_equals(promiseResult, animation);
}, 'When an animation is canceled, it should create a resolved Promise');
test(t => {
diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/finishing-an-animation.html b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/finishing-an-animation.html
index 7fde3c4db5e..b479db9b93e 100644
--- a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/finishing-an-animation.html
+++ b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/finishing-an-animation.html
@@ -11,7 +11,208 @@
<script>
'use strict';
-promise_test(t => {
+test(t => {
+ const div = createDiv(t);
+ const animation = div.animate(null, 100 * MS_PER_SEC);
+ animation.playbackRate = 0;
+
+ assert_throws({name: 'InvalidStateError'}, () => {
+ animation.finish();
+ });
+}, 'Finishing an animation with a zero playback rate throws');
+
+test(t => {
+ const div = createDiv(t);
+ const animation = div.animate(null,
+ { duration : 100 * MS_PER_SEC,
+ iterations : Infinity });
+
+ assert_throws({name: 'InvalidStateError'}, () => {
+ animation.finish();
+ });
+}, 'Finishing an infinite animation throws');
+
+test(t => {
+ const div = createDiv(t);
+ const animation = div.animate(null, 100 * MS_PER_SEC);
+ animation.finish();
+
+ assert_time_equals_literal(animation.currentTime, 100 * MS_PER_SEC,
+ 'After finishing, the currentTime should be set to the end of the'
+ + ' active duration');
+}, 'Finishing an animation seeks to the end time');
+
+test(t => {
+ const div = createDiv(t);
+ const animation = div.animate(null, 100 * MS_PER_SEC);
+ // 1s past effect end
+ animation.currentTime =
+ animation.effect.getComputedTiming().endTime + 1 * MS_PER_SEC;
+ animation.finish();
+
+ assert_time_equals_literal(animation.currentTime, 100 * MS_PER_SEC,
+ 'After finishing, the currentTime should be set back to the end of the'
+ + ' active duration');
+}, 'Finishing an animation with a current time past the effect end jumps'
+ + ' back to the end');
+
+promise_test(async t => {
+ const div = createDiv(t);
+ const animation = div.animate(null, 100 * MS_PER_SEC);
+ animation.currentTime = 100 * MS_PER_SEC;
+ await animation.finished;
+
+ animation.playbackRate = -1;
+ animation.finish();
+
+ assert_equals(animation.currentTime, 0,
+ 'After finishing a reversed animation the currentTime ' +
+ 'should be set to zero');
+}, 'Finishing a reversed animation jumps to zero time');
+
+promise_test(async t => {
+ const div = createDiv(t);
+ const animation = div.animate(null, 100 * MS_PER_SEC);
+ animation.currentTime = 100 * MS_PER_SEC;
+ await animation.finished;
+
+ animation.playbackRate = -1;
+ animation.currentTime = -1000;
+ animation.finish();
+
+ assert_equals(animation.currentTime, 0,
+ 'After finishing a reversed animation the currentTime ' +
+ 'should be set back to zero');
+}, 'Finishing a reversed animation with a current time less than zero'
+ + ' makes it jump back to zero');
+
+promise_test(async t => {
+ const div = createDiv(t);
+ const animation = div.animate(null, 100 * MS_PER_SEC);
+ animation.pause();
+ await animation.ready;
+
+ animation.finish();
+
+ assert_equals(animation.playState, 'finished',
+ 'The play state of a paused animation should become ' +
+ '"finished"');
+ assert_times_equal(animation.startTime,
+ animation.timeline.currentTime - 100 * MS_PER_SEC,
+ 'The start time of a paused animation should be set');
+}, 'Finishing a paused animation resolves the start time');
+
+test(t => {
+ const div = createDiv(t);
+ const animation = div.animate(null, 100 * MS_PER_SEC);
+ // Update playbackRate so we can test that the calculated startTime
+ // respects it
+ animation.playbackRate = 2;
+ animation.pause();
+ // While animation is still pause-pending call finish()
+ animation.finish();
+
+ assert_false(animation.pending);
+ assert_equals(animation.playState, 'finished',
+ 'The play state of a pause-pending animation should become ' +
+ '"finished"');
+ assert_times_equal(animation.startTime,
+ animation.timeline.currentTime - 100 * MS_PER_SEC / 2,
+ 'The start time of a pause-pending animation should ' +
+ 'be set');
+}, 'Finishing a pause-pending animation resolves the pending task'
+ + ' immediately and update the start time');
+
+test(t => {
+ const div = createDiv(t);
+ const animation = div.animate(null, 100 * MS_PER_SEC);
+ animation.playbackRate = -2;
+ animation.pause();
+ animation.finish();
+
+ assert_false(animation.pending);
+ assert_equals(animation.playState, 'finished',
+ 'The play state of a pause-pending animation should become ' +
+ '"finished"');
+ assert_times_equal(animation.startTime, animation.timeline.currentTime,
+ 'The start time of a pause-pending animation should be ' +
+ 'set');
+}, 'Finishing a pause-pending animation with negative playback rate'
+ + ' resolves the pending task immediately');
+
+test(t => {
+ const div = createDiv(t);
+ const animation = div.animate(null, 100 * MS_PER_SEC);
+ animation.playbackRate = 0.5;
+ animation.finish();
+
+ assert_false(animation.pending);
+ assert_equals(animation.playState, 'finished',
+ 'The play state of a play-pending animation should become ' +
+ '"finished"');
+ assert_times_equal(animation.startTime,
+ animation.timeline.currentTime - 100 * MS_PER_SEC / 0.5,
+ 'The start time of a play-pending animation should ' +
+ 'be set');
+}, 'Finishing an animation while play-pending resolves the pending'
+ + ' task immediately');
+
+// FIXME: Add a test for when we are play-pending without an active timeline.
+// - In that case even after calling finish() we should still be pending but
+// the current time should be updated
+
+promise_test(async t => {
+ const div = createDiv(t);
+ const animation = div.animate(null, 100 * MS_PER_SEC);
+ await animation.ready;
+
+ animation.pause();
+ animation.play();
+ // We are now in the unusual situation of being play-pending whilst having
+ // a resolved start time. Check that finish() still triggers a transition
+ // to the finished state immediately.
+ animation.finish();
+
+ assert_equals(animation.playState, 'finished',
+ 'After aborting a pause then finishing an animation its play ' +
+ 'state should become "finished" immediately');
+}, 'Finishing an animation during an aborted pause makes it finished'
+ + ' immediately');
+
+promise_test(async t => {
+ const div = createDiv(t);
+ const animation = div.animate(null, 100 * MS_PER_SEC);
+ let resolvedFinished = false;
+ animation.finished.then(() => {
+ resolvedFinished = true;
+ });
+
+ await animation.ready;
+
+ animation.finish();
+ await Promise.resolve();
+
+ assert_true(resolvedFinished, 'finished promise should be resolved');
+}, 'Finishing an animation resolves the finished promise synchronously');
+
+promise_test(async t => {
+ const effect = new KeyframeEffectReadOnly(null, null, 100 * MS_PER_SEC);
+ const animation = new Animation(effect, document.timeline);
+ let resolvedFinished = false;
+ animation.finished.then(() => {
+ resolvedFinished = true;
+ });
+
+ await animation.ready;
+
+ animation.finish();
+ await Promise.resolve();
+
+ assert_true(resolvedFinished, 'finished promise should be resolved');
+}, 'Finishing an animation without a target resolves the finished promise'
+ + ' synchronously');
+
+promise_test(async t => {
const animation = createDiv(t).animate(null, 100 * MS_PER_SEC);
const promise = animation.ready;
let readyResolved = false;
@@ -19,13 +220,69 @@ promise_test(t => {
animation.finish();
animation.ready.then(() => { readyResolved = true; });
- return animation.finished.then(p => {
- assert_equals(p, animation);
- assert_equals(animation.ready, promise);
- assert_true(readyResolved);
+ const promiseResult = await animation.finished;
+
+ assert_equals(promiseResult, animation);
+ assert_equals(animation.ready, promise);
+ assert_true(readyResolved);
+}, 'A pending ready promise is resolved and not replaced when the animation'
+ + ' is finished');
+
+promise_test(async t => {
+ const animation = createDiv(t).animate(null, 100 * MS_PER_SEC);
+ await animation.ready;
+
+ animation.updatePlaybackRate(2);
+ assert_true(animation.pending);
+
+ animation.finish();
+ assert_false(animation.pending);
+ assert_equals(animation.playbackRate, 2);
+ assert_time_equals_literal(animation.currentTime, 100 * MS_PER_SEC);
+}, 'A pending playback rate should be applied immediately when an animation'
+ + ' is finished');
+
+promise_test(async t => {
+ const animation = createDiv(t).animate(null, 100 * MS_PER_SEC);
+ await animation.ready;
+
+ animation.updatePlaybackRate(0);
+
+ assert_throws('InvalidStateError', () => {
+ animation.finish();
+ });
+}, 'An exception should be thrown if the effective playback rate is zero');
+
+promise_test(async t => {
+ const animation = createDiv(t).animate(null, {
+ duration: 100 * MS_PER_SEC,
+ iterations: Infinity
});
-}, 'A pending ready promise should be resolved and not replaced when the'
- + ' animation is finished');
+ animation.currentTime = 50 * MS_PER_SEC;
+ animation.playbackRate = -1;
+ await animation.ready;
+
+ animation.updatePlaybackRate(1);
+
+ assert_throws('InvalidStateError', () => {
+ animation.finish();
+ });
+}, 'An exception should be thrown when finishing if the effective playback rate'
+ + ' is positive and the target effect end is infinity');
+
+promise_test(async t => {
+ const animation = createDiv(t).animate(null, {
+ duration: 100 * MS_PER_SEC,
+ iterations: Infinity
+ });
+ await animation.ready;
+
+ animation.updatePlaybackRate(-1);
+
+ animation.finish();
+ // Should not have thrown
+}, 'An exception is NOT thrown when finishing if the effective playback rate'
+ + ' is negative and the target effect end is infinity');
</script>
</body>
diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/pausing-an-animation.html b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/pausing-an-animation.html
index f04ec1a904b..c9aabba231a 100644
--- a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/pausing-an-animation.html
+++ b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/pausing-an-animation.html
@@ -11,17 +11,36 @@
<script>
'use strict';
-promise_test(t => {
+promise_test(async t => {
const animation = createDiv(t).animate(null, 100 * MS_PER_SEC);
const promise = animation.ready;
animation.pause();
- return promise.then(p => {
- assert_equals(p, animation);
- assert_equals(animation.ready, promise);
- assert_false(animation.pending, 'No longer pause-pending');
- });
+
+ const promiseResult = await promise;
+
+ assert_equals(promiseResult, animation);
+ assert_equals(animation.ready, promise);
+ assert_false(animation.pending, 'No longer pause-pending');
}, 'A pending ready promise should be resolved and not replaced when the'
+ ' animation is paused');
+promise_test(async t => {
+ const animation = createDiv(t).animate(null, 100 * MS_PER_SEC);
+ // Let animation start roughly half-way through
+ animation.currentTime = 50 * MS_PER_SEC;
+ await animation.ready;
+
+ // Go pause-pending and also set a pending playback rate
+ animation.pause();
+ animation.updatePlaybackRate(0.5);
+
+ await animation.ready;
+ // If the current time was updated using the new playback rate it will jump
+ // back to 25s but if we correctly used the old playback rate the current time
+ // will be >50s.
+ assert_greater_than(animation.currentTime, 50 * MS_PER_SEC);
+}, 'A pause-pending animation maintains the current time when applying a'
+ + ' pending playback rate');
+
</script>
</body>
diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/play-states.html b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/play-states.html
index 49b26382ec7..5d8fdeac6ec 100644
--- a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/play-states.html
+++ b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/play-states.html
@@ -1,7 +1,7 @@
<!DOCTYPE html>
<meta charset=utf-8>
<title>Play states</title>
-<link rel="help" href="https://drafts.csswg.org/web-animations/#play-state">
+<link rel="help" href="https://drafts.csswg.org/web-animations/#play-states">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="../../testcommon.js"></script>
diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/playing-an-animation.html b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/playing-an-animation.html
index 10641920514..fb7020c49b8 100644
--- a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/playing-an-animation.html
+++ b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/playing-an-animation.html
@@ -45,15 +45,31 @@ test(t => {
}, 'The ready promise should be replaced if the animation is not already'
+ ' pending');
-promise_test(t => {
+promise_test(async t => {
const animation = createDiv(t).animate(null, 100 * MS_PER_SEC);
const promise = animation.ready;
- return promise.then(p => {
- assert_equals(p, animation);
- assert_equals(animation.ready, promise);
- });
+ const promiseResult = await promise;
+ assert_equals(promiseResult, animation);
+ assert_equals(animation.ready, promise);
}, 'A pending ready promise should be resolved and not replaced when the'
+ ' animation enters the running state');
+promise_test(async t => {
+ // Seek animation beyond target end
+ const animation = createDiv(t).animate(null, 100 * MS_PER_SEC);
+ animation.currentTime = -100 * MS_PER_SEC;
+ await animation.ready;
+
+ // Set pending playback rate to the opposite direction
+ animation.updatePlaybackRate(-1);
+ assert_true(animation.pending);
+ assert_equals(animation.playbackRate, 1);
+
+ // When we play, we should seek to the target end, NOT to zero (which
+ // is where we would seek to if we used the playbackRate of 1.
+ animation.play();
+ assert_time_equals_literal(animation.currentTime, 100 * MS_PER_SEC);
+}, 'A pending playback rate is used when determining auto-rewind behavior');
+
</script>
</body>
diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/reversing-an-animation.html b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/reversing-an-animation.html
index 2d5d4e5d0f8..41302d95816 100644
--- a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/reversing-an-animation.html
+++ b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/reversing-an-animation.html
@@ -1,8 +1,8 @@
<!DOCTYPE html>
<meta charset=utf-8>
-<title>Reverse an animation</title>
+<title>Reversing an animation</title>
<link rel="help"
- href="https://drafts.csswg.org/web-animations/#reverse-an-animation">
+ href="https://drafts.csswg.org/web-animations/#reversing-an-animation-section">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="../../testcommon.js"></script>
@@ -11,38 +11,43 @@
<script>
'use strict';
-promise_test(t => {
+promise_test(async t => {
const div = createDiv(t);
const animation = div.animate({}, { duration: 100 * MS_PER_SEC,
iterations: Infinity });
+ await animation.ready;
// Wait a frame because if currentTime is still 0 when we call
// reverse(), it will throw (per spec).
- return animation.ready.then(waitForAnimationFrames(1)).then(() => {
- assert_greater_than_equal(animation.currentTime, 0,
- 'currentTime expected to be greater than 0, one frame after starting');
- animation.currentTime = 50 * MS_PER_SEC;
- const previousPlaybackRate = animation.playbackRate;
- animation.reverse();
- assert_equals(animation.playbackRate, -previousPlaybackRate,
- 'playbackRate should be inverted');
- });
+ await waitForAnimationFrames(1);
+
+ assert_greater_than_equal(animation.currentTime, 0,
+ 'currentTime expected to be greater than 0, one frame after starting');
+ animation.currentTime = 50 * MS_PER_SEC;
+ const previousPlaybackRate = animation.playbackRate;
+ animation.reverse();
+ assert_equals(animation.playbackRate, previousPlaybackRate,
+ 'Playback rate should not have changed');
+ await animation.ready;
+
+ assert_equals(animation.playbackRate, -previousPlaybackRate,
+ 'Playback rate should be inverted');
}, 'Reversing an animation inverts the playback rate');
-promise_test(t => {
+promise_test(async t => {
const div = createDiv(t);
const animation = div.animate({}, { duration: 100 * MS_PER_SEC,
iterations: Infinity });
animation.currentTime = 50 * MS_PER_SEC;
animation.pause();
- return animation.ready.then(() => {
- animation.reverse();
- return animation.ready;
- }).then(() => {
- assert_equals(animation.playState, 'running',
- 'Animation.playState should be "running" after reverse()');
- });
+ await animation.ready;
+
+ animation.reverse();
+ await animation.ready;
+
+ assert_equals(animation.playState, 'running',
+ 'Animation.playState should be "running" after reverse()');
}, 'Reversing an animation plays a pausing animation');
test(t => {
@@ -69,7 +74,7 @@ test(t => {
'The animation is still pending after calling reverse');
}, 'Reversing an animation does not cause it to leave the pending state');
-promise_test(t => {
+promise_test(async t => {
const div = createDiv(t);
const animation = div.animate({}, { duration: 200 * MS_PER_SEC,
delay: -100 * MS_PER_SEC });
@@ -78,10 +83,9 @@ promise_test(t => {
animation.reverse();
- return Promise.resolve(() => {
- assert_false(readyResolved,
- 'ready promise should not have been resolved yet');
- });
+ await Promise.resolve();
+ assert_false(readyResolved,
+ 'ready promise should not have been resolved yet');
}, 'Reversing an animation does not cause it to resolve the ready promise');
test(t => {
@@ -149,13 +153,16 @@ test(t => {
}, 'Reversing an animation when playbackRate > 0 and currentTime < 0 ' +
'and the target effect end is positive infinity should throw an exception');
-test(t => {
+promise_test(async t => {
const animation = createDiv(t).animate({}, { duration: 100 * MS_PER_SEC,
iterations: Infinity });
animation.currentTime = -200 * MS_PER_SEC;
try { animation.reverse(); } catch(e) { }
+ assert_equals(animation.playbackRate, 1, 'playbackRate is unchanged');
+
+ await animation.ready;
assert_equals(animation.playbackRate, 1, 'playbackRate remains unchanged');
}, 'When reversing throws an exception, the playback rate remains unchanged');
@@ -191,18 +198,18 @@ test(t => {
'and the target effect end is positive infinity should make it play ' +
'from the start');
-test(t => {
+promise_test(async t => {
const div = createDiv(t);
const animation = div.animate({}, 100 * MS_PER_SEC);
animation.playbackRate = 0;
animation.currentTime = 50 * MS_PER_SEC;
animation.reverse();
+ await animation.ready;
assert_equals(animation.playbackRate, 0,
'reverse() should preserve playbackRate if the playbackRate == 0');
assert_equals(animation.currentTime, 50 * MS_PER_SEC,
'reverse() should not affect the currentTime if the playbackRate == 0');
- t.done();
}, 'Reversing when when playbackRate == 0 should preserve the current ' +
'time and playback rate');
@@ -215,5 +222,33 @@ test(t => {
}, 'Reversing an animation without an active timeline throws an ' +
'InvalidStateError');
+promise_test(async t => {
+ const animation = createDiv(t).animate(null, 100 * MS_PER_SEC);
+ await animation.ready;
+
+ animation.updatePlaybackRate(2);
+ animation.reverse();
+
+ await animation.ready;
+ assert_equals(animation.playbackRate, -2);
+}, 'Reversing should use the negative pending playback rate');
+
+promise_test(async t => {
+ const animation = createDiv(t).animate(null, {
+ duration: 100 * MS_PER_SEC,
+ iterations: Infinity,
+ });
+ animation.currentTime = -200 * MS_PER_SEC;
+ await animation.ready;
+
+ animation.updatePlaybackRate(2);
+ assert_throws('InvalidStateError', () => { animation.reverse(); });
+ assert_equals(animation.playbackRate, 1);
+
+ await animation.ready;
+ assert_equals(animation.playbackRate, 2);
+}, 'When reversing fails, it should restore any previous pending playback'
+ + ' rate');
+
</script>
</body>
diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/seamlessly-updating-the-playback-rate-of-an-animation.html b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/seamlessly-updating-the-playback-rate-of-an-animation.html
new file mode 100644
index 00000000000..41e9776c136
--- /dev/null
+++ b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/seamlessly-updating-the-playback-rate-of-an-animation.html
@@ -0,0 +1,142 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>Seamlessly updating the playback rate of an animation</title>
+<link rel="help"
+ href="https://drafts.csswg.org/web-animations-1/#seamlessly-updating-the-playback-rate-of-an-animation">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../testcommon.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+promise_test(async t => {
+ const animation = createDiv(t).animate(null, 100 * MS_PER_SEC);
+ await animation.ready;
+
+ animation.currentTime = 50 * MS_PER_SEC;
+
+ animation.updatePlaybackRate(0.5);
+ await animation.ready;
+ // Since the animation is in motion (and we want to test it while it is in
+ // motion!) we can't assert that the current time == 50s but we can check
+ // that the current time is NOT re-calculated by simply substituting in the
+ // new playback rate (i.e. without adjusting the start time). If that were
+ // the case the currentTime would jump to 25s. So we just test the currentTime
+ // hasn't gone backwards.
+ assert_greater_than_equal(animation.currentTime, 50 * MS_PER_SEC,
+ 'Reducing the playback rate should not change the current time ' +
+ 'of a playing animation');
+
+ animation.updatePlaybackRate(2);
+ await animation.ready;
+ // Likewise, we test here that the current time does not jump to 100s as it
+ // would if we naively applied a playbackRate of 2 without adjusting the
+ // startTime.
+ assert_less_than(animation.currentTime, 100 * MS_PER_SEC,
+ 'Increasing the playback rate should not change the current time ' +
+ 'of a playing animation');
+}, 'Updating the playback rate maintains the current time');
+
+promise_test(async t => {
+ const animation = createDiv(t).animate(null, 100 * MS_PER_SEC);
+ await animation.ready;
+
+ assert_false(animation.pending);
+ animation.updatePlaybackRate(2);
+ assert_true(animation.pending);
+}, 'Updating the playback rate while running makes the animation pending');
+
+promise_test(async t => {
+ const animation = createDiv(t).animate(null, 100 * MS_PER_SEC);
+ animation.currentTime = 50 * MS_PER_SEC;
+ assert_true(animation.pending);
+
+ animation.updatePlaybackRate(0.5);
+
+ // Check that the hold time is updated as expected
+ assert_time_equals_literal(animation.currentTime, 50 * MS_PER_SEC);
+
+ await animation.ready;
+
+ // As above, check that the currentTime is not calculated by simply
+ // substituting in the updated playbackRate without updating the startTime.
+ assert_greater_than_equal(animation.currentTime, 50 * MS_PER_SEC,
+ 'Reducing the playback rate should not change the current time ' +
+ 'of a play-pending animation');
+}, 'Updating the playback rate on a play-pending animation maintains'
+ + ' the current time');
+
+promise_test(async t => {
+ const animation = createDiv(t).animate(null, 100 * MS_PER_SEC);
+ animation.currentTime = 50 * MS_PER_SEC;
+ await animation.ready;
+
+ animation.pause();
+ animation.updatePlaybackRate(0.5);
+
+ assert_greater_than_equal(animation.currentTime, 50 * MS_PER_SEC);
+}, 'Updating the playback rate on a pause-pending animation maintains'
+ + ' the current time');
+
+promise_test(async t => {
+ const animation = createDiv(t).animate(null, 100 * MS_PER_SEC);
+
+ animation.updatePlaybackRate(2);
+ animation.updatePlaybackRate(3);
+ animation.updatePlaybackRate(4);
+
+ assert_equals(animation.playbackRate, 1);
+ await animation.ready;
+
+ assert_equals(animation.playbackRate, 4);
+}, 'If a pending playback rate is set multiple times, the latest wins');
+
+test(t => {
+ const animation = createDiv(t).animate(null, 100 * MS_PER_SEC);
+ animation.cancel();
+
+ animation.updatePlaybackRate(2);
+ assert_equals(animation.playbackRate, 2);
+ assert_false(animation.pending);
+}, 'In the idle state, the playback rate is applied immediately');
+
+promise_test(async t => {
+ const animation = createDiv(t).animate(null, 100 * MS_PER_SEC);
+ animation.pause();
+ await animation.ready;
+
+ animation.updatePlaybackRate(2);
+ assert_equals(animation.playbackRate, 2);
+ assert_false(animation.pending);
+}, 'In the paused state, the playback rate is applied immediately');
+
+promise_test(async t => {
+ const animation = createDiv(t).animate(null, 100 * MS_PER_SEC);
+ animation.finish();
+ assert_time_equals_literal(animation.currentTime, 100 * MS_PER_SEC);
+ assert_false(animation.pending);
+
+ animation.updatePlaybackRate(2);
+ assert_equals(animation.playbackRate, 2);
+ assert_time_equals_literal(animation.currentTime, 100 * MS_PER_SEC);
+ assert_false(animation.pending);
+}, 'Updating the playback rate on a finished animation maintains'
+ + ' the current time');
+
+promise_test(async t => {
+ const animation = createDiv(t).animate(null, 100 * MS_PER_SEC);
+ animation.finish();
+ assert_time_equals_literal(animation.currentTime, 100 * MS_PER_SEC);
+ assert_false(animation.pending);
+
+ animation.updatePlaybackRate(0);
+ assert_equals(animation.playbackRate, 0);
+ assert_time_equals_literal(animation.currentTime, 100 * MS_PER_SEC);
+ assert_false(animation.pending);
+}, 'Updating the playback rate to zero on a finished animation maintains'
+ + ' the current time');
+
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/setting-the-current-time-of-an-animation.html b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/setting-the-current-time-of-an-animation.html
new file mode 100644
index 00000000000..04589ffa001
--- /dev/null
+++ b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/setting-the-current-time-of-an-animation.html
@@ -0,0 +1,38 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>Setting the current time of an animation</title>
+<link rel="help"
+ href="https://drafts.csswg.org/web-animations-1/#setting-the-current-time-of-an-animation">
+<script src='/resources/testharness.js'></script>
+<script src='/resources/testharnessreport.js'></script>
+<script src='../../testcommon.js'></script>
+<body>
+<div id='log'></div>
+<script>
+'use strict';
+
+promise_test(async t => {
+ const anim = createDiv(t).animate(null, 100 * MS_PER_SEC);
+ await anim.ready;
+ anim.pause();
+
+ // We should be pause-pending now
+ assert_true(anim.pending);
+ assert_equals(anim.playState, 'paused');
+
+ // Apply a pending playback rate
+ anim.updatePlaybackRate(2);
+ assert_equals(anim.playbackRate, 1);
+
+ // Setting the current time should apply the pending playback rate
+ anim.currentTime = 50 * MS_PER_SEC;
+ assert_equals(anim.playbackRate, 2);
+ assert_false(anim.pending);
+
+ // Sanity check that the current time is preserved
+ assert_time_equals_literal(anim.currentTime, 50 * MS_PER_SEC);
+}, 'Setting the current time of a pausing animation applies a pending playback'
+ + ' rate');
+
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/setting-the-playback-rate-of-an-animation.html b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/setting-the-playback-rate-of-an-animation.html
new file mode 100644
index 00000000000..9d07d53df46
--- /dev/null
+++ b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/setting-the-playback-rate-of-an-animation.html
@@ -0,0 +1,61 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>Setting the playback rate of an animation</title>
+<link rel="help" href="https://drafts.csswg.org/web-animations/#setting-the-playback-rate-of-an-animation">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../testcommon.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+promise_test(async t => {
+ const animation = createDiv(t).animate(null, 100 * MS_PER_SEC);
+ animation.playbackRate = 2;
+ await animation.ready;
+
+ const previousAnimationCurrentTime = animation.currentTime;
+ const previousTimelineCurrentTime = animation.timeline.currentTime;
+
+ await waitForAnimationFrames(1);
+
+ const animationCurrentTimeDifference =
+ animation.currentTime - previousAnimationCurrentTime;
+ const timelineCurrentTimeDifference =
+ animation.timeline.currentTime - previousTimelineCurrentTime;
+
+ assert_times_equal(
+ animationCurrentTimeDifference,
+ timelineCurrentTimeDifference * animation.playbackRate,
+ 'The current time should increase two times faster than timeline'
+ );
+}, 'The playback rate affects the rate of progress of the current time');
+
+test(t => {
+ const animation = createDiv(t).animate(null, 100 * MS_PER_SEC);
+ animation.currentTime = 50 * MS_PER_SEC;
+ animation.playbackRate = 2;
+ assert_time_equals_literal(animation.currentTime, 50 * MS_PER_SEC);
+}, 'Setting the playback rate while play-pending preserves the current time');
+
+promise_test(async t => {
+ const animation = createDiv(t).animate(null, 100 * MS_PER_SEC);
+ animation.currentTime = 50 * MS_PER_SEC;
+ await animation.ready;
+ animation.playbackRate = 2;
+ assert_greater_than_equal(animation.currentTime, 50 * MS_PER_SEC);
+ assert_less_than(animation.currentTime, 100 * MS_PER_SEC);
+}, 'Setting the playback rate while playing preserves the current time');
+
+promise_test(async t => {
+ const animation = createDiv(t).animate(null, 100 * MS_PER_SEC);
+ animation.currentTime = 50 * MS_PER_SEC;
+ animation.updatePlaybackRate(2);
+ animation.playbackRate = 1;
+ await animation.ready;
+ assert_equals(animation.playbackRate, 1);
+}, 'Setting the playback rate should clear any pending playback rate');
+
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/set-the-animation-start-time.html b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/setting-the-start-time-of-an-animation.html
index d2a311d4dd4..2c4922bd135 100644
--- a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/set-the-animation-start-time.html
+++ b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/setting-the-start-time-of-an-animation.html
@@ -1,7 +1,7 @@
<!DOCTYPE html>
<meta charset=utf-8>
-<title>Set the animation start time</title>
-<link rel="help" href="https://drafts.csswg.org/web-animations/#set-the-animation-start-time">
+<title>Setting the start time of an animation</title>
+<link rel="help" href="https://drafts.csswg.org/web-animations/#setting-the-start-time-of-an-animation">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="../../testcommon.js"></script>
@@ -112,7 +112,7 @@ test(t => {
+ ' start time');
}, 'Setting an unresolved start time sets the hold time');
-promise_test(t => {
+promise_test(async t => {
const animation =
new Animation(new KeyframeEffect(createDiv(t), null, 100 * MS_PER_SEC),
document.timeline);
@@ -135,13 +135,12 @@ promise_test(t => {
// If we schedule another microtask then it should run immediately after
// the ready promise resolution microtask.
- return Promise.resolve().then(() => {
- assert_true(readyPromiseCallbackCalled,
- 'Ready promise callback called after setting startTime');
- });
+ await Promise.resolve();
+ assert_true(readyPromiseCallbackCalled,
+ 'Ready promise callback called after setting startTime');
}, 'Setting the start time resolves a pending ready promise');
-promise_test(t => {
+promise_test(async t => {
const animation =
new Animation(new KeyframeEffect(createDiv(t), null, 100 * MS_PER_SEC),
document.timeline);
@@ -163,13 +162,12 @@ promise_test(t => {
assert_false(readyPromiseCallbackCalled,
'Ready promise callback is not called synchronously');
- return Promise.resolve().then(() => {
- assert_true(readyPromiseCallbackCalled,
- 'Ready promise callback called after setting startTime');
- });
+ await Promise.resolve();
+ assert_true(readyPromiseCallbackCalled,
+ 'Ready promise callback called after setting startTime');
}, 'Setting the start time resolves a pending pause task');
-promise_test(t => {
+promise_test(async t => {
const animation =
new Animation(new KeyframeEffect(createDiv(t), null, 100 * MS_PER_SEC),
document.timeline);
@@ -190,12 +188,60 @@ promise_test(t => {
// Furthermore, that time should persist if we have correctly updated
// the hold time
const finishedCurrentTime = animation.currentTime;
- return waitForAnimationFrames(1).then(() => {
- assert_equals(animation.currentTime, finishedCurrentTime,
- 'Current time does not change after seeking past the effect'
- + ' end time by setting the current time');
- });
+ await waitForAnimationFrames(1);
+ assert_equals(animation.currentTime, finishedCurrentTime,
+ 'Current time does not change after seeking past the effect'
+ + ' end time by setting the current time');
}, 'Setting the start time updates the finished state');
+promise_test(async t => {
+ const anim = createDiv(t).animate(null, 100 * MS_PER_SEC);
+
+ // We should be play-pending now
+ assert_true(anim.pending);
+ assert_equals(anim.playState, 'running');
+
+ // Apply a pending playback rate
+ anim.updatePlaybackRate(2);
+ assert_equals(anim.playbackRate, 1);
+ assert_true(anim.pending);
+
+ // Setting the start time should apply the pending playback rate
+ anim.startTime = anim.timeline.currentTime - 25 * MS_PER_SEC;
+ assert_equals(anim.playbackRate, 2);
+ assert_false(anim.pending);
+
+ // Sanity check that the start time is preserved and current time is
+ // calculated using the new playback rate
+ assert_times_equal(anim.startTime,
+ anim.timeline.currentTime - 25 * MS_PER_SEC);
+ assert_time_equals_literal(anim.currentTime, 50 * MS_PER_SEC);
+}, 'Setting the start time of a play-pending animation applies a pending playback rate');
+
+promise_test(async t => {
+ const anim = createDiv(t).animate(null, 100 * MS_PER_SEC);
+ await anim.ready;
+
+ // We should be running now
+ assert_false(anim.pending);
+ assert_equals(anim.playState, 'running');
+
+ // Apply a pending playback rate
+ anim.updatePlaybackRate(2);
+ assert_equals(anim.playbackRate, 1);
+ assert_true(anim.pending);
+
+ // Setting the start time should apply the pending playback rate
+ anim.startTime = anim.timeline.currentTime - 25 * MS_PER_SEC;
+ assert_equals(anim.playbackRate, 2);
+ assert_false(anim.pending);
+
+ // Sanity check that the start time is preserved and current time is
+ // calculated using the new playback rate
+ assert_times_equal(anim.startTime,
+ anim.timeline.currentTime - 25 * MS_PER_SEC);
+ assert_time_equals_literal(anim.currentTime, 50 * MS_PER_SEC);
+}, 'Setting the start time of a playing animation applies a pending playback rate');
+
</script>
</body>
diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/set-the-target-effect-of-an-animation.html b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/setting-the-target-effect-of-an-animation.html
index b416bda5568..184804d6702 100644
--- a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/set-the-target-effect-of-an-animation.html
+++ b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/setting-the-target-effect-of-an-animation.html
@@ -1,6 +1,6 @@
<!DOCTYPE html>
<meta charset=utf-8>
-<title>Setting the target effect</title>
+<title>Setting the target effect of an animation</title>
<link rel='help' href='https://drafts.csswg.org/web-animations/#setting-the-target-effect'>
<script src='/resources/testharness.js'></script>
<script src='/resources/testharnessreport.js'></script>
@@ -31,7 +31,7 @@ promise_test(t => {
}, 'If new effect is null and old effect is not null, we reset the pending ' +
'tasks and ready promise is rejected');
-promise_test(t => {
+promise_test(async t => {
const anim = new Animation();
anim.pause();
assert_true(anim.pending);
@@ -40,15 +40,14 @@ promise_test(t => {
{ marginLeft: [ '0px', '100px' ] },
100 * MS_PER_SEC);
assert_true(anim.pending);
+ await anim.ready;
- return anim.ready.then(() => {
- assert_false(anim.pending);
- assert_equals(anim.playState, 'paused');
- });
+ assert_false(anim.pending);
+ assert_equals(anim.playState, 'paused');
}, 'If animation has a pending pause task, reschedule that task to run ' +
'as soon as animation is ready.');
-promise_test(t => {
+promise_test(async t => {
const anim = new Animation();
anim.play();
assert_true(anim.pending);
@@ -57,24 +56,23 @@ promise_test(t => {
{ marginLeft: [ '0px', '100px' ] },
100 * MS_PER_SEC);
assert_true(anim.pending);
+ await anim.ready;
- return anim.ready.then(() => {
- assert_false(anim.pending);
- assert_equals(anim.playState, 'running');
- });
+ assert_false(anim.pending);
+ assert_equals(anim.playState, 'running');
}, 'If animation has a pending play task, reschedule that task to run ' +
'as soon as animation is ready to play new effect.');
-promise_test(t => {
+promise_test(async t => {
const animA = createDiv(t).animate({ marginLeft: [ '0px', '100px' ] },
100 * MS_PER_SEC);
const animB = new Animation();
- return animA.ready.then(() => {
- animB.effect = animA.effect;
- assert_equals(animA.effect, null);
- assert_equals(animA.playState, 'finished');
- });
+ await animA.ready;
+
+ animB.effect = animA.effect;
+ assert_equals(animA.effect, null);
+ assert_equals(animA.playState, 'finished');
}, 'When setting the effect of an animation to the effect of an existing ' +
'animation, the existing animation\'s target effect should be set to null.');
@@ -95,5 +93,15 @@ test(t => {
'existing animation, the target effect\'s timing is updated to reflect ' +
'the current time of the new animation.');
+test(t => {
+ const anim = createDiv(t).animate(null, 100 * MS_PER_SEC);
+ anim.updatePlaybackRate(2);
+ assert_equals(anim.playbackRate, 1);
+
+ anim.effect = null;
+ assert_equals(anim.playbackRate, 2);
+}, 'Setting the target effect to null causes a pending playback rate to be'
+ + ' applied');
+
</script>
</body>
diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/set-the-timeline-of-an-animation.html b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/setting-the-timeline-of-an-animation.html
index 24f201d550c..dd861750395 100644
--- a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/set-the-timeline-of-an-animation.html
+++ b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/setting-the-timeline-of-an-animation.html
@@ -1,6 +1,6 @@
<!DOCTYPE html>
<meta charset=utf-8>
-<title>Setting the timeline</title>
+<title>Setting the timeline of an animation</title>
<link rel="help" href="https://drafts.csswg.org/web-animations/#setting-the-timeline">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
@@ -81,7 +81,7 @@ test(t => {
}, 'After setting timeline on an idle animation with a sufficiently ancient'
+ ' start time it is finished');
-promise_test(t => {
+promise_test(async t => {
const animation =
new Animation(new KeyframeEffect(createDiv(t), null, 100 * MS_PER_SEC),
null);
@@ -94,14 +94,13 @@ promise_test(t => {
assert_true(animation.pending && animation.playState === 'running',
'Animation is still play-pending after setting timeline');
- return animation.ready.then(() => {
- assert_true(!animation.pending && animation.playState === 'running',
- 'Animation plays after it finishes pending');
- });
+ await animation.ready;
+ assert_true(!animation.pending && animation.playState === 'running',
+ 'Animation plays after it finishes pending');
}, 'After setting timeline on a play-pending animation it begins playing'
+ ' after pending');
-promise_test(t => {
+promise_test(async t => {
const animation =
new Animation(new KeyframeEffect(createDiv(t), null, 100 * MS_PER_SEC),
null);
@@ -116,10 +115,9 @@ promise_test(t => {
assert_true(animation.pending && animation.playState === 'paused',
'Animation is still pause-pending after setting timeline');
- return animation.ready.then(() => {
- assert_true(!animation.pending && animation.playState === 'paused',
- 'Animation pauses after it finishes pending');
- });
+ await animation.ready;
+ assert_true(!animation.pending && animation.playState === 'paused',
+ 'Animation pauses after it finishes pending');
}, 'After setting timeline on a pause-pending animation it becomes paused'
+ ' after pending');
@@ -193,7 +191,7 @@ test(t => {
assert_true(animation.pending && animation.playState === 'running');
}, 'After clearing timeline on play-pending animation it is still pending');
-promise_test(t => {
+promise_test(async t => {
const animation = createDiv(t).animate(null, 100 * MS_PER_SEC);
assert_true(animation.pending && animation.playState === 'running');
@@ -201,9 +199,8 @@ promise_test(t => {
animation.timeline = document.timeline;
assert_true(animation.pending && animation.playState === 'running');
- return animation.ready.then(() => {
- assert_true(!animation.pending && animation.playState === 'running');
- });
+ await animation.ready;
+ assert_true(!animation.pending && animation.playState === 'running');
}, 'After clearing and re-setting timeline on play-pending animation it'
+ ' begins to play');
@@ -220,7 +217,7 @@ test(t => {
assert_true(animation.pending && animation.playState === 'paused');
}, 'After clearing timeline on a pause-pending animation it is still pending');
-promise_test(t => {
+promise_test(async t => {
const animation =
new Animation(new KeyframeEffect(createDiv(t), null, 100 * MS_PER_SEC),
document.timeline);
@@ -232,13 +229,12 @@ promise_test(t => {
animation.timeline = document.timeline;
assert_true(animation.pending && animation.playState === 'paused');
- return animation.ready.then(() => {
- assert_true(!animation.pending && animation.playState === 'paused');
- });
+ await animation.ready;
+ assert_true(!animation.pending && animation.playState === 'paused');
}, 'After clearing and re-setting timeline on a pause-pending animation it'
+ ' completes pausing');
-promise_test(t => {
+promise_test(async t => {
const animation =
new Animation(new KeyframeEffect(createDiv(t), null, 100 * MS_PER_SEC),
document.timeline);
@@ -250,9 +246,8 @@ promise_test(t => {
animation.timeline = null;
animation.timeline = document.timeline;
- return animation.ready.then(() => {
- assert_times_equal(animation.startTime, initialStartTime);
- });
+ await animation.ready;
+ assert_times_equal(animation.startTime, initialStartTime);
}, 'After clearing and re-setting timeline on an animation in the middle of'
+ ' an aborted pause, it continues playing using the same start time');
diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/current-time.html b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/the-current-time-of-an-animation.html
index 08f90d9f0c1..a0e1a111fd4 100644
--- a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/current-time.html
+++ b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/the-current-time-of-an-animation.html
@@ -1,7 +1,7 @@
<!DOCTYPE html>
<meta charset=utf-8>
-<title>Current time</title>
-<link rel="help" href="https://drafts.csswg.org/web-animations/#current-time">
+<title>The current time of an animation</title>
+<link rel="help" href="https://drafts.csswg.org/web-animations/#the-current-time-of-an-animation">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="../../testcommon.js"></script>
@@ -21,14 +21,13 @@ test(t => {
'state');
}, 'The current time returns the hold time when set');
-promise_test(t => {
+promise_test(async t => {
const animation =
new Animation(new KeyframeEffect(createDiv(t), null, 100 * MS_PER_SEC),
null);
- return animation.ready.then(() => {
- assert_equals(animation.currentTime, null);
- });
+ await animation.ready;
+ assert_equals(animation.currentTime, null);
}, 'The current time is unresolved when there is no associated timeline ' +
'(and no hold time is set)');
@@ -62,14 +61,13 @@ test(t => {
}, 'The current time is calculated from the timeline time, start time and ' +
'playback rate');
-promise_test(t => {
+promise_test(async t => {
const animation = createDiv(t).animate(null, 100 * MS_PER_SEC);
animation.playbackRate = 0;
- return animation.ready.then(() => waitForAnimationFrames(1))
- .then(() => {
- assert_time_equals_literal(animation.currentTime, 0);
- });
+ await animation.ready;
+ await waitForAnimationFrames(1);
+ assert_time_equals_literal(animation.currentTime, 0);
}, 'The current time does not progress if playback rate is 0');
</script>
diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/updating-the-finished-state.html b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/updating-the-finished-state.html
index 034cd6ee683..7059423b363 100644
--- a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/updating-the-finished-state.html
+++ b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/updating-the-finished-state.html
@@ -20,32 +20,33 @@
// (Also the start time is resolved and there is pending task)
// Did seek = false
-promise_test(t => {
+promise_test(async t => {
const anim = createDiv(t).animate(null, 100 * MS_PER_SEC);
// Here and in the following tests we wait until ready resolves as
// otherwise we don't have a resolved start time. We test the case
// where the start time is unresolved in a subsequent test.
- return anim.ready.then(() => {
- // Seek to 1ms before the target end and then wait 1ms
- anim.currentTime = 100 * MS_PER_SEC - 1;
- return waitForAnimationFramesWithDelay(1);
- }).then(() => {
- assert_equals(anim.currentTime, 100 * MS_PER_SEC,
- 'Hold time is set to target end clamping current time');
- });
+ await anim.ready;
+
+ // Seek to 1ms before the target end and then wait 1ms
+ anim.currentTime = 100 * MS_PER_SEC - 1;
+ await waitForAnimationFramesWithDelay(1);
+
+ assert_equals(anim.currentTime, 100 * MS_PER_SEC,
+ 'Hold time is set to target end clamping current time');
}, 'Updating the finished state when playing past end');
// Did seek = true
-promise_test(t => {
+promise_test(async t => {
const anim = createDiv(t).animate(null, 100 * MS_PER_SEC);
- return anim.ready.then(() => {
- anim.currentTime = 200 * MS_PER_SEC;
- return waitForNextFrame();
- }).then(() => {
- assert_equals(anim.currentTime, 200 * MS_PER_SEC,
- 'Hold time is set so current time should NOT change');
- });
+
+ await anim.ready;
+
+ anim.currentTime = 200 * MS_PER_SEC;
+ await waitForNextFrame();
+
+ assert_equals(anim.currentTime, 200 * MS_PER_SEC,
+ 'Hold time is set so current time should NOT change');
}, 'Updating the finished state when seeking past end');
// Test current time == target end
@@ -59,15 +60,15 @@ promise_test(t => {
// (on the subsequent tick the hold time will be set to the same value anyway).
// Did seek = true
-promise_test(t => {
+promise_test(async t => {
const anim = createDiv(t).animate(null, 100 * MS_PER_SEC);
- return anim.ready.then(() => {
- anim.currentTime = 100 * MS_PER_SEC;
- return waitForNextFrame();
- }).then(() => {
- assert_equals(anim.currentTime, 100 * MS_PER_SEC,
- 'Hold time is set so current time should NOT change');
- });
+ await anim.ready;
+
+ anim.currentTime = 100 * MS_PER_SEC;
+ await waitForNextFrame();
+
+ assert_equals(anim.currentTime, 100 * MS_PER_SEC,
+ 'Hold time is set so current time should NOT change');
}, 'Updating the finished state when seeking exactly to end');
@@ -75,49 +76,51 @@ promise_test(t => {
// (Also the start time is resolved and there is pending task)
// Did seek = false
-promise_test(t => {
+promise_test(async t => {
const anim = createDiv(t).animate(null, 100 * MS_PER_SEC);
anim.playbackRate = -1;
anim.play(); // Make sure animation is not initially finished
- return anim.ready.then(() => {
- // Seek to 1ms before 0 and then wait 1ms
- anim.currentTime = 1;
- return waitForAnimationFramesWithDelay(1);
- }).then(() => {
- assert_equals(anim.currentTime, 0 * MS_PER_SEC,
- 'Hold time is set to zero clamping current time');
- });
+
+ await anim.ready;
+
+ // Seek to 1ms before 0 and then wait 1ms
+ anim.currentTime = 1;
+ await waitForAnimationFramesWithDelay(1);
+
+ assert_equals(anim.currentTime, 0 * MS_PER_SEC,
+ 'Hold time is set to zero clamping current time');
}, 'Updating the finished state when playing in reverse past zero');
// Did seek = true
-promise_test(t => {
+promise_test(async t => {
const anim = createDiv(t).animate(null, 100 * MS_PER_SEC);
anim.playbackRate = -1;
anim.play();
- return anim.ready.then(() => {
- anim.currentTime = -100 * MS_PER_SEC;
- return waitForNextFrame();
- }).then(() => {
- assert_equals(anim.currentTime, -100 * MS_PER_SEC,
- 'Hold time is set so current time should NOT change');
- });
+
+ await anim.ready;
+
+ anim.currentTime = -100 * MS_PER_SEC;
+ await waitForNextFrame();
+
+ assert_equals(anim.currentTime, -100 * MS_PER_SEC,
+ 'Hold time is set so current time should NOT change');
}, 'Updating the finished state when seeking a reversed animation past zero');
// As before, it's difficult to test current time == 0 for did seek = false but
// it doesn't really matter.
// Did seek = true
-promise_test(t => {
+promise_test(async t => {
const anim = createDiv(t).animate(null, 100 * MS_PER_SEC);
anim.playbackRate = -1;
anim.play();
- return anim.ready.then(() => {
- anim.currentTime = 0;
- return waitForNextFrame();
- }).then(() => {
- assert_equals(anim.currentTime, 0 * MS_PER_SEC,
- 'Hold time is set so current time should NOT change');
- });
+ await anim.ready;
+
+ anim.currentTime = 0;
+ await waitForNextFrame();
+
+ assert_equals(anim.currentTime, 0 * MS_PER_SEC,
+ 'Hold time is set so current time should NOT change');
}, 'Updating the finished state when seeking a reversed animation exactly'
+ ' to zero');
@@ -126,41 +129,41 @@ promise_test(t => {
// (Also the start time is resolved and there is pending task)
// Did seek = false; playback rate > 0
-promise_test(t => {
+promise_test(async t => {
const anim = createDiv(t).animate(null, 100 * MS_PER_SEC);
// We want to test that the hold time is cleared so first we need to
// put the animation in a state where the hold time is set.
anim.finish();
- return anim.ready.then(() => {
- assert_equals(anim.currentTime, 100 * MS_PER_SEC,
- 'Hold time is initially set');
- // Then extend the duration so that the hold time is cleared and on
- // the next tick the current time will increase.
- anim.effect.timing.duration *= 2;
- return waitForNextFrame();
- }).then(() => {
- assert_greater_than(anim.currentTime, 100 * MS_PER_SEC,
- 'Hold time is not set so current time should increase');
- });
+ await anim.ready;
+
+ assert_equals(anim.currentTime, 100 * MS_PER_SEC,
+ 'Hold time is initially set');
+ // Then extend the duration so that the hold time is cleared and on
+ // the next tick the current time will increase.
+ anim.effect.timing.duration *= 2;
+ await waitForNextFrame();
+
+ assert_greater_than(anim.currentTime, 100 * MS_PER_SEC,
+ 'Hold time is not set so current time should increase');
}, 'Updating the finished state when playing before end');
// Did seek = true; playback rate > 0
-promise_test(t => {
+promise_test(async t => {
const anim = createDiv(t).animate(null, 100 * MS_PER_SEC);
anim.finish();
- return anim.ready.then(() => {
- anim.currentTime = 50 * MS_PER_SEC;
- // When did seek = true, updating the finished state: (i) updates
- // the animation's start time and (ii) clears the hold time.
- // We can test both by checking that the currentTime is initially
- // updated and then increases.
- assert_equals(anim.currentTime, 50 * MS_PER_SEC, 'Start time is updated');
- return waitForNextFrame();
- }).then(() => {
- assert_greater_than(anim.currentTime, 50 * MS_PER_SEC,
- 'Hold time is not set so current time should increase');
- });
+ await anim.ready;
+
+ anim.currentTime = 50 * MS_PER_SEC;
+ // When did seek = true, updating the finished state: (i) updates
+ // the animation's start time and (ii) clears the hold time.
+ // We can test both by checking that the currentTime is initially
+ // updated and then increases.
+ assert_equals(anim.currentTime, 50 * MS_PER_SEC, 'Start time is updated');
+ await waitForNextFrame();
+
+ assert_greater_than(anim.currentTime, 50 * MS_PER_SEC,
+ 'Hold time is not set so current time should increase');
}, 'Updating the finished state when seeking before end');
// Did seek = false; playback rate < 0
@@ -177,69 +180,69 @@ promise_test(t => {
// will set did seek = true).
// Did seek = true; playback rate < 0
-promise_test(t => {
+promise_test(async t => {
const anim = createDiv(t).animate(null, 100 * MS_PER_SEC);
anim.playbackRate = -1;
- return anim.ready.then(() => {
- anim.currentTime = 50 * MS_PER_SEC;
- assert_equals(anim.currentTime, 50 * MS_PER_SEC, 'Start time is updated');
- return waitForNextFrame();
- }).then(() => {
- assert_less_than(anim.currentTime, 50 * MS_PER_SEC,
- 'Hold time is not set so current time should decrease');
- });
+ await anim.ready;
+
+ anim.currentTime = 50 * MS_PER_SEC;
+ assert_equals(anim.currentTime, 50 * MS_PER_SEC, 'Start time is updated');
+ await waitForNextFrame();
+
+ assert_less_than(anim.currentTime, 50 * MS_PER_SEC,
+ 'Hold time is not set so current time should decrease');
}, 'Updating the finished state when seeking a reversed animation before end');
// CASE 4: playback rate == 0
// current time < 0
-promise_test(t => {
+promise_test(async t => {
const anim = createDiv(t).animate(null, 100 * MS_PER_SEC);
anim.playbackRate = 0;
- return anim.ready.then(() => {
- anim.currentTime = -100 * MS_PER_SEC;
- return waitForNextFrame();
- }).then(() => {
- assert_equals(anim.currentTime, -100 * MS_PER_SEC,
- 'Hold time should not be cleared so current time should'
- + ' NOT change');
- });
+ await anim.ready;
+
+ anim.currentTime = -100 * MS_PER_SEC;
+ await waitForNextFrame();
+
+ assert_equals(anim.currentTime, -100 * MS_PER_SEC,
+ 'Hold time should not be cleared so current time should'
+ + ' NOT change');
}, 'Updating the finished state when playback rate is zero and the'
+ ' current time is less than zero');
// current time < target end
-promise_test(t => {
+promise_test(async t => {
const anim = createDiv(t).animate(null, 100 * MS_PER_SEC);
anim.playbackRate = 0;
- return anim.ready.then(() => {
- anim.currentTime = 50 * MS_PER_SEC;
- return waitForNextFrame();
- }).then(() => {
- assert_equals(anim.currentTime, 50 * MS_PER_SEC,
- 'Hold time should not be cleared so current time should'
- + ' NOT change');
- });
+ await anim.ready;
+
+ anim.currentTime = 50 * MS_PER_SEC;
+ await waitForNextFrame();
+
+ assert_equals(anim.currentTime, 50 * MS_PER_SEC,
+ 'Hold time should not be cleared so current time should'
+ + ' NOT change');
}, 'Updating the finished state when playback rate is zero and the'
+ ' current time is less than end');
// current time > target end
-promise_test(t => {
+promise_test(async t => {
const anim = createDiv(t).animate(null, 100 * MS_PER_SEC);
anim.playbackRate = 0;
- return anim.ready.then(() => {
- anim.currentTime = 200 * MS_PER_SEC;
- return waitForNextFrame();
- }).then(() => {
- assert_equals(anim.currentTime, 200 * MS_PER_SEC,
- 'Hold time should not be cleared so current time should'
- + ' NOT change');
- });
+ await anim.ready;
+
+ anim.currentTime = 200 * MS_PER_SEC;
+ await waitForNextFrame();
+
+ assert_equals(anim.currentTime, 200 * MS_PER_SEC,
+ 'Hold time should not be cleared so current time should'
+ + ' NOT change');
}, 'Updating the finished state when playback rate is zero and the'
+ ' current time is greater than end');
// CASE 5: current time unresolved
-promise_test(t => {
+promise_test(async t => {
const anim = createDiv(t).animate(null, 100 * MS_PER_SEC);
anim.cancel();
// Trigger a change that will cause the "update the finished state"
@@ -251,10 +254,10 @@ promise_test(t => {
// change to timing, but just in case an implementation defers that, let's
// wait a frame and check that the hold time / start time has still not been
// updated.
- return waitForAnimationFrames(1).then(() => {
- assert_equals(anim.currentTime, null,
- 'The animation hold time / start time should not be updated');
- });
+ await waitForAnimationFrames(1);
+
+ assert_equals(anim.currentTime, null,
+ 'The animation hold time / start time should not be updated');
}, 'Updating the finished state when current time is unresolved');
// CASE 6: has a pending task
@@ -278,7 +281,7 @@ test(t => {
// CASE 7: start time unresolved
// Did seek = false
-promise_test(t => {
+promise_test(async t => {
const anim = createDiv(t).animate(null, 100 * MS_PER_SEC);
anim.cancel();
// Make it so that only the start time is unresolved (to avoid overlapping
@@ -287,12 +290,12 @@ promise_test(t => {
// Trigger a change that will cause the "update the finished state"
// procedure to run (did seek = false).
anim.effect.timing.duration = 200 * MS_PER_SEC;
- return waitForAnimationFrames(1).then(() => {
- assert_equals(anim.currentTime, 150 * MS_PER_SEC,
- 'The animation hold time should not be updated');
- assert_equals(anim.startTime, null,
- 'The animation start time should not be updated');
- });
+ await waitForAnimationFrames(1);
+
+ assert_equals(anim.currentTime, 150 * MS_PER_SEC,
+ 'The animation hold time should not be updated');
+ assert_equals(anim.startTime, null,
+ 'The animation start time should not be updated');
}, 'Updating the finished state when start time is unresolved and'
+ ' did seek = false');
@@ -337,53 +340,61 @@ promise_test(t => {
}, 'Finish notification steps don\'t run when the animation seeks to finish'
+ ' and then seeks back again');
-promise_test(t => {
+promise_test(async t => {
const animation = createDiv(t).animate(null, 1);
- return animation.ready.then(() => {
- return waitForFinishEventAndPromise(animation);
- });
+ await animation.ready;
+
+ return waitForFinishEventAndPromise(animation);
}, 'Finish notification steps run when the animation completes normally');
-promise_test(t => {
+promise_test(async t => {
+ const effect = new KeyframeEffectReadOnly(null, null, 1);
+ const animation = new Animation(effect, document.timeline);
+ animation.play();
+ await animation.ready;
+
+ return waitForFinishEventAndPromise(animation);
+}, 'Finish notification steps run when an animation without a target'
+ + ' effect completes normally');
+
+promise_test(async t => {
const animation = createDiv(t).animate(null, 1);
- return animation.ready.then(() => {
- animation.currentTime = 10;
- return waitForFinishEventAndPromise(animation);
- });
+ await animation.ready;
+
+ animation.currentTime = 10;
+ return waitForFinishEventAndPromise(animation);
}, 'Finish notification steps run when the animation seeks past finish');
-promise_test(t => {
+promise_test(async t => {
const animation = createDiv(t).animate(null, 1);
- return animation.ready.then(() => {
- // Register for notifications now since once we seek away from being
- // finished the 'finished' promise will be replaced.
- const finishNotificationSteps = waitForFinishEventAndPromise(animation);
- animation.finish();
- animation.currentTime = 0;
- animation.pause();
- return finishNotificationSteps;
- });
+ await animation.ready;
+
+ // Register for notifications now since once we seek away from being
+ // finished the 'finished' promise will be replaced.
+ const finishNotificationSteps = waitForFinishEventAndPromise(animation);
+ animation.finish();
+ animation.currentTime = 0;
+ animation.pause();
+ return finishNotificationSteps;
}, 'Finish notification steps run when the animation completes with .finish(),'
+ ' even if we then seek away');
-promise_test(t => {
+promise_test(async t => {
const animation = createDiv(t).animate(null, 1);
const initialFinishedPromise = animation.finished;
+ await animation.finished;
- return animation.finished.then(target => {
- animation.currentTime = 0;
- assert_not_equals(initialFinishedPromise, animation.finished);
- });
+ animation.currentTime = 0;
+ assert_not_equals(initialFinishedPromise, animation.finished);
}, 'Animation finished promise is replaced after seeking back to start');
-promise_test(t => {
+promise_test(async t => {
const animation = createDiv(t).animate(null, 1);
const initialFinishedPromise = animation.finished;
+ await animation.finished;
- return animation.finished.then(target => {
- animation.play();
- assert_not_equals(initialFinishedPromise, animation.finished);
- });
+ animation.play();
+ assert_not_equals(initialFinishedPromise, animation.finished);
}, 'Animation finished promise is replaced after replaying from start');
async_test(t => {
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-exponentialRampToValueAtTime.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-exponentialRampToValueAtTime.html
index 20d3d59fafc..978aeb9733b 100644
--- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-exponentialRampToValueAtTime.html
+++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-exponentialRampToValueAtTime.html
@@ -1,51 +1,70 @@
<!doctype html>
<meta charset=utf-8>
-<title>Test exponentialRampToValue with end time in the past</title>
-<script src=/resources/testharness.js></script>
-<script src=/resources/testharnessreport.js></script>
-<script>
-function do_test(t, context) {
- var source = context.createConstantSource();
- source.start();
-
- var test = context.createGain();
- test.gain.exponentialRampToValueAtTime(0.1, 0.5*context.currentTime);
- test.gain.exponentialRampToValueAtTime(0.9, 2.0);
-
- var reference = context.createGain();
- reference.gain.exponentialRampToValueAtTime(0.1, context.currentTime);
- reference.gain.exponentialRampToValueAtTime(0.9, 2.0);
-
- source.connect(test);
- source.connect(reference);
-
- var merger = context.createChannelMerger();
- test.connect(merger, 0, 0);
- reference.connect(merger, 0, 1);
-
- var processor = context.createScriptProcessor(0, 2, 0);
- merger.connect(processor);
- processor.onaudioprocess =
- t.step_func_done((e) => {
- source.stop();
- processor.onaudioprocess = null;
-
- var testValue = e.inputBuffer.getChannelData(0)[0];
- var referenceValue = e.inputBuffer.getChannelData(1)[0];
-
- assert_equals(testValue, referenceValue,
- "value matches expected");
- });
-}
-
-async_test(function(t) {
- var context = new AudioContext;
- (function waitForTimeAdvance() {
- if (context.currentTime == 0) {
- t.step_timeout(waitForTimeAdvance, 0);
- } else {
- do_test(t, context);
- }
- })();
-});
-</script>
+<html>
+ <head>
+ <title>Test exponentialRampToValue with end time in the past</title>
+ <script src=/resources/testharness.js></script>
+ <script src=/resources/testharnessreport.js></script>
+ <script src="/webaudio/resources/audit-util.js"></script>
+ <script src="/webaudio/resources/audit.js"></script>
+ <script src="retrospective-test.js"></script>
+ </head>
+ <body>
+ <script>
+ let audit = Audit.createTaskRunner();
+
+ audit.define(
+ {
+ label: 'test',
+ description: 'Test exponentialRampToValue with end time in the past'
+ },
+ (task, should) => {
+ let {context, source, test, reference} = setupRetrospectiveGraph();
+
+ // Suspend the context at this frame so we can synchronously set up
+ // automations.
+ const suspendFrame = 128;
+
+ context.suspend(suspendFrame / context.sampleRate)
+ .then(() => {
+ // Call setTargetAtTime with a time in the past
+ test.gain.exponentialRampToValueAtTime(
+ 0.1, 0.5 * context.currentTime);
+ test.gain.exponentialRampToValueAtTime(0.9, 1.0);
+
+ reference.gain.exponentialRampToValueAtTime(
+ 0.1, context.currentTime);
+ reference.gain.exponentialRampToValueAtTime(0.9, 1.0);
+ })
+ .then(() => context.resume());
+
+ source.start();
+
+ context.startRendering()
+ .then(resultBuffer => {
+ let testValue = resultBuffer.getChannelData(0);
+ let referenceValue = resultBuffer.getChannelData(1);
+
+ // Until the suspendFrame, both should be exactly equal to 1.
+ should(
+ testValue.slice(0, suspendFrame),
+ `Test[0:${suspendFrame - 1}]`)
+ .beConstantValueOf(1);
+ should(
+ referenceValue.slice(0, suspendFrame),
+ `Reference[0:${suspendFrame - 1}]`)
+ .beConstantValueOf(1);
+
+ // After the suspendFrame, both should be equal (and not
+ // constant)
+ should(
+ testValue.slice(suspendFrame), `Test[${suspendFrame}:]`)
+ .beEqualToArray(referenceValue.slice(suspendFrame));
+ })
+ .then(() => task.done());
+ });
+
+ audit.run();
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-linearRampToValueAtTime.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-linearRampToValueAtTime.html
index 1594a30bd16..42af6a71b3a 100644
--- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-linearRampToValueAtTime.html
+++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-linearRampToValueAtTime.html
@@ -1,51 +1,70 @@
<!doctype html>
<meta charset=utf-8>
-<title>Test linearRampToValue with end time in the past</title>
-<script src=/resources/testharness.js></script>
-<script src=/resources/testharnessreport.js></script>
-<script>
-function do_test(t, context) {
- var source = context.createConstantSource();
- source.start();
-
- var test = context.createGain();
- test.gain.linearRampToValueAtTime(0.1, 0.5*context.currentTime);
- test.gain.linearRampToValueAtTime(0.9, 2.0);
-
- var reference = context.createGain();
- reference.gain.linearRampToValueAtTime(0.1, context.currentTime);
- reference.gain.linearRampToValueAtTime(0.9, 2.0);
-
- source.connect(test);
- source.connect(reference);
-
- var merger = context.createChannelMerger();
- test.connect(merger, 0, 0);
- reference.connect(merger, 0, 1);
-
- var processor = context.createScriptProcessor(0, 2, 0);
- merger.connect(processor);
- processor.onaudioprocess =
- t.step_func_done((e) => {
- source.stop();
- processor.onaudioprocess = null;
-
- var testValue = e.inputBuffer.getChannelData(0)[0];
- var referenceValue = e.inputBuffer.getChannelData(1)[0];
-
- assert_equals(testValue, referenceValue,
- "value matches expected");
- });
-}
-
-async_test(function(t) {
- var context = new AudioContext;
- (function waitForTimeAdvance() {
- if (context.currentTime == 0) {
- t.step_timeout(waitForTimeAdvance, 0);
- } else {
- do_test(t, context);
- }
- })();
-});
-</script>
+<html>
+ <head>
+ <title>Test linearRampToValue with end time in the past</title>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/webaudio/resources/audit-util.js"></script>
+ <script src="/webaudio/resources/audit.js"></script>
+ <script src="retrospective-test.js"></script>
+ </head>
+ <body>
+ <script>
+ let audit = Audit.createTaskRunner();
+
+ audit.define(
+ {
+ label: 'test',
+ description: 'Test linearRampToValue with end time in the past'
+ },
+ (task, should) => {
+ let {context, source, test, reference} = setupRetrospectiveGraph();
+
+ // Suspend the context at this frame so we can synchronously set up
+ // automations.
+ const suspendFrame = 128;
+
+ context.suspend(suspendFrame / context.sampleRate)
+ .then(() => {
+ // Call setTargetAtTime with a time in the past
+ test.gain.linearRampToValueAtTime(
+ 0.1, 0.5 * context.currentTime);
+ test.gain.linearRampToValueAtTime(0.9, 1.0);
+
+ reference.gain.linearRampToValueAtTime(
+ 0.1, context.currentTime);
+ reference.gain.linearRampToValueAtTime(0.9, 1.0);
+ })
+ .then(() => context.resume());
+
+ source.start();
+
+ context.startRendering()
+ .then(resultBuffer => {
+ let testValue = resultBuffer.getChannelData(0);
+ let referenceValue = resultBuffer.getChannelData(1);
+
+ // Until the suspendFrame, both should be exactly equal to 1.
+ should(
+ testValue.slice(0, suspendFrame),
+ `Test[0:${suspendFrame - 1}]`)
+ .beConstantValueOf(1);
+ should(
+ referenceValue.slice(0, suspendFrame),
+ `Reference[0:${suspendFrame - 1}]`)
+ .beConstantValueOf(1);
+
+ // After the suspendFrame, both should be equal (and not
+ // constant)
+ should(
+ testValue.slice(suspendFrame), `Test[${suspendFrame}:]`)
+ .beEqualToArray(referenceValue.slice(suspendFrame));
+ })
+ .then(() => task.done());
+ });
+
+ audit.run();
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-setTargetAtTime.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-setTargetAtTime.html
index 9b04fe22bb1..53427901e3d 100644
--- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-setTargetAtTime.html
+++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-setTargetAtTime.html
@@ -1,51 +1,80 @@
<!doctype html>
<meta charset=utf-8>
-<title>Test setTargetAtTime with start time in the past</title>
-<script src=/resources/testharness.js></script>
-<script src=/resources/testharnessreport.js></script>
-<script>
-function do_test(t, context) {
- var source = context.createConstantSource();
- source.start();
-
- var test = context.createGain();
- test.gain.setTargetAtTime(0.1, 0.5*context.currentTime, 0.1);
- test.gain.linearRampToValueAtTime(0.9, 2.0);
-
- var reference = context.createGain();
- reference.gain.setTargetAtTime(0.1, context.currentTime, 0.1);
- reference.gain.linearRampToValueAtTime(0.9, 2.0);
-
- source.connect(test);
- source.connect(reference);
-
- var merger = context.createChannelMerger();
- test.connect(merger, 0, 0);
- reference.connect(merger, 0, 1);
-
- var processor = context.createScriptProcessor(0, 2, 0);
- merger.connect(processor);
- processor.onaudioprocess =
- t.step_func_done((e) => {
- source.stop();
- processor.onaudioprocess = null;
-
- var testValue = e.inputBuffer.getChannelData(0)[0];
- var referenceValue = e.inputBuffer.getChannelData(1)[0];
-
- assert_equals(testValue, referenceValue,
- "value matches expected");
- });
-}
-
-async_test(function(t) {
- var context = new AudioContext;
- (function waitForTimeAdvance() {
- if (context.currentTime == 0) {
- t.step_timeout(waitForTimeAdvance, 0);
- } else {
- do_test(t, context);
- }
- })();
-});
-</script>
+<html>
+ <head>
+ <title>Test setTargetAtTime with start time in the past</title>
+ <script src=/resources/testharness.js></script>
+ <script src=/resources/testharnessreport.js></script>
+ <script src="/webaudio/resources/audit-util.js"></script>
+ <script src="/webaudio/resources/audit.js"></script>
+ </head>
+ <body>
+ <script>
+ let audit = Audit.createTaskRunner();
+
+ audit.define(
+ {
+ label: 'test',
+ description: 'Test setTargetAtTime with start time in the past'
+ },
+ (task, should) => {
+ // Use a sample rate that is a power of two to eliminate round-off
+ // in computing the currentTime.
+ let context = new OfflineAudioContext(2, 16384, 16384);
+ let source = new ConstantSourceNode(context);
+
+ // Suspend the context at this frame so we can synchronously set up
+ // automations.
+ const suspendFrame = 128;
+
+ let test = new GainNode(context);
+ let reference = new GainNode(context);
+
+ source.connect(test);
+ source.connect(reference);
+
+ let merger = new ChannelMergerNode(
+ context, {numberOfInputs: context.destination.channelCount});
+ test.connect(merger, 0, 0);
+ reference.connect(merger, 0, 1);
+
+ merger.connect(context.destination);
+
+ context.suspend(suspendFrame / context.sampleRate)
+ .then(() => {
+ // Call setTargetAtTime with a time in the past
+ test.gain.setTargetAtTime(0.1, 0.5*context.currentTime, 0.1);
+ reference.gain.setTargetAtTime(0.1, context.currentTime, 0.1);
+ })
+ .then(() => context.resume());
+
+ source.start();
+
+ context.startRendering()
+ .then(resultBuffer => {
+ let testValue = resultBuffer.getChannelData(0);
+ let referenceValue = resultBuffer.getChannelData(1);
+
+ // Until the suspendFrame, both should be exactly equal to 1.
+ should(
+ testValue.slice(0, suspendFrame),
+ `Test[0:${suspendFrame - 1}]`)
+ .beConstantValueOf(1);
+ should(
+ referenceValue.slice(0, suspendFrame),
+ `Reference[0:${suspendFrame - 1}]`)
+ .beConstantValueOf(1);
+
+ // After the suspendFrame, both should be equal (and not
+ // constant)
+ should(
+ testValue.slice(suspendFrame), `Test[${suspendFrame}:]`)
+ .beEqualToArray(referenceValue.slice(suspendFrame));
+ })
+ .then(() => task.done());
+ });
+
+ audit.run();
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-setValueAtTime.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-setValueAtTime.html
index b9657ef2113..32cdc6307fc 100644
--- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-setValueAtTime.html
+++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-setValueAtTime.html
@@ -1,54 +1,74 @@
<!DOCTYPE html>
-<title>Test setValueAtTime with startTime in the past</title>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script>
-function do_test(t, context) {
- var source = context.createConstantSource();
- source.start();
-
- // Use a ramp of slope 1/sample to measure time.
- // The end value is the extent of exact precision in single precision float.
- const rampEnd = Math.pow(2, 24);
- const rampEndSeconds = rampEnd / context.sampleRate;
- var test = context.createGain();
- test.gain.setValueAtTime(0.0, 0.5*context.currentTime);
- test.gain.linearRampToValueAtTime(rampEnd, rampEndSeconds);
-
- var reference = context.createGain();
- reference.gain.setValueAtTime(0.0, context.currentTime);
- reference.gain.linearRampToValueAtTime(rampEnd, rampEndSeconds);
-
- source.connect(test);
- source.connect(reference);
-
- var merger = context.createChannelMerger();
- test.connect(merger, 0, 0);
- reference.connect(merger, 0, 1);
-
- var processor = context.createScriptProcessor(0, 2, 0);
- merger.connect(processor);
- processor.onaudioprocess =
- t.step_func_done((e) => {
- source.stop();
- processor.onaudioprocess = null;
-
- var testValue = e.inputBuffer.getChannelData(0)[0];
- var referenceValue = e.inputBuffer.getChannelData(1)[0];
-
- assert_equals(testValue, referenceValue,
- "ramp value matches expected");
- });
-}
-
-async_test(function(t) {
- var context = new AudioContext;
- (function waitForTimeAdvance() {
- if (context.currentTime == 0) {
- t.step_timeout(waitForTimeAdvance, 0);
- } else {
- do_test(t, context);
- }
- })();
-});
-</script>
+<html>
+ <head>
+ <title>Test setValueAtTime with startTime in the past</title>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/webaudio/resources/audit-util.js"></script>
+ <script src="/webaudio/resources/audit.js"></script>
+ <script src="retrospective-test.js"></script>
+ </head>
+ <body>
+ <script>
+ let audit = Audit.createTaskRunner();
+
+ audit.define(
+ {
+ label: 'test',
+ description: 'Test setValueAtTime with startTime in the past'
+ },
+ (task, should) => {
+ let {context, source, test, reference} = setupRetrospectiveGraph();
+
+ // Suspend the context at this frame so we can synchronously set up
+ // automations.
+ const suspendFrame = 128;
+
+ // Use a ramp of slope 1 per frame to measure time.
+ // The end value is the extent of exact precision in single
+ // precision float.
+ const rampEnd = context.length - suspendFrame;
+ const rampEndSeconds = context.length / context.sampleRate;
+
+ context.suspend(suspendFrame / context.sampleRate)
+ .then(() => {
+ // Call setValueAtTime with a time in the past
+ test.gain.setValueAtTime(0.0, 0.5 * context.currentTime);
+ test.gain.linearRampToValueAtTime(rampEnd, rampEndSeconds);
+
+ reference.gain.setValueAtTime(0.0, context.currentTime);
+ reference.gain.linearRampToValueAtTime(
+ rampEnd, rampEndSeconds);
+ })
+ .then(() => context.resume());
+
+ source.start();
+
+ context.startRendering()
+ .then(resultBuffer => {
+ let testValue = resultBuffer.getChannelData(0);
+ let referenceValue = resultBuffer.getChannelData(1);
+
+ // Until the suspendFrame, both should be exactly equal to 1.
+ should(
+ testValue.slice(0, suspendFrame),
+ `Test[0:${suspendFrame - 1}]`)
+ .beConstantValueOf(1);
+ should(
+ referenceValue.slice(0, suspendFrame),
+ `Reference[0:${suspendFrame - 1}]`)
+ .beConstantValueOf(1);
+
+ // After the suspendFrame, both should be equal (and not
+ // constant)
+ should(
+ testValue.slice(suspendFrame), `Test[${suspendFrame}:]`)
+ .beEqualToArray(referenceValue.slice(suspendFrame));
+ })
+ .then(() => task.done());
+ });
+
+ audit.run();
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-setValueCurveAtTime.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-setValueCurveAtTime.html
index 008b2401290..451b6ea8296 100644
--- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-setValueCurveAtTime.html
+++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-setValueCurveAtTime.html
@@ -1,49 +1,67 @@
<!doctype html>
-<meta charset=utf-8>
-<title>Test SetValueCurve with start time in the past</title>
-<script src=/resources/testharness.js></script>
-<script src=/resources/testharnessreport.js></script>
-<script>
-function do_test(t, context) {
- var source = context.createConstantSource();
- source.start();
-
- var test = context.createGain();
- test.gain.setValueCurveAtTime(new Float32Array([1.0, 0.1]), 0.0, 1.0);
-
- var reference = context.createGain();
- reference.gain.setValueCurveAtTime(new Float32Array([1.0, 0.1]), 0.5*context.currentTime, 1.0);
-
- source.connect(test);
- source.connect(reference);
-
- var merger = context.createChannelMerger();
- test.connect(merger, 0, 0);
- reference.connect(merger, 0, 1);
-
- var processor = context.createScriptProcessor(0, 2, 0);
- merger.connect(processor);
- processor.onaudioprocess =
- t.step_func_done((e) => {
- source.stop();
- processor.onaudioprocess = null;
-
- var testValue = e.inputBuffer.getChannelData(0)[0];
- var referenceValue = e.inputBuffer.getChannelData(1)[0];
-
- assert_equals(testValue, referenceValue,
- "value matches expected");
- });
-}
-
-async_test(function(t) {
- var context = new AudioContext;
- (function waitForTimeAdvance() {
- if (context.currentTime == 0) {
- t.step_timeout(waitForTimeAdvance, 0);
- } else {
- do_test(t, context);
- }
- })();
-});
-</script>
+<html>
+ <head>
+ <title>Test SetValueCurve with start time in the past</title>
+ <script src=/resources/testharness.js></script>
+ <script src=/resources/testharnessreport.js></script>
+ <script src="/webaudio/resources/audit-util.js"></script>
+ <script src="/webaudio/resources/audit.js"></script>
+ <script src="retrospective-test.js"></script>
+ </head>
+ </body>
+ <script>
+ let audit = Audit.createTaskRunner();
+
+ audit.define(
+ {
+ label: 'test',
+ description: 'Test SetValueCurve with start time in the past'
+ },
+ (task, should) => {
+ let {context, source, test, reference} = setupRetrospectiveGraph();
+
+ // Suspend the context at this frame so we can synchronously set up
+ // automations.
+ const suspendFrame = 128;
+
+ context.suspend(suspendFrame / context.sampleRate)
+ .then(() => {
+ // Call setValueAtTime with a time in the past
+ test.gain.setValueCurveAtTime(
+ new Float32Array([1.0, 0.1]), 0.5 * context.currentTime,
+ 1.0);
+ reference.gain.setValueCurveAtTime(
+ new Float32Array([1.0, 0.1]), context.currentTime, 1.0);
+ })
+ .then(() => context.resume());
+
+ source.start();
+
+ context.startRendering()
+ .then(resultBuffer => {
+ let testValue = resultBuffer.getChannelData(0);
+ let referenceValue = resultBuffer.getChannelData(1);
+
+ // Until the suspendFrame, both should be exactly equal to 1.
+ should(
+ testValue.slice(0, suspendFrame),
+ `Test[0:${suspendFrame - 1}]`)
+ .beConstantValueOf(1);
+ should(
+ referenceValue.slice(0, suspendFrame),
+ `Reference[0:${suspendFrame - 1}]`)
+ .beConstantValueOf(1);
+
+ // After the suspendFrame, both should be equal (and not
+ // constant)
+ should(
+ testValue.slice(suspendFrame), `Test[${suspendFrame}:]`)
+ .beEqualToArray(referenceValue.slice(suspendFrame));
+ })
+ .then(() => task.done());
+ });
+
+ audit.run();
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-test.js b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-test.js
new file mode 100644
index 00000000000..bbda190f099
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-test.js
@@ -0,0 +1,29 @@
+// Create an audio graph on an offline context that consists of a
+// constant source and two gain nodes. One of the nodes is the node te
+// be tested and the other is the reference node. The output from the
+// test node is in channel 0 of the offline context; the reference
+// node is in channel 1.
+//
+// Returns a dictionary with the context, source node, the test node,
+// and the reference node.
+function setupRetrospectiveGraph() {
+ // Use a sample rate that is a power of two to eliminate round-off
+ // in computing the currentTime.
+ let context = new OfflineAudioContext(2, 16384, 16384);
+ let source = new ConstantSourceNode(context);
+
+ let test = new GainNode(context);
+ let reference = new GainNode(context);
+
+ source.connect(test);
+ source.connect(reference);
+
+ let merger = new ChannelMergerNode(
+ context, {numberOfInputs: context.destination.channelCount});
+ test.connect(merger, 0, 0);
+ reference.connect(merger, 0, 1);
+
+ merger.connect(context.destination);
+
+ return {context: context, source: source, test: test, reference: reference};
+}
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/interface.html b/tests/wpt/web-platform-tests/webdriver/tests/interface.html
index 31637285e40..d54aaaf271d 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/interface.html
+++ b/tests/wpt/web-platform-tests/webdriver/tests/interface.html
@@ -1,38 +1,49 @@
-<!DOCTYPE html>
-<body>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
+<!doctype html>
+<meta charset=utf-8>
+
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
<script src=/resources/WebIDLParser.js></script>
<script src=/resources/idlharness.js></script>
+
<script type=text/plain class=untested>
[Exposed=Window]
interface Navigator {
// objects implementing this interface also implement the interfaces given below
};
</script>
+
<script type=text/plain>
Navigator includes NavigatorAutomationInformation;
interface mixin NavigatorAutomationInformation {
- readonly attribute boolean webdriver;
- // always returns true
+ readonly attribute boolean webdriver;
};
</script>
+
<script>
"use strict";
-if ("webdriver" in navigator) {
- test(() => assert_true(navigator.webdriver), "navigator.webdriver is always true");
- var idlArray = new IdlArray();
- [].forEach.call(document.querySelectorAll("script[type=text\\/plain]"), function(node) {
- if (node.className == "untested") {
- idlArray.add_untested_idls(node.textContent);
- } else {
- idlArray.add_idls(node.textContent);
- }
- });
- idlArray.test();
-} else {
- done();
+test(() => assert_idl_attribute(navigator, "webdriver"), "navigator.webdriver is present");
+
+// When test is run in automation navigator.webdriver is likely to
+// be true because WebDriver controls the browser instance. To that
+// extent, this test is a bit special. It should also be possible to
+// run the test manually, when WebDriver is not active, and so either
+// true/false outcome is OK.
+if (navigator.webdriver) {
+ test(() => assert_true(navigator.webdriver), "navigator.webdriver is true when webdriver-active is set");
+} else {
+ test(() => assert_false(navigator.webdriver), "navigator.webdriver is false when webdriver-active is not set");
}
+
+var idls = new IdlArray();
+for (let node of [...document.scripts].filter(({type}) => type == "text/plain")) {
+ if (node.className == "untested") {
+ idls.add_untested_idls(node.textContent);
+ } else {
+ idls.add_idls(node.textContent);
+ }
+};
+idls.test();
</script>