Update testharness.js from upstream for web-platform-tests
authorcdumez@apple.com <cdumez@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 17 Sep 2019 20:17:47 +0000 (20:17 +0000)
committercdumez@apple.com <cdumez@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 17 Sep 2019 20:17:47 +0000 (20:17 +0000)
https://bugs.webkit.org/show_bug.cgi?id=201843

Reviewed by Jiewen Tan.

LayoutTests/imported/w3c:

Update testharness.js from upstream 6fd5e1e086ce590a4780a30d129 for web-platform-tests and
rebaseline tests accordingly.

* web-platform-tests/FileAPI/FileReader/workers-expected.txt:
* web-platform-tests/FileAPI/url/url-format.any.worker-expected.txt:
* web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_bits.https.worker-expected.txt:
* web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_keys.https.worker-expected.txt:
* web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constants.any-expected.txt:
* web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constants.any.worker-expected.txt:
* web-platform-tests/content-security-policy/inside-worker/shared-inheritance-expected.txt:
* web-platform-tests/content-security-policy/inside-worker/shared-script-expected.txt:
* web-platform-tests/content-security-policy/nonce-hiding/svgscript-nonces-hidden-meta.tentative.sub-expected.txt:
* web-platform-tests/content-security-policy/nonce-hiding/svgscript-nonces-hidden.tentative-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-001-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-002-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-003-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-004-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-005-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-006-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-007-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-008-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-009-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-010-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-011-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-012-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-013-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-014-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-015-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-016-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-017-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-018-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-019-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-020-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-021-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-022-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-023-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-024-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-025-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-026-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-027-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-028-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-029-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-030-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-031-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-032-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-033-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-034-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-035-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-036-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-style-changes-001-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-style-changes-002-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-style-changes-003-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-style-changes-004-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-style-changes-005-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-style-changes-006-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-style-changes-007-expected.txt:
* web-platform-tests/css/css-grid/alignment/grid-alignment-style-changes-008-expected.txt:
* web-platform-tests/css/css-grid/grid-definition/grid-change-fit-content-argument-001-expected.txt:
* web-platform-tests/css/css-properties-values-api/unit-cycles-expected.txt:
* web-platform-tests/css/css-properties-values-api/url-resolution-expected.txt:
* web-platform-tests/custom-elements/parser/parser-fallsback-to-unknown-element-expected.txt:
* web-platform-tests/dom/events/Event-dispatch-listener-order.window-expected.txt:
* web-platform-tests/dom/events/Event-isTrusted.any-expected.txt:
* web-platform-tests/dom/events/Event-isTrusted.any.worker-expected.txt:
* web-platform-tests/dom/nodes/Element-getElementsByTagName-change-document-HTMLNess-expected.txt:
* web-platform-tests/eventsource/eventsource-prototype-expected.txt:
* web-platform-tests/fetch/api/basic/stream-safe-creation.any.worker-expected.txt:
* web-platform-tests/fetch/api/cors/cors-preflight-cache.any-expected.txt:
* web-platform-tests/fetch/api/cors/cors-preflight-cache.any.worker-expected.txt:
* web-platform-tests/fetch/api/cors/cors-preflight-redirect.any-expected.txt:
* web-platform-tests/fetch/api/cors/cors-preflight-redirect.any.worker-expected.txt:
* web-platform-tests/fetch/api/policies/referrer-origin-when-cross-origin-service-worker.https-expected.txt:
* web-platform-tests/fetch/api/request/request-consume-empty-expected.txt:
* web-platform-tests/fetch/api/response/response-consume-empty-expected.txt:
* web-platform-tests/fetch/cross-origin-resource-policy/scheme-restriction.https.window-expected.txt:
* web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-global-scope-expected.txt:
* web-platform-tests/html/browsers/history/joint-session-history/joint-session-history-iframe-state-expected.txt:
* web-platform-tests/html/browsers/history/the-location-interface/location-protocol-setter-non-broken-expected.txt:
* web-platform-tests/html/browsers/origin/origin-of-data-document-expected.txt:
* web-platform-tests/html/browsers/origin/relaxing-the-same-origin-restriction/document_domain_setter-expected.txt:
* web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/no_window_open_when_term_nesting_level_nonzero.window-expected.txt:
* web-platform-tests/html/browsers/the-window-object/focus.window-expected.txt:
* web-platform-tests/html/browsers/windows/document-access/document_access_parent_access.tentative-expected.txt:
* web-platform-tests/html/browsers/windows/targeting-cross-origin-nested-browsing-contexts-expected.txt:
* web-platform-tests/html/dom/documents/dom-tree-accessors/document.title-01-expected.txt:
* web-platform-tests/html/dom/documents/dom-tree-accessors/document.title-02-expected.txt:
* web-platform-tests/html/rendering/non-replaced-elements/flow-content-0/dialog-display-expected.txt:
* web-platform-tests/html/rendering/non-replaced-elements/tables/table-vspace-hspace-expected.txt:
* web-platform-tests/html/rendering/non-replaced-elements/tables/table-vspace-hspace-s-expected.txt:
* web-platform-tests/html/rendering/non-replaced-elements/the-page/iframe-marginwidth-marginheight-expected.txt:
* web-platform-tests/html/semantics/document-metadata/the-base-element/base_target_does_not_affect_iframe_src_navigation-expected.txt:
* web-platform-tests/html/semantics/document-metadata/the-base-element/base_target_does_not_affect_location_assignment-expected.txt:
* web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/not-in-shadow-tree-expected.txt:
* web-platform-tests/html/semantics/embedded-content/media-elements/interfaces/HTMLElement/HTMLTrackElement/srclang-expected.txt:
* web-platform-tests/html/semantics/embedded-content/media-elements/interfaces/TextTrack/language-expected.txt:
* web-platform-tests/html/semantics/embedded-content/the-frame-element/document-getters-return-null-for-cross-origin-expected.txt:
* web-platform-tests/html/semantics/embedded-content/the-iframe-element/document-getters-return-null-for-cross-origin-expected.txt:
* web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_anchor_download_allow_downloads_without_user_activation.sub.tentative-expected.txt:
* web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_allow_downloads_without_user_activation.sub.tentative-expected.txt:
* web-platform-tests/html/semantics/embedded-content/the-iframe-element/sandbox_030-expected.txt:
* web-platform-tests/html/semantics/embedded-content/the-object-element/document-getters-return-null-for-cross-origin-expected.txt:
* web-platform-tests/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener-expected.txt:
* web-platform-tests/html/semantics/scripting-1/the-script-element/execution-timing/084-expected.txt:
* web-platform-tests/html/semantics/scripting-1/the-script-element/module/charset-02-expected.txt:
* web-platform-tests/html/semantics/scripting-1/the-script-element/module/crossorigin-expected.txt:
* web-platform-tests/html/syntax/parsing/quotes-in-meta-expected.txt:
* web-platform-tests/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/document-open-cancels-javascript-url-navigation-expected.txt:
* web-platform-tests/html/webappapis/scripting/processing-model-2/window-onerror-parse-error-expected.txt:
* web-platform-tests/html/webappapis/scripting/processing-model-2/window-onerror-runtime-error-expected.txt:
* web-platform-tests/html/webappapis/scripting/processing-model-2/window-onerror-runtime-error-throw-expected.txt:
* web-platform-tests/html/webappapis/timers/negative-settimeout-expected.txt:
* web-platform-tests/infrastructure/server/context.any-expected.txt:
* web-platform-tests/infrastructure/server/context.any.serviceworker-expected.txt:
* web-platform-tests/infrastructure/server/context.any.worker-expected.txt:
* web-platform-tests/infrastructure/server/title.any.worker-expected.txt:
* web-platform-tests/mediacapture-streams/MediaStreamTrack-end-manual.https-expected.txt:
* web-platform-tests/pointerevents/pointerevent_root_computed_style-expected.txt:
* web-platform-tests/pointerevents/pointerevent_root_hit_test-expected.txt:
* web-platform-tests/preload/link-header-preload-nonce-expected.txt:
* web-platform-tests/resource-timing/resource_TAO_match_origin-expected.txt:
* web-platform-tests/resource-timing/resource_TAO_match_wildcard-expected.txt:
* web-platform-tests/resource-timing/resource_TAO_multi-expected.txt:
* web-platform-tests/resource-timing/resource_TAO_multi_wildcard-expected.txt:
* web-platform-tests/resource-timing/resource_TAO_null-expected.txt:
* web-platform-tests/resource-timing/resource_TAO_origin_uppercase-expected.txt:
* web-platform-tests/resource-timing/resource_TAO_space-expected.txt:
* web-platform-tests/resource-timing/resource_TAO_wildcard-expected.txt:
* web-platform-tests/resources/testharness.css.headers:
* web-platform-tests/resources/testharness.js:
(WindowTestEnvironment.prototype._forEach_windows):
(WindowTestEnvironment.prototype.next_default_test_name):
(WorkerTestEnvironment.prototype.next_default_test_name):
(ShellTestEnvironment):
(ShellTestEnvironment.prototype.next_default_test_name):
(ShellTestEnvironment.prototype.on_new_harness_properties):
(ShellTestEnvironment.prototype.on_tests_ready):
(ShellTestEnvironment.prototype.add_on_loaded_callback):
(ShellTestEnvironment.prototype.test_timeout):
(create_test_environment):
(is_shared_worker):
(is_service_worker):
(test):
(promise_test):
(this.wait_for):
(EventWatcher):
(done):
* web-platform-tests/resources/testharness.js.headers:
* web-platform-tests/server-timing/resource_timing_idl-expected.txt:
* web-platform-tests/server-timing/resource_timing_idl.https-expected.txt:
* web-platform-tests/server-timing/service_worker_idl-expected.txt:
* web-platform-tests/service-workers/service-worker/clients-get-resultingClientId.https-expected.txt:
* web-platform-tests/streams/piping/general-expected.txt:
* web-platform-tests/visual-viewport/viewport-read-size-causes-layout-expected.txt:
* web-platform-tests/visual-viewport/viewport-read-size-in-iframe-causes-layout-expected.txt:
* web-platform-tests/wasm/jsapi/constructor/instantiate-bad-imports.any.worker-expected.txt:
* web-platform-tests/wasm/jsapi/instance/constructor-bad-imports.any.worker-expected.txt:
* web-platform-tests/web-animations/timing-model/animations/canceling-an-animation-expected.txt:
* web-platform-tests/webrtc/RTCRtpTransceiver-setCodecPreferences-expected.txt:
* web-platform-tests/websockets/Close-undefined.any.worker-expected.txt:
* web-platform-tests/websockets/opening-handshake/003-expected.txt:
* web-platform-tests/websockets/unload-a-document/001-expected.txt:
* web-platform-tests/websockets/unload-a-document/002-expected.txt:
* web-platform-tests/websockets/unload-a-document/003-expected.txt:
* web-platform-tests/websockets/unload-a-document/004-expected.txt:
* web-platform-tests/workers/WorkerGlobalScope_requestAnimationFrame.tentative.worker-expected.txt:
* web-platform-tests/workers/Worker_ErrorEvent_error-expected.txt:
* web-platform-tests/workers/baseurl/alpha/importScripts-in-worker-expected.txt:
* web-platform-tests/workers/baseurl/alpha/xhr-in-worker-expected.txt:
* web-platform-tests/workers/interfaces/WorkerUtils/importScripts/001.worker-expected.txt:
* web-platform-tests/workers/interfaces/WorkerUtils/importScripts/002.worker-expected.txt:
* web-platform-tests/xhr/overridemimetype-done-state.any-expected.txt:
* web-platform-tests/xhr/overridemimetype-done-state.any.worker-expected.txt:
* web-platform-tests/xhr/responsetype.any-expected.txt:
* web-platform-tests/xhr/timeout-sync-expected.txt:

LayoutTests:

* http/wpt/resource-timing/rt-initiatorType-other-expected.txt:
* http/wpt/webauthn/resources/util.js:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@249977 268f45cc-cd09-0410-ab3c-d52691b4dbfc

166 files changed:
LayoutTests/ChangeLog
LayoutTests/TestExpectations
LayoutTests/http/wpt/resource-timing/rt-initiatorType-other-expected.txt
LayoutTests/http/wpt/webauthn/public-key-credential-create-success-local.https.html
LayoutTests/http/wpt/webauthn/public-key-credential-get-success-local.https.html
LayoutTests/http/wpt/webauthn/resources/util.js
LayoutTests/imported/w3c/ChangeLog
LayoutTests/imported/w3c/web-platform-tests/FileAPI/FileReader/workers-expected.txt
LayoutTests/imported/w3c/web-platform-tests/FileAPI/url/url-format.any.worker-expected.txt
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/fire-success-event-exception-expected.txt
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_bits.https.worker-expected.txt
LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_keys.https.worker-expected.txt
LayoutTests/imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constants.any-expected.txt
LayoutTests/imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constants.any.worker-expected.txt
LayoutTests/imported/w3c/web-platform-tests/content-security-policy/inside-worker/shared-inheritance-expected.txt
LayoutTests/imported/w3c/web-platform-tests/content-security-policy/inside-worker/shared-script-expected.txt
LayoutTests/imported/w3c/web-platform-tests/content-security-policy/nonce-hiding/svgscript-nonces-hidden-meta.tentative.sub-expected.txt
LayoutTests/imported/w3c/web-platform-tests/content-security-policy/nonce-hiding/svgscript-nonces-hidden.tentative-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-001-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-002-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-003-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-004-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-005-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-006-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-007-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-008-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-009-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-010-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-011-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-012-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-013-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-014-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-015-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-016-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-017-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-018-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-019-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-020-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-021-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-022-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-023-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-024-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-025-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-026-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-027-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-028-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-029-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-030-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-031-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-032-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-033-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-034-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-035-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-036-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-alignment-style-changes-001-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-alignment-style-changes-002-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-alignment-style-changes-003-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-alignment-style-changes-004-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-alignment-style-changes-005-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-alignment-style-changes-006-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-alignment-style-changes-007-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-grid/alignment/grid-alignment-style-changes-008-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-grid/grid-definition/grid-change-fit-content-argument-001-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-properties-values-api/unit-cycles-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-properties-values-api/url-resolution-expected.txt
LayoutTests/imported/w3c/web-platform-tests/custom-elements/parser/parser-fallsback-to-unknown-element-expected.txt
LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-listener-order.window-expected.txt
LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-isTrusted.any-expected.txt
LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-isTrusted.any.worker-expected.txt
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-getElementsByTagName-change-document-HTMLNess-expected.txt
LayoutTests/imported/w3c/web-platform-tests/eventsource/eventsource-prototype-expected.txt
LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/stream-safe-creation.any.worker-expected.txt
LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-cache.any-expected.txt
LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-cache.any.worker-expected.txt
LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-redirect.any-expected.txt
LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-redirect.any.worker-expected.txt
LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-consume-empty-expected.txt
LayoutTests/imported/w3c/web-platform-tests/fetch/api/response/response-consume-empty-expected.txt
LayoutTests/imported/w3c/web-platform-tests/fetch/cross-origin-resource-policy/scheme-restriction.https.window-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-global-scope-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/browsers/history/joint-session-history/joint-session-history-iframe-state-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/location-protocol-setter-non-broken-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/browsers/origin/origin-of-data-document-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/browsers/origin/relaxing-the-same-origin-restriction/document_domain_setter-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/no_window_open_when_term_nesting_level_nonzero.window-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-window-object/focus.window-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/document-access/document_access_parent_access.tentative-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/targeting-cross-origin-nested-browsing-contexts-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/dom/documents/dom-tree-accessors/document.title-01-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/dom/documents/dom-tree-accessors/document.title-02-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/dom/reflection-embedded-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/rendering/non-replaced-elements/flow-content-0/dialog-display-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/rendering/non-replaced-elements/tables/table-vspace-hspace-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/rendering/non-replaced-elements/tables/table-vspace-hspace-s-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/rendering/non-replaced-elements/the-page/iframe-marginwidth-marginheight-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/semantics/document-metadata/the-base-element/base_target_does_not_affect_iframe_src_navigation-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/semantics/document-metadata/the-base-element/base_target_does_not_affect_location_assignment-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/not-in-shadow-tree-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/interfaces/HTMLElement/HTMLTrackElement/srclang-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/interfaces/TextTrack/language-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-frame-element/document-getters-return-null-for-cross-origin-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-iframe-element/document-getters-return-null-for-cross-origin-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_anchor_download_allow_downloads_without_user_activation.sub.tentative-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_allow_downloads_without_user_activation.sub.tentative-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-iframe-element/sandbox_030-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-object-element/document-getters-return-null-for-cross-origin-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/execution-timing/084-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/charset-02-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/crossorigin-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/syntax/parsing/quotes-in-meta-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/document-open-cancels-javascript-url-navigation-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/webappapis/scripting/processing-model-2/window-onerror-parse-error-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/webappapis/scripting/processing-model-2/window-onerror-runtime-error-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/webappapis/scripting/processing-model-2/window-onerror-runtime-error-throw-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/webappapis/timers/negative-settimeout-expected.txt
LayoutTests/imported/w3c/web-platform-tests/infrastructure/server/context.any-expected.txt
LayoutTests/imported/w3c/web-platform-tests/infrastructure/server/context.any.serviceworker-expected.txt
LayoutTests/imported/w3c/web-platform-tests/infrastructure/server/context.any.worker-expected.txt
LayoutTests/imported/w3c/web-platform-tests/infrastructure/server/title.any.worker-expected.txt
LayoutTests/imported/w3c/web-platform-tests/mediacapture-streams/MediaStreamTrack-end-manual.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/pointerevents/pointerevent_root_computed_style-expected.txt
LayoutTests/imported/w3c/web-platform-tests/pointerevents/pointerevent_root_hit_test-expected.txt
LayoutTests/imported/w3c/web-platform-tests/preload/link-header-preload-nonce-expected.txt
LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_TAO_match_origin-expected.txt
LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_TAO_match_wildcard-expected.txt
LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_TAO_multi-expected.txt
LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_TAO_multi_wildcard-expected.txt
LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_TAO_null-expected.txt
LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_TAO_origin_uppercase-expected.txt
LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_TAO_space-expected.txt
LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_TAO_wildcard-expected.txt
LayoutTests/imported/w3c/web-platform-tests/resources/testharness.css.headers
LayoutTests/imported/w3c/web-platform-tests/resources/testharness.js
LayoutTests/imported/w3c/web-platform-tests/resources/testharness.js.headers
LayoutTests/imported/w3c/web-platform-tests/server-timing/resource_timing_idl-expected.txt
LayoutTests/imported/w3c/web-platform-tests/server-timing/resource_timing_idl.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/server-timing/service_worker_idl-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/clients-get-resultingClientId.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/streams/piping/general-expected.txt
LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-read-size-causes-layout-expected.txt
LayoutTests/imported/w3c/web-platform-tests/visual-viewport/viewport-read-size-in-iframe-causes-layout-expected.txt
LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/constructor/instantiate-bad-imports.any.worker-expected.txt
LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor-bad-imports.any.worker-expected.txt
LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/interface.any.worker-expected.txt
LayoutTests/imported/w3c/web-platform-tests/web-animations/timing-model/animations/canceling-an-animation-expected.txt
LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCRtpTransceiver-setCodecPreferences-expected.txt
LayoutTests/imported/w3c/web-platform-tests/websockets/Close-undefined.any.worker-expected.txt
LayoutTests/imported/w3c/web-platform-tests/websockets/unload-a-document/001-expected.txt
LayoutTests/imported/w3c/web-platform-tests/websockets/unload-a-document/002-expected.txt
LayoutTests/imported/w3c/web-platform-tests/websockets/unload-a-document/003-expected.txt
LayoutTests/imported/w3c/web-platform-tests/websockets/unload-a-document/004-expected.txt
LayoutTests/imported/w3c/web-platform-tests/workers/WorkerGlobalScope_requestAnimationFrame.tentative.worker-expected.txt
LayoutTests/imported/w3c/web-platform-tests/workers/Worker_ErrorEvent_error-expected.txt
LayoutTests/imported/w3c/web-platform-tests/workers/baseurl/alpha/importScripts-in-worker-expected.txt
LayoutTests/imported/w3c/web-platform-tests/workers/baseurl/alpha/xhr-in-worker-expected.txt
LayoutTests/imported/w3c/web-platform-tests/workers/interfaces/WorkerUtils/importScripts/001.worker-expected.txt
LayoutTests/imported/w3c/web-platform-tests/workers/interfaces/WorkerUtils/importScripts/002.worker-expected.txt
LayoutTests/imported/w3c/web-platform-tests/xhr/overridemimetype-done-state.any-expected.txt
LayoutTests/imported/w3c/web-platform-tests/xhr/overridemimetype-done-state.any.worker-expected.txt
LayoutTests/imported/w3c/web-platform-tests/xhr/responsetype.any-expected.txt
LayoutTests/imported/w3c/web-platform-tests/xhr/timeout-sync-expected.txt
LayoutTests/platform/ios-wk2/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/history-traversal/scroll-restoration-order-expected.txt
LayoutTests/platform/ios-wk2/imported/w3c/web-platform-tests/html/dom/reflection-embedded-expected.txt
LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/no_window_open_when_term_nesting_level_nonzero.window-expected.txt
LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_anchor_download_allow_downloads_without_user_activation.sub.tentative-expected.txt

index 975a48a..45caacb 100644 (file)
@@ -1,3 +1,13 @@
+2019-09-17  Chris Dumez  <cdumez@apple.com>
+
+        Update testharness.js from upstream for web-platform-tests
+        https://bugs.webkit.org/show_bug.cgi?id=201843
+
+        Reviewed by Jiewen Tan.
+
+        * http/wpt/resource-timing/rt-initiatorType-other-expected.txt:
+        * http/wpt/webauthn/resources/util.js:
+
 2019-09-17  Nikolas Zimmermann  <zimmermann@kde.org>
 
         SVG <animateMotion> does not reset the element to its first animation frame if its fill is "remove"
index 6f14650..424e9e3 100644 (file)
@@ -410,6 +410,7 @@ imported/w3c/web-platform-tests/html/dom/idlharness.worker.html [ DumpJSConsoleL
 imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/error-type-1.html [ DumpJSConsoleLogInStdErr ]
 imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/sandbox.https.html [ DumpJSConsoleLogInStdErr ]
 imported/w3c/web-platform-tests/IndexedDB/fire-error-event-exception.html [ DumpJSConsoleLogInStdErr ]
+imported/w3c/web-platform-tests/IndexedDB/fire-success-event-exception.html [ DumpJSConsoleLogInStdErr ]
 
 imported/w3c/web-platform-tests/service-workers/service-worker/fetch-response-taint.https.html [ DumpJSConsoleLogInStdErr ]
 imported/w3c/web-platform-tests/service-workers/service-worker/register-closed-window.https.html [ DumpJSConsoleLogInStdErr ]
index 7fe41c6..a3be161 100644 (file)
@@ -1,8 +1,10 @@
 Resource Timing: Other initiatorType
 
 
+Harness Error (TIMEOUT), message = null
+
 PASS Type: other - Worker 
 PASS Timing: other - Worker 
 TIMEOUT Type: other - EventSource Test timed out
-FAIL Timing: other - EventSource assert_true: previous test should have produced an entry expected true got false
+NOTRUN Timing: other - EventSource 
 
index f155008..f1ba137 100644 (file)
@@ -30,7 +30,7 @@
         assert_equals(credential.type, 'public-key');
         assert_array_equals(new Uint8Array(credential.rawId), Base64URL.parse(testCredentialIdBase64));
         assert_equals(bytesToASCIIString(credential.response.clientDataJSON), '{"type":"webauthn.create","challenge":"MTIzNDU2","origin":"https://localhost:9443"}');
-        assert_not_exists(credential.getClientExtensionResults(), "appid");
+        assert_not_own_property(credential.getClientExtensionResults(), "appid");
 
         // Check attestation
         const attestationObject = CBOR.decode(credential.response.attestationObject);
index 73aeccf..6badb53 100644 (file)
@@ -19,7 +19,7 @@
         assert_array_equals(new Uint8Array(credential.rawId), Base64URL.parse(testCredentialIdBase64));
         assert_equals(bytesToASCIIString(credential.response.clientDataJSON), '{"type":"webauthn.get","challenge":"MTIzNDU2","origin":"https://localhost:9443"}');
         assert_equals(bytesToHexString(credential.response.userHandle), "00010203040506070809");
-        assert_not_exists(credential.getClientExtensionResults(), "appid");
+        assert_not_own_property(credential.getClientExtensionResults(), "appid");
 
         // Check authData
         const authData = decodeAuthData(new Uint8Array(credential.response.authenticatorData));
@@ -33,7 +33,7 @@
                 // credential.response.signature is in ASN.1 and WebCrypto expect signatures provides in r|s.
                 return crypto.subtle.verify({name: "ECDSA", hash: "SHA-256"}, publicKey, extractRawSignature(credential.response.signature), concatenateBuffers(credential.response.authenticatorData, hash)).then( verified => {
                     assert_true(verified);
-                    assert_not_exists(credential.getClientExtensionResults(), "appid");
+                    assert_not_own_property(credential.getClientExtensionResults(), "appid");
                 });
             });
         });
index 1b913b4..e300157 100644 (file)
@@ -339,7 +339,7 @@ function checkCtapMakeCredentialResult(credential, isNoneAttestation = true)
     assert_equals(credential.type, 'public-key');
     assert_array_equals(new Uint8Array(credential.rawId), Base64URL.parse(testHidCredentialIdBase64));
     assert_equals(bytesToASCIIString(credential.response.clientDataJSON), '{"type":"webauthn.create","challenge":"MTIzNDU2","origin":"https://localhost:9443"}');
-    assert_not_exists(credential.getClientExtensionResults(), "appid");
+    assert_not_own_property(credential.getClientExtensionResults(), "appid");
 
     // Check attestation
     const attestationObject = CBOR.decode(credential.response.attestationObject);
@@ -374,7 +374,7 @@ function checkU2fMakeCredentialResult(credential, isNoneAttestation = true)
     assert_equals(credential.type, 'public-key');
     assert_array_equals(new Uint8Array(credential.rawId), Base64URL.parse(testU2fCredentialIdBase64));
     assert_equals(bytesToASCIIString(credential.response.clientDataJSON), '{"type":"webauthn.create","challenge":"MTIzNDU2","origin":"https://localhost:9443"}');
-    assert_not_exists(credential.getClientExtensionResults(), "appid");
+    assert_not_own_property(credential.getClientExtensionResults(), "appid");
 
     // Check attestation
     const attestationObject = CBOR.decode(credential.response.attestationObject);
@@ -405,7 +405,7 @@ function checkCtapGetAssertionResult(credential)
     assert_array_equals(new Uint8Array(credential.rawId), Base64URL.parse(testHidCredentialIdBase64));
     assert_equals(bytesToASCIIString(credential.response.clientDataJSON), '{"type":"webauthn.get","challenge":"MTIzNDU2","origin":"https://localhost:9443"}');
     assert_equals(credential.response.userHandle, null);
-    assert_not_exists(credential.getClientExtensionResults(), "appid");
+    assert_not_own_property(credential.getClientExtensionResults(), "appid");
 
     // Check authData
     const authData = decodeAuthData(new Uint8Array(credential.response.authenticatorData));
@@ -423,7 +423,7 @@ function checkU2fGetAssertionResult(credential, isAppID = false, appIDHash = "c2
     assert_equals(bytesToASCIIString(credential.response.clientDataJSON), '{"type":"webauthn.get","challenge":"MTIzNDU2","origin":"https://localhost:9443"}');
     assert_equals(credential.response.userHandle, null);
     if (!isAppID)
-        assert_not_exists(credential.getClientExtensionResults(), "appid");
+        assert_not_own_property(credential.getClientExtensionResults(), "appid");
     else
         assert_true(credential.getClientExtensionResults().appid);
 
index 517f590..ce4da50 100644 (file)
@@ -1,3 +1,185 @@
+2019-09-17  Chris Dumez  <cdumez@apple.com>
+
+        Update testharness.js from upstream for web-platform-tests
+        https://bugs.webkit.org/show_bug.cgi?id=201843
+
+        Reviewed by Jiewen Tan.
+
+        Update testharness.js from upstream 6fd5e1e086ce590a4780a30d129 for web-platform-tests and
+        rebaseline tests accordingly.
+
+        * web-platform-tests/FileAPI/FileReader/workers-expected.txt:
+        * web-platform-tests/FileAPI/url/url-format.any.worker-expected.txt:
+        * web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_bits.https.worker-expected.txt:
+        * web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_keys.https.worker-expected.txt:
+        * web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constants.any-expected.txt:
+        * web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constants.any.worker-expected.txt:
+        * web-platform-tests/content-security-policy/inside-worker/shared-inheritance-expected.txt:
+        * web-platform-tests/content-security-policy/inside-worker/shared-script-expected.txt:
+        * web-platform-tests/content-security-policy/nonce-hiding/svgscript-nonces-hidden-meta.tentative.sub-expected.txt:
+        * web-platform-tests/content-security-policy/nonce-hiding/svgscript-nonces-hidden.tentative-expected.txt:
+        * web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-001-expected.txt:
+        * web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-002-expected.txt:
+        * web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-003-expected.txt:
+        * web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-004-expected.txt:
+        * web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-005-expected.txt:
+        * web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-006-expected.txt:
+        * web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-007-expected.txt:
+        * web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-008-expected.txt:
+        * web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-009-expected.txt:
+        * web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-010-expected.txt:
+        * web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-011-expected.txt:
+        * web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-012-expected.txt:
+        * web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-013-expected.txt:
+        * web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-014-expected.txt:
+        * web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-015-expected.txt:
+        * web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-016-expected.txt:
+        * web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-017-expected.txt:
+        * web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-018-expected.txt:
+        * web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-019-expected.txt:
+        * web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-020-expected.txt:
+        * web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-021-expected.txt:
+        * web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-022-expected.txt:
+        * web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-023-expected.txt:
+        * web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-024-expected.txt:
+        * web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-025-expected.txt:
+        * web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-026-expected.txt:
+        * web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-027-expected.txt:
+        * web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-028-expected.txt:
+        * web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-029-expected.txt:
+        * web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-030-expected.txt:
+        * web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-031-expected.txt:
+        * web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-032-expected.txt:
+        * web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-033-expected.txt:
+        * web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-034-expected.txt:
+        * web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-035-expected.txt:
+        * web-platform-tests/css/css-grid/alignment/grid-alignment-implies-size-change-036-expected.txt:
+        * web-platform-tests/css/css-grid/alignment/grid-alignment-style-changes-001-expected.txt:
+        * web-platform-tests/css/css-grid/alignment/grid-alignment-style-changes-002-expected.txt:
+        * web-platform-tests/css/css-grid/alignment/grid-alignment-style-changes-003-expected.txt:
+        * web-platform-tests/css/css-grid/alignment/grid-alignment-style-changes-004-expected.txt:
+        * web-platform-tests/css/css-grid/alignment/grid-alignment-style-changes-005-expected.txt:
+        * web-platform-tests/css/css-grid/alignment/grid-alignment-style-changes-006-expected.txt:
+        * web-platform-tests/css/css-grid/alignment/grid-alignment-style-changes-007-expected.txt:
+        * web-platform-tests/css/css-grid/alignment/grid-alignment-style-changes-008-expected.txt:
+        * web-platform-tests/css/css-grid/grid-definition/grid-change-fit-content-argument-001-expected.txt:
+        * web-platform-tests/css/css-properties-values-api/unit-cycles-expected.txt:
+        * web-platform-tests/css/css-properties-values-api/url-resolution-expected.txt:
+        * web-platform-tests/custom-elements/parser/parser-fallsback-to-unknown-element-expected.txt:
+        * web-platform-tests/dom/events/Event-dispatch-listener-order.window-expected.txt:
+        * web-platform-tests/dom/events/Event-isTrusted.any-expected.txt:
+        * web-platform-tests/dom/events/Event-isTrusted.any.worker-expected.txt:
+        * web-platform-tests/dom/nodes/Element-getElementsByTagName-change-document-HTMLNess-expected.txt:
+        * web-platform-tests/eventsource/eventsource-prototype-expected.txt:
+        * web-platform-tests/fetch/api/basic/stream-safe-creation.any.worker-expected.txt:
+        * web-platform-tests/fetch/api/cors/cors-preflight-cache.any-expected.txt:
+        * web-platform-tests/fetch/api/cors/cors-preflight-cache.any.worker-expected.txt:
+        * web-platform-tests/fetch/api/cors/cors-preflight-redirect.any-expected.txt:
+        * web-platform-tests/fetch/api/cors/cors-preflight-redirect.any.worker-expected.txt:
+        * web-platform-tests/fetch/api/policies/referrer-origin-when-cross-origin-service-worker.https-expected.txt:
+        * web-platform-tests/fetch/api/request/request-consume-empty-expected.txt:
+        * web-platform-tests/fetch/api/response/response-consume-empty-expected.txt:
+        * web-platform-tests/fetch/cross-origin-resource-policy/scheme-restriction.https.window-expected.txt:
+        * web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-global-scope-expected.txt:
+        * web-platform-tests/html/browsers/history/joint-session-history/joint-session-history-iframe-state-expected.txt:
+        * web-platform-tests/html/browsers/history/the-location-interface/location-protocol-setter-non-broken-expected.txt:
+        * web-platform-tests/html/browsers/origin/origin-of-data-document-expected.txt:
+        * web-platform-tests/html/browsers/origin/relaxing-the-same-origin-restriction/document_domain_setter-expected.txt:
+        * web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/no_window_open_when_term_nesting_level_nonzero.window-expected.txt:
+        * web-platform-tests/html/browsers/the-window-object/focus.window-expected.txt:
+        * web-platform-tests/html/browsers/windows/document-access/document_access_parent_access.tentative-expected.txt:
+        * web-platform-tests/html/browsers/windows/targeting-cross-origin-nested-browsing-contexts-expected.txt:
+        * web-platform-tests/html/dom/documents/dom-tree-accessors/document.title-01-expected.txt:
+        * web-platform-tests/html/dom/documents/dom-tree-accessors/document.title-02-expected.txt:
+        * web-platform-tests/html/rendering/non-replaced-elements/flow-content-0/dialog-display-expected.txt:
+        * web-platform-tests/html/rendering/non-replaced-elements/tables/table-vspace-hspace-expected.txt:
+        * web-platform-tests/html/rendering/non-replaced-elements/tables/table-vspace-hspace-s-expected.txt:
+        * web-platform-tests/html/rendering/non-replaced-elements/the-page/iframe-marginwidth-marginheight-expected.txt:
+        * web-platform-tests/html/semantics/document-metadata/the-base-element/base_target_does_not_affect_iframe_src_navigation-expected.txt:
+        * web-platform-tests/html/semantics/document-metadata/the-base-element/base_target_does_not_affect_location_assignment-expected.txt:
+        * web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/not-in-shadow-tree-expected.txt:
+        * web-platform-tests/html/semantics/embedded-content/media-elements/interfaces/HTMLElement/HTMLTrackElement/srclang-expected.txt:
+        * web-platform-tests/html/semantics/embedded-content/media-elements/interfaces/TextTrack/language-expected.txt:
+        * web-platform-tests/html/semantics/embedded-content/the-frame-element/document-getters-return-null-for-cross-origin-expected.txt:
+        * web-platform-tests/html/semantics/embedded-content/the-iframe-element/document-getters-return-null-for-cross-origin-expected.txt:
+        * web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_anchor_download_allow_downloads_without_user_activation.sub.tentative-expected.txt:
+        * web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_allow_downloads_without_user_activation.sub.tentative-expected.txt:
+        * web-platform-tests/html/semantics/embedded-content/the-iframe-element/sandbox_030-expected.txt:
+        * web-platform-tests/html/semantics/embedded-content/the-object-element/document-getters-return-null-for-cross-origin-expected.txt:
+        * web-platform-tests/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener-expected.txt:
+        * web-platform-tests/html/semantics/scripting-1/the-script-element/execution-timing/084-expected.txt:
+        * web-platform-tests/html/semantics/scripting-1/the-script-element/module/charset-02-expected.txt:
+        * web-platform-tests/html/semantics/scripting-1/the-script-element/module/crossorigin-expected.txt:
+        * web-platform-tests/html/syntax/parsing/quotes-in-meta-expected.txt:
+        * web-platform-tests/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/document-open-cancels-javascript-url-navigation-expected.txt:
+        * web-platform-tests/html/webappapis/scripting/processing-model-2/window-onerror-parse-error-expected.txt:
+        * web-platform-tests/html/webappapis/scripting/processing-model-2/window-onerror-runtime-error-expected.txt:
+        * web-platform-tests/html/webappapis/scripting/processing-model-2/window-onerror-runtime-error-throw-expected.txt:
+        * web-platform-tests/html/webappapis/timers/negative-settimeout-expected.txt:
+        * web-platform-tests/infrastructure/server/context.any-expected.txt:
+        * web-platform-tests/infrastructure/server/context.any.serviceworker-expected.txt:
+        * web-platform-tests/infrastructure/server/context.any.worker-expected.txt:
+        * web-platform-tests/infrastructure/server/title.any.worker-expected.txt:
+        * web-platform-tests/mediacapture-streams/MediaStreamTrack-end-manual.https-expected.txt:
+        * web-platform-tests/pointerevents/pointerevent_root_computed_style-expected.txt:
+        * web-platform-tests/pointerevents/pointerevent_root_hit_test-expected.txt:
+        * web-platform-tests/preload/link-header-preload-nonce-expected.txt:
+        * web-platform-tests/resource-timing/resource_TAO_match_origin-expected.txt:
+        * web-platform-tests/resource-timing/resource_TAO_match_wildcard-expected.txt:
+        * web-platform-tests/resource-timing/resource_TAO_multi-expected.txt:
+        * web-platform-tests/resource-timing/resource_TAO_multi_wildcard-expected.txt:
+        * web-platform-tests/resource-timing/resource_TAO_null-expected.txt:
+        * web-platform-tests/resource-timing/resource_TAO_origin_uppercase-expected.txt:
+        * web-platform-tests/resource-timing/resource_TAO_space-expected.txt:
+        * web-platform-tests/resource-timing/resource_TAO_wildcard-expected.txt:
+        * web-platform-tests/resources/testharness.css.headers:
+        * web-platform-tests/resources/testharness.js:
+        (WindowTestEnvironment.prototype._forEach_windows):
+        (WindowTestEnvironment.prototype.next_default_test_name):
+        (WorkerTestEnvironment.prototype.next_default_test_name):
+        (ShellTestEnvironment):
+        (ShellTestEnvironment.prototype.next_default_test_name):
+        (ShellTestEnvironment.prototype.on_new_harness_properties):
+        (ShellTestEnvironment.prototype.on_tests_ready):
+        (ShellTestEnvironment.prototype.add_on_loaded_callback):
+        (ShellTestEnvironment.prototype.test_timeout):
+        (create_test_environment):
+        (is_shared_worker):
+        (is_service_worker):
+        (test):
+        (promise_test):
+        (this.wait_for):
+        (EventWatcher):
+        (done):
+        * web-platform-tests/resources/testharness.js.headers:
+        * web-platform-tests/server-timing/resource_timing_idl-expected.txt:
+        * web-platform-tests/server-timing/resource_timing_idl.https-expected.txt:
+        * web-platform-tests/server-timing/service_worker_idl-expected.txt:
+        * web-platform-tests/service-workers/service-worker/clients-get-resultingClientId.https-expected.txt:
+        * web-platform-tests/streams/piping/general-expected.txt:
+        * web-platform-tests/visual-viewport/viewport-read-size-causes-layout-expected.txt:
+        * web-platform-tests/visual-viewport/viewport-read-size-in-iframe-causes-layout-expected.txt:
+        * web-platform-tests/wasm/jsapi/constructor/instantiate-bad-imports.any.worker-expected.txt:
+        * web-platform-tests/wasm/jsapi/instance/constructor-bad-imports.any.worker-expected.txt:
+        * web-platform-tests/web-animations/timing-model/animations/canceling-an-animation-expected.txt:
+        * web-platform-tests/webrtc/RTCRtpTransceiver-setCodecPreferences-expected.txt:
+        * web-platform-tests/websockets/Close-undefined.any.worker-expected.txt:
+        * web-platform-tests/websockets/opening-handshake/003-expected.txt:
+        * web-platform-tests/websockets/unload-a-document/001-expected.txt:
+        * web-platform-tests/websockets/unload-a-document/002-expected.txt:
+        * web-platform-tests/websockets/unload-a-document/003-expected.txt:
+        * web-platform-tests/websockets/unload-a-document/004-expected.txt:
+        * web-platform-tests/workers/WorkerGlobalScope_requestAnimationFrame.tentative.worker-expected.txt:
+        * web-platform-tests/workers/Worker_ErrorEvent_error-expected.txt:
+        * web-platform-tests/workers/baseurl/alpha/importScripts-in-worker-expected.txt:
+        * web-platform-tests/workers/baseurl/alpha/xhr-in-worker-expected.txt:
+        * web-platform-tests/workers/interfaces/WorkerUtils/importScripts/001.worker-expected.txt:
+        * web-platform-tests/workers/interfaces/WorkerUtils/importScripts/002.worker-expected.txt:
+        * web-platform-tests/xhr/overridemimetype-done-state.any-expected.txt:
+        * web-platform-tests/xhr/overridemimetype-done-state.any.worker-expected.txt:
+        * web-platform-tests/xhr/responsetype.any-expected.txt:
+        * web-platform-tests/xhr/timeout-sync-expected.txt:
+
 2019-09-17  Antti Koivisto  <antti@apple.com>
 
         TextIterator should convert tabs to spaces
index c1c8d1a..65b9e6b 100644 (file)
@@ -4,3 +4,7 @@ Harness Error (FAIL), message = InvalidStateError: The object is in an invalid s
 
 TIMEOUT FileReader created after a worker self.close() Test timed out
 
+Harness Error (FAIL), message = InvalidStateError: The object is in an invalid state.
+
+TIMEOUT FileReader created after a worker self.close() Test timed out
+
index e1a86c3..1924afd 100644 (file)
@@ -1,5 +1,4 @@
-CONSOLE MESSAGE: line 1774: TypeError: null is not an object (evaluating 'this.message_target.removeEventListener')
 CONSOLE MESSAGE: line 2: ReferenceError: Can't find variable: File
 
-FAIL Untitled ReferenceError: Can't find variable: File
+FAIL url-format ReferenceError: Can't find variable: File
 
index d62fa83..292541b 100644 (file)
@@ -1,7 +1,3 @@
-CONSOLE MESSAGE: line 28: Error
-CONSOLE MESSAGE: line 37: Error
-CONSOLE MESSAGE: line 49: Error
-CONSOLE MESSAGE: line 59: Error
 
 PASS Exception in success event handler on request 
 PASS Exception in success event listener on request 
index 72153ab..193a8bb 100644 (file)
@@ -1,3 +1,6 @@
+CONSOLE MESSAGE: line 190: No valid data-* attributes found in selector list : .grid
+CONSOLE MESSAGE: line 190: No valid data-* attributes found in selector list : .grid
+CONSOLE MESSAGE: line 190: No valid data-* attributes found in selector list : .grid
 XXXX XXX XX X X
 XXXX XXX XX X X
 
index 9979860..1bba18c 100644 (file)
@@ -1,4 +1,4 @@
 CONSOLE MESSAGE: line 74: TypeError: element.attributeStyleMap.clear is not a function. (In 'element.attributeStyleMap.clear()', 'element.attributeStyleMap.clear' is undefined)
 
-FAIL Untitled TypeError: element.attributeStyleMap.clear is not a function. (In 'element.attributeStyleMap.clear()', 'element.attributeStyleMap.clear' is undefined)
+FAIL unit-cycles TypeError: element.attributeStyleMap.clear is not a function. (In 'element.attributeStyleMap.clear()', 'element.attributeStyleMap.clear' is undefined)
 
index 6d5601b..699ce3d 100644 (file)
@@ -1,6 +1,6 @@
 CONSOLE MESSAGE: line 2: SyntaxError: The given initial value does not parse for the given syntax.
 CONSOLE MESSAGE: line 2: SyntaxError: The given initial value does not parse for the given syntax.
-CONSOLE MESSAGE: line 1401: Error: Tried to create a test with file_is_test
+CONSOLE MESSAGE: line 1515: Error: Tried to create a test with file_is_test
 
-FAIL Untitled SyntaxError: The given initial value does not parse for the given syntax.
+FAIL url-resolution SyntaxError: The given initial value does not parse for the given syntax.
 
index ed2b2db..10a37da 100644 (file)
@@ -2,7 +2,7 @@ CONSOLE MESSAGE: TypeError: The result of constructing a custom element must be
 CONSOLE MESSAGE: TypeError: The result of constructing a custom element must be a HTMLElement
 CONSOLE MESSAGE: line 35: ReferenceError: Cannot access uninitialized variable.
 CONSOLE MESSAGE: line 41: Bad
-CONSOLE MESSAGE: line 1401: Error: Tried to create a test with file_is_test
+CONSOLE MESSAGE: line 1515: Error: Tried to create a test with file_is_test
 
 PASS Custom Elements: Changes to the HTML parser 
 
index 0c38dff..3e51b74 100644 (file)
@@ -1,5 +1,5 @@
 
-FAIL Untitled assert_equals: expected function "function isTrusted() {
+FAIL Event-isTrusted assert_equals: expected function "function isTrusted() {
     [native code]
 }" but got function "function isTrusted() {
     [native code]
index 0c38dff..3e51b74 100644 (file)
@@ -1,5 +1,5 @@
 
-FAIL Untitled assert_equals: expected function "function isTrusted() {
+FAIL Event-isTrusted assert_equals: expected function "function isTrusted() {
     [native code]
 }" but got function "function isTrusted() {
     [native code]
index 1011f47..39ce7da 100644 (file)
@@ -1,6 +1,4 @@
 
-Harness Error (TIMEOUT), message = null
-
 PASS throwing Object.prototype.start accessor should not affect stream creation by 'fetch' 
 PASS Object.prototype.start accessor returning invalid value should not affect stream creation by 'fetch' 
 PASS throwing Object.prototype.type accessor should not affect stream creation by 'fetch' 
index d594648..8360ea8 100644 (file)
@@ -1,12 +1,12 @@
 
-FAIL Redirection 301 on preflight failed assert_not_equals: got disallowed value undefined
-FAIL Redirection 301 after preflight failed assert_not_equals: got disallowed value undefined
-FAIL Redirection 302 on preflight failed assert_not_equals: got disallowed value undefined
-FAIL Redirection 302 after preflight failed assert_not_equals: got disallowed value undefined
-FAIL Redirection 303 on preflight failed assert_not_equals: got disallowed value undefined
-FAIL Redirection 303 after preflight failed assert_not_equals: got disallowed value undefined
-FAIL Redirection 307 on preflight failed assert_not_equals: got disallowed value undefined
-FAIL Redirection 307 after preflight failed assert_not_equals: got disallowed value undefined
-FAIL Redirection 308 on preflight failed assert_not_equals: got disallowed value undefined
-FAIL Redirection 308 after preflight failed assert_not_equals: got disallowed value undefined
+FAIL Redirection 301 on preflight failed promise_test: test body must return a 'thenable' object (received undefined)
+FAIL Redirection 301 after preflight failed promise_test: test body must return a 'thenable' object (received undefined)
+FAIL Redirection 302 on preflight failed promise_test: test body must return a 'thenable' object (received undefined)
+FAIL Redirection 302 after preflight failed promise_test: test body must return a 'thenable' object (received undefined)
+FAIL Redirection 303 on preflight failed promise_test: test body must return a 'thenable' object (received undefined)
+FAIL Redirection 303 after preflight failed promise_test: test body must return a 'thenable' object (received undefined)
+FAIL Redirection 307 on preflight failed promise_test: test body must return a 'thenable' object (received undefined)
+FAIL Redirection 307 after preflight failed promise_test: test body must return a 'thenable' object (received undefined)
+FAIL Redirection 308 on preflight failed promise_test: test body must return a 'thenable' object (received undefined)
+FAIL Redirection 308 after preflight failed promise_test: test body must return a 'thenable' object (received undefined)
 
index d594648..8360ea8 100644 (file)
@@ -1,12 +1,12 @@
 
-FAIL Redirection 301 on preflight failed assert_not_equals: got disallowed value undefined
-FAIL Redirection 301 after preflight failed assert_not_equals: got disallowed value undefined
-FAIL Redirection 302 on preflight failed assert_not_equals: got disallowed value undefined
-FAIL Redirection 302 after preflight failed assert_not_equals: got disallowed value undefined
-FAIL Redirection 303 on preflight failed assert_not_equals: got disallowed value undefined
-FAIL Redirection 303 after preflight failed assert_not_equals: got disallowed value undefined
-FAIL Redirection 307 on preflight failed assert_not_equals: got disallowed value undefined
-FAIL Redirection 307 after preflight failed assert_not_equals: got disallowed value undefined
-FAIL Redirection 308 on preflight failed assert_not_equals: got disallowed value undefined
-FAIL Redirection 308 after preflight failed assert_not_equals: got disallowed value undefined
+FAIL Redirection 301 on preflight failed promise_test: test body must return a 'thenable' object (received undefined)
+FAIL Redirection 301 after preflight failed promise_test: test body must return a 'thenable' object (received undefined)
+FAIL Redirection 302 on preflight failed promise_test: test body must return a 'thenable' object (received undefined)
+FAIL Redirection 302 after preflight failed promise_test: test body must return a 'thenable' object (received undefined)
+FAIL Redirection 303 on preflight failed promise_test: test body must return a 'thenable' object (received undefined)
+FAIL Redirection 303 after preflight failed promise_test: test body must return a 'thenable' object (received undefined)
+FAIL Redirection 307 on preflight failed promise_test: test body must return a 'thenable' object (received undefined)
+FAIL Redirection 307 after preflight failed promise_test: test body must return a 'thenable' object (received undefined)
+FAIL Redirection 308 on preflight failed promise_test: test body must return a 'thenable' object (received undefined)
+FAIL Redirection 308 after preflight failed promise_test: test body must return a 'thenable' object (received undefined)
 
index 863f1dd..bc50887 100644 (file)
@@ -3,9 +3,9 @@ PASS Consume request's body as text
 PASS Consume request's body as blob 
 PASS Consume request's body as arrayBuffer 
 PASS Consume request's body as json (error case) 
-FAIL Consume request's body as formData with correct multipart type (error case) promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'e.name')"
+FAIL Consume request's body as formData with correct multipart type (error case) assert_throws: function "function () { throw e }" threw undefined with type "undefined", not an object
 FAIL Consume request's body as formData with correct urlencoded type promise_test: Unhandled rejection with value: undefined
-FAIL Consume request's body as formData without correct type (error case) promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'e.name')"
+FAIL Consume request's body as formData without correct type (error case) assert_throws: function "function () { throw e }" threw undefined with type "undefined", not an object
 PASS Consume empty blob request body as arrayBuffer 
 PASS Consume empty text request body as arrayBuffer 
 PASS Consume empty blob request body as text 
index fa8c6f4..c5254f1 100644 (file)
@@ -3,9 +3,9 @@ PASS Consume response's body as text
 PASS Consume response's body as blob 
 PASS Consume response's body as arrayBuffer 
 PASS Consume response's body as json (error case) 
-FAIL Consume response's body as formData with correct multipart type (error case) promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'e.name')"
+FAIL Consume response's body as formData with correct multipart type (error case) assert_throws: function "function () { throw e }" threw undefined with type "undefined", not an object
 FAIL Consume response's body as formData with correct urlencoded type promise_test: Unhandled rejection with value: undefined
-FAIL Consume response's body as formData without correct type (error case) promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'e.name')"
+FAIL Consume response's body as formData without correct type (error case) assert_throws: function "function () { throw e }" threw undefined with type "undefined", not an object
 PASS Consume empty blob response body as arrayBuffer 
 PASS Consume empty text response body as arrayBuffer 
 PASS Consume empty blob response body as text 
index 7ef0292..ac1ef38 100644 (file)
@@ -1,4 +1,4 @@
-CONSOLE MESSAGE: line 1489: The page at https://localhost:9443/fetch/cross-origin-resource-policy/scheme-restriction.https.window.html was allowed to display insecure content from http://127.0.0.1:8800/fetch/cross-origin-resource-policy/resources/image.py?corp=same-site.
+CONSOLE MESSAGE: line 1611: The page at https://localhost:9443/fetch/cross-origin-resource-policy/scheme-restriction.https.window.html was allowed to display insecure content from http://127.0.0.1:8800/fetch/cross-origin-resource-policy/resources/image.py?corp=same-site.
 
 CONSOLE MESSAGE: Cancelled load to http://127.0.0.1:8800/fetch/cross-origin-resource-policy/resources/image.py?corp=same-site because it violates the resource's Cross-Origin-Resource-Policy response header.
 CONSOLE MESSAGE: Cannot load image http://127.0.0.1:8800/fetch/cross-origin-resource-policy/resources/image.py?corp=same-site due to access control checks.
index 0b7f2ae..5af3922 100644 (file)
@@ -5,3 +5,7 @@ Harness Error (FAIL), message = TypeError: undefined is not an object (evaluatin
 
 TIMEOUT javascript: scheme urls should be executed in current global scope Test timed out
 
+Harness Error (FAIL), message = TypeError: undefined is not an object (evaluating 't.done')
+
+TIMEOUT javascript: scheme urls should be executed in current global scope Test timed out
+
index d37e4ec..f3f843c 100644 (file)
@@ -2,7 +2,7 @@
 PASS Set HTTP URL frame location.protocol to x 
 PASS Set data URL frame location.protocol to x 
 PASS Set HTTP URL frame location.protocol to data 
-FAIL Set data URL frame location.protocol to data The object can not be cloned.
+PASS Set data URL frame location.protocol to data 
 PASS Set HTTP URL frame location.protocol to file 
 PASS Set data URL frame location.protocol to file 
 PASS Set HTTP URL frame location.protocol to ftp 
index a85245f..7ff9697 100644 (file)
@@ -1,4 +1,4 @@
-CONSOLE MESSAGE: line 1489: Blocked a frame with origin "http://localhost:8800" from accessing a frame with origin "null".  The frame requesting access has a protocol of "http", the frame being accessed has a protocol of "data". Protocols must match.
+CONSOLE MESSAGE: line 1611: Blocked a frame with origin "http://localhost:8800" from accessing a frame with origin "null".  The frame requesting access has a protocol of "http", the frame being accessed has a protocol of "data". Protocols must match.
 
 
 
index 66b965d..89d95bc 100644 (file)
@@ -1,6 +1,6 @@
 CONSOLE MESSAGE: line 7: SecurityError: Attempted to use a non-registrable domain.
-CONSOLE MESSAGE: line 1489: Blocked a frame with origin "http://localhost:8800" from accessing a frame with origin "http://127.0.0.1:8800". The frame requesting access set "document.domain" to "localhost", but the frame being accessed did not. Both must set "document.domain" to the same value to allow access.
-CONSOLE MESSAGE: line 1489: Blocked a frame with origin "http://localhost:8800" from accessing a frame with origin "http://127.0.0.1:8800". The frame requesting access set "document.domain" to "localhost", but the frame being accessed did not. Both must set "document.domain" to the same value to allow access.
+CONSOLE MESSAGE: line 1611: Blocked a frame with origin "http://localhost:8800" from accessing a frame with origin "http://127.0.0.1:8800". The frame requesting access set "document.domain" to "localhost", but the frame being accessed did not. Both must set "document.domain" to the same value to allow access.
+CONSOLE MESSAGE: line 1611: Blocked a frame with origin "http://localhost:8800" from accessing a frame with origin "http://127.0.0.1:8800". The frame requesting access set "document.domain" to "localhost", but the frame being accessed did not. Both must set "document.domain" to the same value to allow access.
 
 
 FAIL failed setting of document.domain assert_throws: function "function () { document.domain = SUFFIX_HOST; }" did not throw
index de61161..6eb796a 100644 (file)
@@ -1,5 +1,5 @@
-CONSOLE MESSAGE: line 2659: Error: assert_equals: expected no popup during pagehide expected null but got object "[object Window]"
-CONSOLE MESSAGE: line 2659: Error: assert_equals: expected no popup during unload expected null but got object "[object Window]"
+CONSOLE MESSAGE: line 3082: Error: assert_equals: expected no popup during pagehide expected null but got object "[object Window]"
+CONSOLE MESSAGE: line 3082: Error: assert_equals: expected no popup during unload expected null but got object "[object Window]"
 
 PASS no popups with frame removal 
 FAIL no popups with frame navigation assert_equals: expected no popup during beforeunload expected null but got object "[object Window]"
index 85b2940..35bb477 100644 (file)
@@ -1,5 +1,5 @@
 CONSOLE MESSAGE: line 2: TypeError: Not enough arguments
 
 
-FAIL Untitled assert_equals: Security Error thrown expected "SecurityError" but got "ReferenceError"
+FAIL document_access_parent_access assert_equals: Security Error thrown expected "SecurityError" but got "ReferenceError"
 
index 537c51b..598d49a 100644 (file)
@@ -1,5 +1,7 @@
 CONSOLE MESSAGE: line 19: Unsafe JavaScript attempt to initiate navigation for frame with URL 'about:blank' from frame with URL 'http://localhost:8800/html/browsers/windows/targeting-cross-origin-nested-browsing-contexts.html'. The frame attempting navigation is neither same-origin with the target, nor is it the target's parent or opener.
 
+CONSOLE MESSAGE: Unsafe JavaScript attempt to initiate navigation for frame with URL 'about:blank' from frame with URL 'http://localhost:8800/html/browsers/windows/targeting-cross-origin-nested-browsing-contexts.html'. The frame attempting navigation is neither same-origin with the target, nor is it the target's parent or opener.
+
 
 PASS Targeting nested browsing contexts 
 
index 62c6a4d..70c171b 100644 (file)
@@ -22,22 +22,22 @@ CONSOLE MESSAGE: line 820: The language contains a null character and is not a v
 CONSOLE MESSAGE: line 820: The language 'null' is not a valid BCP 47 language tag.
 CONSOLE MESSAGE: line 820: The language 'test-toString' is not a valid BCP 47 language tag.
 CONSOLE MESSAGE: line 820: The language 'test-valueOf' is not a valid BCP 47 language tag.
-CONSOLE MESSAGE: line 1489: The language contains a null character and is not a valid BCP 47 language tag.
-CONSOLE MESSAGE: line 1489: The language 'undefined' is not a valid BCP 47 language tag.
-CONSOLE MESSAGE: line 1489: The language '7' is not a valid BCP 47 language tag.
-CONSOLE MESSAGE: line 1489: The language '1.5' is not a valid BCP 47 language tag.
-CONSOLE MESSAGE: line 1489: The language '5%' is not a valid BCP 47 language tag.
-CONSOLE MESSAGE: line 1489: The language '+100' is not a valid BCP 47 language tag.
-CONSOLE MESSAGE: line 1489: The language '.5' is not a valid BCP 47 language tag.
-CONSOLE MESSAGE: line 1489: The language 'true' is not a valid BCP 47 language tag.
-CONSOLE MESSAGE: line 1489: The language 'false' is not a valid BCP 47 language tag.
-CONSOLE MESSAGE: line 1489: The language '[object Object]' is not a valid BCP 47 language tag.
-CONSOLE MESSAGE: line 1489: The language 'Infinity' is not a valid BCP 47 language tag.
-CONSOLE MESSAGE: line 1489: The language '-Infinity' is not a valid BCP 47 language tag.
-CONSOLE MESSAGE: line 1489: The language contains a null character and is not a valid BCP 47 language tag.
-CONSOLE MESSAGE: line 1489: The language 'null' is not a valid BCP 47 language tag.
-CONSOLE MESSAGE: line 1489: The language 'test-toString' is not a valid BCP 47 language tag.
-CONSOLE MESSAGE: line 1489: The language 'test-valueOf' is not a valid BCP 47 language tag.
+CONSOLE MESSAGE: line 1611: The language contains a null character and is not a valid BCP 47 language tag.
+CONSOLE MESSAGE: line 1611: The language 'undefined' is not a valid BCP 47 language tag.
+CONSOLE MESSAGE: line 1611: The language '7' is not a valid BCP 47 language tag.
+CONSOLE MESSAGE: line 1611: The language '1.5' is not a valid BCP 47 language tag.
+CONSOLE MESSAGE: line 1611: The language '5%' is not a valid BCP 47 language tag.
+CONSOLE MESSAGE: line 1611: The language '+100' is not a valid BCP 47 language tag.
+CONSOLE MESSAGE: line 1611: The language '.5' is not a valid BCP 47 language tag.
+CONSOLE MESSAGE: line 1611: The language 'true' is not a valid BCP 47 language tag.
+CONSOLE MESSAGE: line 1611: The language 'false' is not a valid BCP 47 language tag.
+CONSOLE MESSAGE: line 1611: The language '[object Object]' is not a valid BCP 47 language tag.
+CONSOLE MESSAGE: line 1611: The language 'Infinity' is not a valid BCP 47 language tag.
+CONSOLE MESSAGE: line 1611: The language '-Infinity' is not a valid BCP 47 language tag.
+CONSOLE MESSAGE: line 1611: The language contains a null character and is not a valid BCP 47 language tag.
+CONSOLE MESSAGE: line 1611: The language 'null' is not a valid BCP 47 language tag.
+CONSOLE MESSAGE: line 1611: The language 'test-toString' is not a valid BCP 47 language tag.
+CONSOLE MESSAGE: line 1611: The language 'test-valueOf' is not a valid BCP 47 language tag.
 Implementers looking to fix bugs might want to use the original version of this suite's test framework, which conveniently aggregates similar errors and only reports failures. This file is (part of) the authoritative conformance test suite, and is suitable for incorporation into automated test suites.
 
 
index a043c2b..34577c9 100644 (file)
@@ -1,4 +1,4 @@
-CONSOLE MESSAGE: line 2659: Error: assert_equals: Number of attributes on the child document's body expected 0 but got 2
+CONSOLE MESSAGE: line 3082: Error: assert_equals: Number of attributes on the child document's body expected 0 but got 2
 
 
 FAIL iframe marginwidth and marginheight Error: assert_equals: Number of attributes on the child document's body expected 0 but got 2
index 494894a..1ecd997 100644 (file)
@@ -1,4 +1,4 @@
-CONSOLE MESSAGE: line 2659: Error: assert_unreached: Got more than 1 load event Reached unreachable code
+CONSOLE MESSAGE: line 3082: Error: assert_unreached: Got more than 1 load event Reached unreachable code
 
 FAIL Meta refresh only applies while in the document tree, not in a shadow tree Error: assert_unreached: Got more than 1 load event Reached unreachable code
 
index 0befb42..c5845d3 100644 (file)
@@ -1,9 +1,9 @@
 CONSOLE MESSAGE: line 43: The language contains a null character and is not a valid BCP 47 language tag.
 CONSOLE MESSAGE: line 64: The language ' foo 
 ' is not a valid BCP 47 language tag.
-CONSOLE MESSAGE: line 1489: The language ' foo 
+CONSOLE MESSAGE: line 1611: The language ' foo 
 ' is not a valid BCP 47 language tag.
-CONSOLE MESSAGE: line 1489: The language contains a null character and is not a valid BCP 47 language tag.
+CONSOLE MESSAGE: line 1611: The language contains a null character and is not a valid BCP 47 language tag.
 
 PASS HTMLTrackElement.srclang missing value 
 PASS HTMLTrackElement.srclang empty string content attribute 
index 7ce87d9..9334c9e 100644 (file)
@@ -1,4 +1,4 @@
-CONSOLE MESSAGE: line 1489: The language contains a null character and is not a valid BCP 47 language tag.
+CONSOLE MESSAGE: line 1611: The language contains a null character and is not a valid BCP 47 language tag.
 CONSOLE MESSAGE: line 26: The language contains a null character and is not a valid BCP 47 language tag.
 
 PASS TextTrack.language 
index 6f2739b..4195e54 100644 (file)
@@ -1,3 +1,3 @@
-CONSOLE MESSAGE: line 1489: Blocked a frame with origin "http://localhost:8800" from accessing a frame with origin "null".  The frame requesting access has a protocol of "http", the frame being accessed has a protocol of "data". Protocols must match.
+CONSOLE MESSAGE: line 1611: Blocked a frame with origin "http://localhost:8800" from accessing a frame with origin "null".  The frame requesting access has a protocol of "http", the frame being accessed has a protocol of "data". Protocols must match.
 
 
index efe4f33..7c74808 100644 (file)
@@ -1,4 +1,4 @@
-CONSOLE MESSAGE: line 1489: Blocked a frame with origin "http://localhost:8800" from accessing a frame with origin "null".  The frame requesting access has a protocol of "http", the frame being accessed has a protocol of "data". Protocols must match.
+CONSOLE MESSAGE: line 1611: Blocked a frame with origin "http://localhost:8800" from accessing a frame with origin "null".  The frame requesting access has a protocol of "http", the frame being accessed has a protocol of "data". Protocols must match.
 
 CONSOLE MESSAGE: line 15: Blocked a frame with origin "http://localhost:8800" from accessing a frame with origin "null".  The frame requesting access has a protocol of "http", the frame being accessed has a protocol of "data". Protocols must match.
 
index a9a1441..94d3151 100644 (file)
@@ -1,4 +1,4 @@
-CONSOLE MESSAGE: line 1489: Error while parsing the 'sandbox' attribute: 'allow-downloads-without-user-activation' is an invalid sandbox flag.
+CONSOLE MESSAGE: line 1611: Error while parsing the 'sandbox' attribute: 'allow-downloads-without-user-activation' is an invalid sandbox flag.
 CONSOLE MESSAGE: Blocked script execution in 'about:srcdoc' because the document's frame is sandboxed and the 'allow-scripts' permission is not set.
 
 
index ecbe3ff..f8d866a 100644 (file)
@@ -1,4 +1,4 @@
-CONSOLE MESSAGE: line 1489: Sandbox access violation: Blocked a frame at "http://localhost:8800" from accessing a frame at "http://localhost:8800".  The frame being accessed is sandboxed and lacks the "allow-same-origin" flag.
+CONSOLE MESSAGE: line 1611: Sandbox access violation: Blocked a frame at "http://localhost:8800" from accessing a frame at "http://localhost:8800".  The frame being accessed is sandboxed and lacks the "allow-same-origin" flag.
 
 PASS Block parent content to access sandbox child iframe content when sandbox attribute exists 
 
index 97c7415..2b20f38 100644 (file)
@@ -1,4 +1,4 @@
-CONSOLE MESSAGE: line 1489: Blocked a frame with origin "http://localhost:8800" from accessing a frame with origin "null".  The frame requesting access has a protocol of "http", the frame being accessed has a protocol of "data". Protocols must match.
+CONSOLE MESSAGE: line 1611: Blocked a frame with origin "http://localhost:8800" from accessing a frame with origin "null".  The frame requesting access has a protocol of "http", the frame being accessed has a protocol of "data". Protocols must match.
 
 CONSOLE MESSAGE: line 15: Blocked a frame with origin "http://localhost:8800" from accessing a frame with origin "null".  The frame requesting access has a protocol of "http", the frame being accessed has a protocol of "data". Protocols must match.
 
index ba5c881..d848c62 100644 (file)
@@ -1,7 +1,7 @@
 CONSOLE MESSAGE: line 50: ReferenceError: Can't find variable: BroadcastChannel
 
 
-Harness Error (FAIL), message = Test named 'Check that targeting of rel=noopener with a given name reuses an existing window with that name' specified 1 'cleanup' function, and 1 failed.
+Harness Error (FAIL), message = ReferenceError: Can't find variable: BroadcastChannel
 
 PASS Check that rel=noopener with target=_self does a normal load 
 PASS Check that rel=noopener with target=_parent does a normal load 
index 6e51162..999449c 100644 (file)
@@ -1,5 +1,5 @@
 CONSOLE MESSAGE: line 1: TypeError: null is not an object (evaluating 'top.log')
-CONSOLE MESSAGE: line 1401: Error: Tried to create a test with file_is_test
+CONSOLE MESSAGE: line 1515: Error: Tried to create a test with file_is_test
 FAILED (This TC requires JavaScript enabled)
 
 FAIL  scheduler: event listener defined by script in a removed IFRAME TypeError: null is not an object (evaluating 'top.log')
index 13344ac..d32fd47 100644 (file)
@@ -1,7 +1,7 @@
 CONSOLE MESSAGE: line 2: ReferenceError: Can't find variable: executed_utf8_bom
 CONSOLE MESSAGE: line 2: ReferenceError: Can't find variable: executed_utf16be_bom
 CONSOLE MESSAGE: line 2: ReferenceError: Can't find variable: executed_utf16le_bom
-CONSOLE MESSAGE: line 1401: Error: Tried to create a test with file_is_test
+CONSOLE MESSAGE: line 1515: Error: Tried to create a test with file_is_test
 
 PASS Module scripts should ignore BOMs and always use UTF-8 
 
index f51778b..28738c1 100644 (file)
@@ -1,15 +1,15 @@
 Blocked access to external URL http://www2.localhost:8800/html/semantics/scripting-1/the-script-element/module/crossorigin-scripterror.js?pipe=header(Access-Control-Allow-Origin,*)
 Blocked access to external URL http://www2.localhost:8800/html/semantics/scripting-1/the-script-element/module/crossorigin-scripterror.js
 Blocked access to external URL http://www2.localhost:8800/html/semantics/scripting-1/the-script-element/module/crossorigin-scripterror.js
-Blocked access to external URL http://www2.localhost:8800/html/semantics/scripting-1/the-script-element/module/crossorigin-scripterror.js?pipe=header(Access-Control-Allow-Origin,*)
 Blocked access to external URL http://www2.localhost:8800/html/semantics/scripting-1/the-script-element/module/crossorigin-scripterror.js
+Blocked access to external URL http://www2.localhost:8800/html/semantics/scripting-1/the-script-element/module/crossorigin-scripterror.js?pipe=header(Access-Control-Allow-Origin,*)
 Blocked access to external URL http://www2.localhost:8800/html/semantics/scripting-1/the-script-element/module/crossorigin-scripterror.js
 Blocked access to external URL http://www2.localhost:8800/html/semantics/scripting-1/the-script-element/module/crossorigin-scripterror.js?pipe=header(Access-Control-Allow-Origin,http://www2.localhost:8800)
-Blocked access to external URL http://www2.localhost:8800/html/semantics/scripting-1/the-script-element/module/crossorigin-scripterror.js
 Blocked access to external URL http://www2.localhost:8800/html/semantics/scripting-1/the-script-element/module/crossorigin-scripterror.js?pipe=header(Access-Control-Allow-Origin,*)
 Blocked access to external URL http://www2.localhost:8800/html/semantics/scripting-1/the-script-element/module/crossorigin-scripterror.js?pipe=header(Access-Control-Allow-Origin,http://www2.localhost:8800)
 Blocked access to external URL http://www2.localhost:8800/html/semantics/scripting-1/the-script-element/module/crossorigin-scripterror.js?pipe=header(Access-Control-Allow-Origin,http://www2.localhost:8800)
 Blocked access to external URL http://www2.localhost:8800/html/semantics/scripting-1/the-script-element/module/crossorigin-scripterror.js
+Blocked access to external URL http://www2.localhost:8800/html/semantics/scripting-1/the-script-element/module/crossorigin-scripterror.js
 html-script-module-crossOrigin
 
            
index eee7d6e..f3da59d 100644 (file)
@@ -1,7 +1,7 @@
 CONSOLE MESSAGE: line 34: SyntaxError: Unexpected identifier 'script'
-CONSOLE MESSAGE: line 1401: Error: Tried to create a test with file_is_test
-CONSOLE MESSAGE: line 1401: Error: Tried to create a test with file_is_test
-CONSOLE MESSAGE: line 1401: Error: Tried to create a test with file_is_test
+CONSOLE MESSAGE: line 1515: Error: Tried to create a test with file_is_test
+CONSOLE MESSAGE: line 1515: Error: Tried to create a test with file_is_test
+CONSOLE MESSAGE: line 1515: Error: Tried to create a test with file_is_test
 
 PASS window.onerror: parse errors 
 
index c98f36c..56c1892 100644 (file)
@@ -1,7 +1,7 @@
 CONSOLE MESSAGE: line 36: TypeError: undefined is not an object (evaluating 'window.nonexistentproperty.oops')
-CONSOLE MESSAGE: line 1401: Error: Tried to create a test with file_is_test
-CONSOLE MESSAGE: line 1401: Error: Tried to create a test with file_is_test
-CONSOLE MESSAGE: line 1401: Error: Tried to create a test with file_is_test
+CONSOLE MESSAGE: line 1515: Error: Tried to create a test with file_is_test
+CONSOLE MESSAGE: line 1515: Error: Tried to create a test with file_is_test
+CONSOLE MESSAGE: line 1515: Error: Tried to create a test with file_is_test
 
 PASS window.onerror: runtime scripterrors 
 
index ebe9e0a..305c103 100644 (file)
@@ -1,4 +1,4 @@
-CONSOLE MESSAGE: line 2659: Error: assert_unreached: Reached unreachable code
+CONSOLE MESSAGE: line 3082: Error: assert_unreached: Reached unreachable code
 
 PASS Negative timeout in setTimeout 
 
index 57a09c3..76fcb26 100644 (file)
@@ -5,5 +5,7 @@ Description
 This test checks that the video and audio tracks of MediaStream object returned by the success callback in getUserMedia are correctly set into inactive state when permission is revoked.
 
 
+Harness Error (TIMEOUT), message = null
+
 TIMEOUT Tests that the video MediaStreamTrack objects are properly ended on permission revocation Test timed out
 
index 3f6ce93..6f714f3 100644 (file)
@@ -1,6 +1,6 @@
 CONSOLE MESSAGE: Refused to load http://localhost:8800/preload/resources/dummy.js?from-header&without-nonce because it does not appear in the script-src directive of the Content Security Policy.
 CONSOLE MESSAGE: Refused to load http://localhost:8800/preload/resources/dummy.js?from-header&with-nonce because it does not appear in the script-src directive of the Content Security Policy.
-CONSOLE MESSAGE: line 2659: Error: assert_equals: resources/dummy.js?from-header&with-nonce expected 1 but got 0
+CONSOLE MESSAGE: line 3082: Error: assert_equals: resources/dummy.js?from-header&with-nonce expected 1 but got 0
 
 FAIL Makes sure that Link headers preload resources with CSP nonce Error: assert_equals: resources/dummy.js?from-header&with-nonce expected 1 but got 0
 
index 8a8b3ba..c1d4a0d 100644 (file)
@@ -1,6 +1,6 @@
 Blocked access to external URL http://www.localhost:8800/resource-timing/resources/TAOResponse.py?tao=match_origin
 CONSOLE MESSAGE: line 13: NetworkError:  A network error occurred.
-CONSOLE MESSAGE: line 2659: Error: assert_greater_than: The iframe should have at least one resource timing entry. expected a number greater than 0 but got 0
+CONSOLE MESSAGE: line 3082: Error: assert_greater_than: The iframe should have at least one resource timing entry. expected a number greater than 0 but got 0
 Description
 
 This test validates that for a cross origin resource, the timing allow check algorithm will pass when the Timing-Allow-Origin header value list contains a case-sensitive match for the value of the origin of the current document.
index b411367..bb26608 100644 (file)
@@ -1,6 +1,6 @@
 Blocked access to external URL http://www.localhost:8800/resource-timing/resources/TAOResponse.py?tao=match_wildcard
 CONSOLE MESSAGE: line 13: NetworkError:  A network error occurred.
-CONSOLE MESSAGE: line 2659: Error: assert_greater_than: The iframe should have at least one resource timing entry. expected a number greater than 0 but got 0
+CONSOLE MESSAGE: line 3082: Error: assert_greater_than: The iframe should have at least one resource timing entry. expected a number greater than 0 but got 0
 Description
 
 This test validates that for a cross origin resource, the timing allow check algorithm will pass when the Timing-Allow-Origin header value list contains a wildcard ("*").
index bf24e51..5962f43 100644 (file)
@@ -1,6 +1,6 @@
 Blocked access to external URL http://www.localhost:8800/resource-timing/resources/TAOResponse.py?tao=multi
 CONSOLE MESSAGE: line 13: NetworkError:  A network error occurred.
-CONSOLE MESSAGE: line 2659: Error: assert_greater_than: The iframe should have at least one resource timing entry. expected a number greater than 0 but got 0
+CONSOLE MESSAGE: line 3082: Error: assert_greater_than: The iframe should have at least one resource timing entry. expected a number greater than 0 but got 0
 Description
 
 This test validates that for a cross origin resource, the timing allow check algorithm will pass when the HTTP response has multiple Timing-Allow-Origin header fields and the subsequent field value is separated by a comma.
index 59205ed..a123d12 100644 (file)
@@ -1,5 +1,5 @@
 Blocked access to external URL http://www.localhost:8800/resource-timing/resources/TAOResponse.py?tao=multi_wildcard
-CONSOLE MESSAGE: line 2659: Error: assert_greater_than: The iframe should have at least one resource timing entry. expected a number greater than 0 but got 0
+CONSOLE MESSAGE: line 3082: Error: assert_greater_than: The iframe should have at least one resource timing entry. expected a number greater than 0 but got 0
 Description
 
 This test validates that for a cross origin resource, the timing allow check algorithm will pass when the HTTP response has multiple Timing-Allow-Origin header fields and the subsequent field value is separated by a comma.
index 8e35309..ff1bd86 100644 (file)
@@ -1,6 +1,6 @@
 Blocked access to external URL http://www.localhost:8800/resource-timing/resources/TAOResponse.py?tao=null
 CONSOLE MESSAGE: line 13: NetworkError:  A network error occurred.
-CONSOLE MESSAGE: line 2659: Error: assert_greater_than: The iframe should have at least one resource timing entry. expected a number greater than 0 but got 0
+CONSOLE MESSAGE: line 3082: Error: assert_greater_than: The iframe should have at least one resource timing entry. expected a number greater than 0 but got 0
 Description
 
 This test validates that for a cross origin resource, the timing allow check algorithm will fail when the value of Timing-Allow-Origin is null.
index 56c7f9e..e3fe5c4 100644 (file)
@@ -1,6 +1,6 @@
 Blocked access to external URL http://www.localhost:8800/resource-timing/resources/TAOResponse.py?tao=uppercase
 CONSOLE MESSAGE: line 13: NetworkError:  A network error occurred.
-CONSOLE MESSAGE: line 2659: Error: assert_greater_than: The iframe should have at least one resource timing entry. expected a number greater than 0 but got 0
+CONSOLE MESSAGE: line 3082: Error: assert_greater_than: The iframe should have at least one resource timing entry. expected a number greater than 0 but got 0
 Description
 
 This test validates that for a cross origin resource, the timing allow check algorithm will fail when the value of Timing-Allow-Origin is NOT a case-sensitive match for the value of the origin of the current document.
index 870e7e4..bc0b7e5 100644 (file)
@@ -1,6 +1,6 @@
 Blocked access to external URL http://www.localhost:8800/resource-timing/resources/TAOResponse.py?tao=space
 CONSOLE MESSAGE: line 13: NetworkError:  A network error occurred.
-CONSOLE MESSAGE: line 2659: Error: assert_greater_than: The iframe should have at least one resource timing entry. expected a number greater than 0 but got 0
+CONSOLE MESSAGE: line 3082: Error: assert_greater_than: The iframe should have at least one resource timing entry. expected a number greater than 0 but got 0
 Description
 
 This test validates that for a cross origin resource, the timing allow check algorithm will fail if the Timing-Allow-Origin header value list contains [origin|*]{2,}, separated by space.
index 37cc02a..3a38983 100644 (file)
@@ -1,6 +1,6 @@
 Blocked access to external URL http://www.localhost:8800/resource-timing/resources/TAOResponse.py?tao=wildcard
 CONSOLE MESSAGE: line 13: NetworkError:  A network error occurred.
-CONSOLE MESSAGE: line 2659: Error: assert_greater_than: The iframe should have at least one resource timing entry. expected a number greater than 0 but got 0
+CONSOLE MESSAGE: line 3082: Error: assert_greater_than: The iframe should have at least one resource timing entry. expected a number greater than 0 but got 0
 Description
 
 This test validates that for a cross origin resource, the timing allow check algorithm will pass when the Timing-Allow-Origin header value is a wildcard ("*").
index aa0d907..1559104 100644 (file)
@@ -10,10 +10,10 @@ policies and contribution forms [3].
 [3] http://www.w3.org/2004/10/27-testcases
 */
 
-/* Documentation: http://web-platform-tests.org/writing-tests/testharness-api.html
+/* Documentation: https://web-platform-tests.org/writing-tests/testharness-api.html
  * (../docs/_writing-tests/testharness-api.md) */
 
-(function ()
+(function (global_scope)
 {
     var debug = false;
     // default timeout is 10 seconds, test can override if needed
@@ -48,9 +48,6 @@ policies and contribution forms [3].
      *
      *   // Should return the test harness timeout duration in milliseconds.
      *   float test_timeout();
-     *
-     *   // Should return the global scope object.
-     *   object global_scope();
      * };
      */
 
@@ -148,9 +145,9 @@ policies and contribution forms [3].
     };
 
     WindowTestEnvironment.prototype._forEach_windows = function(callback) {
-        // Iterate of the the windows [self ... top, opener]. The callback is passed
-        // two objects, the first one is the windows object itself, the second one
-        // is a boolean indicating whether or not its on the same origin as the
+        // Iterate over the windows [self ... top, opener]. The callback is passed
+        // two objects, the first one is the window object itself, the second one
+        // is a boolean indicating whether or not it's on the same origin as the
         // current window.
         var cache = this.window_cache;
         if (!cache) {
@@ -216,12 +213,9 @@ policies and contribution forms [3].
     }
 
     WindowTestEnvironment.prototype.next_default_test_name = function() {
-        //Don't use document.title to work around an Opera bug in XHTML documents
-        var title = document.getElementsByTagName("title")[0];
-        var prefix = (title && title.firstChild && title.firstChild.data) || "Untitled";
         var suffix = this.name_counter > 0 ? " " + this.name_counter : "";
         this.name_counter++;
-        return prefix + suffix;
+        return get_title() + suffix;
     };
 
     WindowTestEnvironment.prototype.on_new_harness_properties = function(properties) {
@@ -248,10 +242,6 @@ policies and contribution forms [3].
         return settings.harness_timeout.normal;
     };
 
-    WindowTestEnvironment.prototype.global_scope = function() {
-        return window;
-    };
-
     /*
      * Base TestEnvironment implementation for a generic web worker.
      *
@@ -295,7 +285,7 @@ policies and contribution forms [3].
     WorkerTestEnvironment.prototype.next_default_test_name = function() {
         var suffix = this.name_counter > 0 ? " " + this.name_counter : "";
         this.name_counter++;
-        return "Untitled" + suffix;
+        return get_title() + suffix;
     };
 
     WorkerTestEnvironment.prototype.on_new_harness_properties = function() {};
@@ -344,10 +334,6 @@ policies and contribution forms [3].
         return null;
     };
 
-    WorkerTestEnvironment.prototype.global_scope = function() {
-        return self;
-    };
-
     /*
      * Dedicated web workers.
      * https://html.spec.whatwg.org/multipage/workers.html#dedicatedworkerglobalscope
@@ -462,53 +448,115 @@ policies and contribution forms [3].
         }
     };
 
+    /*
+     * JavaScript shells.
+     *
+     * This class is used as the test_environment when testharness is running
+     * inside a JavaScript shell.
+     */
+    function ShellTestEnvironment() {
+        this.name_counter = 0;
+        this.all_loaded = false;
+        this.on_loaded_callback = null;
+        Promise.resolve().then(function() {
+            this.all_loaded = true
+            if (this.on_loaded_callback) {
+                this.on_loaded_callback();
+            }
+        }.bind(this));
+        this.message_list = [];
+        this.message_ports = [];
+    }
+
+    ShellTestEnvironment.prototype.next_default_test_name = function() {
+        var suffix = this.name_counter > 0 ? " " + this.name_counter : "";
+        this.name_counter++;
+        return "Untitled" + suffix;
+    };
+
+    ShellTestEnvironment.prototype.on_new_harness_properties = function() {};
+
+    ShellTestEnvironment.prototype.on_tests_ready = function() {};
+
+    ShellTestEnvironment.prototype.add_on_loaded_callback = function(callback) {
+        if (this.all_loaded) {
+            callback();
+        } else {
+            this.on_loaded_callback = callback;
+        }
+    };
+
+    ShellTestEnvironment.prototype.test_timeout = function() {
+        // Tests running in a shell don't have a default timeout, so behave as
+        // if settings.explicit_timeout is true.
+        return null;
+    };
+
     function create_test_environment() {
-        if ('document' in self) {
+        if ('document' in global_scope) {
             return new WindowTestEnvironment();
         }
-        if ('DedicatedWorkerGlobalScope' in self &&
-            self instanceof DedicatedWorkerGlobalScope) {
+        if ('DedicatedWorkerGlobalScope' in global_scope &&
+            global_scope instanceof DedicatedWorkerGlobalScope) {
             return new DedicatedWorkerTestEnvironment();
         }
-        if ('SharedWorkerGlobalScope' in self &&
-            self instanceof SharedWorkerGlobalScope) {
+        if ('SharedWorkerGlobalScope' in global_scope &&
+            global_scope instanceof SharedWorkerGlobalScope) {
             return new SharedWorkerTestEnvironment();
         }
-        if ('ServiceWorkerGlobalScope' in self &&
-            self instanceof ServiceWorkerGlobalScope) {
+        if ('ServiceWorkerGlobalScope' in global_scope &&
+            global_scope instanceof ServiceWorkerGlobalScope) {
             return new ServiceWorkerTestEnvironment();
         }
-        if ('WorkerGlobalScope' in self &&
-            self instanceof WorkerGlobalScope) {
+        if ('WorkerGlobalScope' in global_scope &&
+            global_scope instanceof WorkerGlobalScope) {
             return new DedicatedWorkerTestEnvironment();
         }
 
+        if (!('location' in global_scope)) {
+            return new ShellTestEnvironment();
+        }
+
         throw new Error("Unsupported test environment");
     }
 
     var test_environment = create_test_environment();
 
     function is_shared_worker(worker) {
-        return 'SharedWorker' in self && worker instanceof SharedWorker;
+        return 'SharedWorker' in global_scope && worker instanceof SharedWorker;
     }
 
     function is_service_worker(worker) {
         // The worker object may be from another execution context,
         // so do not use instanceof here.
-        return 'ServiceWorker' in self &&
+        return 'ServiceWorker' in global_scope &&
             Object.prototype.toString.call(worker) == '[object ServiceWorker]';
     }
 
     /*
      * API functions
      */
-
     function test(func, name, properties)
     {
         var test_name = name ? name : test_environment.next_default_test_name();
         properties = properties ? properties : {};
         var test_obj = new Test(test_name, properties);
-        test_obj.step(func, test_obj, test_obj);
+        var value = test_obj.step(func, test_obj, test_obj);
+
+        if (value !== undefined) {
+            var msg = "Test named \"" + test_name +
+                "\" inappropriately returned a value";
+
+            try {
+                if (value && value.hasOwnProperty("then")) {
+                    msg += ", consider using `promise_test` instead";
+                }
+            } catch (err) {}
+
+            tests.status.status = tests.status.ERROR;
+            tests.status.message = msg;
+        }
+
         if (test_obj.phase === test_obj.phases.STARTED) {
             test_obj.done();
         }
@@ -532,31 +580,47 @@ policies and contribution forms [3].
 
     function promise_test(func, name, properties) {
         var test = async_test(name, properties);
+        test._is_promise_test = true;
+
         // If there is no promise tests queue make one.
         if (!tests.promise_tests) {
             tests.promise_tests = Promise.resolve();
         }
         tests.promise_tests = tests.promise_tests.then(function() {
-            var donePromise = new Promise(function(resolve) {
-                test._add_cleanup(resolve);
-            });
-            var promise = test.step(func, test, test);
-            test.step(function() {
-                assert_not_equals(promise, undefined);
-            });
-            Promise.resolve(promise).then(
-                    function() {
+            return new Promise(function(resolve) {
+                var promise = test.step(func, test, test);
+
+                test.step(function() {
+                    assert(!!promise, "promise_test", null,
+                           "test body must return a 'thenable' object (received ${value})",
+                           {value:promise});
+                    assert(typeof promise.then === "function", "promise_test", null,
+                           "test body must return a 'thenable' object (received an object with no `then` method)",
+                           null);
+                });
+
+                // Test authors may use the `step` method within a
+                // `promise_test` even though this reflects a mixture of
+                // asynchronous control flow paradigms. The "done" callback
+                // should be registered prior to the resolution of the
+                // user-provided Promise to avoid timeouts in cases where the
+                // Promise does not settle but a `step` function has thrown an
+                // error.
+                add_test_done_callback(test, resolve);
+
+                Promise.resolve(promise)
+                    .catch(test.step_func(
+                        function(value) {
+                            if (value instanceof AssertionError) {
+                                throw value;
+                            }
+                            assert(false, "promise_test", null,
+                                   "Unhandled rejection with value: ${value}", {value:value});
+                        }))
+                    .then(function() {
                         test.done();
-                    })
-                .catch(test.step_func(
-                    function(value) {
-                        if (value instanceof AssertionError) {
-                            throw value;
-                        }
-                        assert(false, "promise_test", null,
-                               "Unhandled rejection with value: ${value}", {value:value});
-                    }));
-            return donePromise;
+                    });
+                });
         });
     }
 
@@ -571,7 +635,7 @@ policies and contribution forms [3].
      * which can make it a lot easier to test a very specific series of events,
      * including ensuring that unexpected events are not fired at any point.
      */
-    function EventWatcher(test, watchedNode, eventTypes)
+    function EventWatcher(test, watchedNode, eventTypes, timeoutPromise)
     {
         if (typeof eventTypes == 'string') {
             eventTypes = [eventTypes];
@@ -616,7 +680,7 @@ policies and contribution forms [3].
 
         /**
          * Returns a Promise that will resolve after the specified event or
-         * series of events has occured.
+         * series of events has occurred.
          *
          * @param options An optional options object. If the 'record' property
          *                on this object has the value 'all', when the Promise
@@ -648,6 +712,27 @@ policies and contribution forms [3].
                 recordedEvents = [];
             }
             return new Promise(function(resolve, reject) {
+                var timeout = test.step_func(function() {
+                    // If the timeout fires after the events have been received
+                    // or during a subsequent call to wait_for, ignore it.
+                    if (!waitingFor || waitingFor.resolve !== resolve)
+                        return;
+
+                    // This should always fail, otherwise we should have
+                    // resolved the promise.
+                    assert_true(waitingFor.types.length == 0,
+                                'Timed out waiting for ' + waitingFor.types.join(', '));
+                    var result = recordedEvents;
+                    recordedEvents = null;
+                    var resolveFunc = waitingFor.resolve;
+                    waitingFor = null;
+                    resolveFunc(result);
+                });
+
+                if (timeoutPromise) {
+                    timeoutPromise().then(timeout);
+                }
+
                 waitingFor = {
                     types: types,
                     resolve: resolve,
@@ -689,6 +774,8 @@ policies and contribution forms [3].
             tests.set_file_is_test();
         }
         if (tests.file_is_test) {
+            // file is test files never have asynchronous cleanup logic,
+            // meaning the fully-synchronous `done` function can be used here.
             tests.tests[0].done();
         }
         tests.end_wait();
@@ -963,6 +1050,9 @@ policies and contribution forms [3].
 
     function assert_object_equals(actual, expected, description)
     {
+         assert(typeof actual === "object" && actual !== null, "assert_object_equals", description,
+                                                               "value is ${actual}, expected object",
+                                                               {actual: actual});
          //This needs to be improved a great deal
          function check_equal(actual, expected, stack)
          {
@@ -1022,7 +1112,7 @@ policies and contribution forms [3].
     function assert_array_approx_equals(actual, expected, epsilon, description)
     {
         /*
-         * Test if two primitive arrays are equal withing +/- epsilon
+         * Test if two primitive arrays are equal within +/- epsilon
          */
         assert(actual.length === expected.length,
                "assert_array_approx_equals", description,
@@ -1042,7 +1132,7 @@ policies and contribution forms [3].
             assert(Math.abs(actual[i] - expected[i]) <= epsilon,
                    "assert_array_approx_equals", description,
                    "property ${i}, expected ${expected} +/- ${epsilon}, expected ${expected} but got ${actual}",
-                   {i:i, expected:expected[i], actual:actual[i]});
+                   {i:i, expected:expected[i], actual:actual[i], epsilon:epsilon});
         }
     }
     expose(assert_array_approx_equals, "assert_array_approx_equals");
@@ -1050,7 +1140,7 @@ policies and contribution forms [3].
     function assert_approx_equals(actual, expected, epsilon, description)
     {
         /*
-         * Test if two primitive numbers are equal withing +/- epsilon
+         * Test if two primitive numbers are equal within +/- epsilon
          */
         assert(typeof actual === "number",
                "assert_approx_equals", description,
@@ -1186,24 +1276,19 @@ policies and contribution forms [3].
     expose(assert_class_string, "assert_class_string");
 
 
-    function _assert_own_property(name) {
-        return function(object, property_name, description)
-        {
-            assert(object.hasOwnProperty(property_name),
-                   name, description,
-                   "expected property ${p} missing", {p:property_name});
-        };
+    function assert_own_property(object, property_name, description) {
+        assert(object.hasOwnProperty(property_name),
+               "assert_own_property", description,
+               "expected property ${p} missing", {p:property_name});
     }
-    expose(_assert_own_property("assert_exists"), "assert_exists");
-    expose(_assert_own_property("assert_own_property"), "assert_own_property");
+    expose(assert_own_property, "assert_own_property");
 
-    function assert_not_exists(object, property_name, description)
-    {
+    function assert_not_own_property(object, property_name, description) {
         assert(!object.hasOwnProperty(property_name),
-               "assert_not_exists", description,
-               "unexpected property ${p} found", {p:property_name});
+               "assert_not_own_property", description,
+               "unexpected property ${p} is found on object", {p:property_name});
     }
-    expose(assert_not_exists, "assert_not_exists");
+    expose(assert_not_own_property, "assert_not_own_property");
 
     function _assert_inherits(name) {
         return function (object, property_name, description)
@@ -1247,6 +1332,13 @@ policies and contribution forms [3].
     }
     expose(assert_readonly, "assert_readonly");
 
+    /**
+     * Assert an Exception with the expected code is thrown.
+     *
+     * @param {object|number|string} code The expected exception code.
+     * @param {Function} func Function which should throw.
+     * @param {string} description Error description for the case that the error is not thrown.
+     */
     function assert_throws(code, func, description)
     {
         try {
@@ -1257,11 +1349,22 @@ policies and contribution forms [3].
             if (e instanceof AssertionError) {
                 throw e;
             }
+
+            assert(typeof e === "object",
+                   "assert_throws", description,
+                   "${func} threw ${e} with type ${type}, not an object",
+                   {func:func, e:e, type:typeof e});
+
+            assert(e !== null,
+                   "assert_throws", description,
+                   "${func} threw null, not an object",
+                   {func:func});
+
             if (code === null) {
                 throw new AssertionError('Test bug: need to pass exception to assert_throws()');
             }
             if (typeof code === "object") {
-                assert(typeof e == "object" && "name" in e && e.name == code.name,
+                assert("name" in e && e.name == code.name,
                        "assert_throws", description,
                        "${func} threw ${actual} (${actual_name}) expected ${expected} (${expected_name})",
                                     {func:func, actual:e, actual_name:e.name,
@@ -1333,15 +1436,31 @@ policies and contribution forms [3].
                 NotAllowedError: 0
             };
 
-            if (!(name in name_code_map)) {
-                throw new AssertionError('Test bug: unrecognized DOMException code "' + code + '" passed to assert_throws()');
+            var code_name_map = {};
+            for (var key in name_code_map) {
+                if (name_code_map[key] > 0) {
+                    code_name_map[name_code_map[key]] = key;
+                }
             }
 
-            var required_props = { code: name_code_map[name] };
+            var required_props = { code: code };
+
+            if (typeof code === "number") {
+                if (code === 0) {
+                    throw new AssertionError('Test bug: ambiguous DOMException code 0 passed to assert_throws()');
+                } else if (!(code in code_name_map)) {
+                    throw new AssertionError('Test bug: unrecognized DOMException code "' + code + '" passed to assert_throws()');
+                }
+                name = code_name_map[code];
+            } else if (typeof code === "string") {
+                if (!(name in name_code_map)) {
+                    throw new AssertionError('Test bug: unrecognized DOMException code "' + code + '" passed to assert_throws()');
+                }
+                required_props.code = name_code_map[name];
+            }
 
             if (required_props.code === 0 ||
-               (typeof e == "object" &&
-                "name" in e &&
+               ("name" in e &&
                 e.name !== e.name.toUpperCase() &&
                 e.name !== "DOMException")) {
                 // New style exception: also test the name property.
@@ -1353,13 +1472,8 @@ policies and contribution forms [3].
             //in.  It might be an instanceof the appropriate interface on some
             //unknown other window.  TODO: Work around this somehow?
 
-            assert(typeof e == "object",
-                   "assert_throws", description,
-                   "${func} threw ${e} with type ${type}, not an object",
-                   {func:func, e:e, type:typeof e});
-
             for (var prop in required_props) {
-                assert(typeof e == "object" && prop in e && e[prop] == required_props[prop],
+                assert(prop in e && e[prop] == required_props[prop],
                        "assert_throws", description,
                        "${func} threw ${e} that is not a DOMException " + code + ": property ${prop} is equal to ${actual}, expected ${expected}",
                        {func:func, e:e, prop:prop, actual:e[prop], expected:required_props[prop]});
@@ -1402,7 +1516,7 @@ policies and contribution forms [3].
         }
         this.name = name;
 
-        this.phase = tests.phase === tests.phases.ABORTED ?
+        this.phase = (tests.is_aborted || tests.phase === tests.phases.COMPLETE) ?
             this.phases.COMPLETE : this.phases.INITIAL;
 
         this.status = this.NOTRUN;
@@ -1410,20 +1524,27 @@ policies and contribution forms [3].
         this.index = null;
 
         this.properties = properties;
-        var timeout = properties.timeout ? properties.timeout : settings.test_timeout;
-        if (timeout !== null) {
-            this.timeout_length = timeout * tests.timeout_multiplier;
-        } else {
-            this.timeout_length = null;
+        this.timeout_length = settings.test_timeout;
+        if (this.timeout_length !== null) {
+            this.timeout_length *= tests.timeout_multiplier;
         }
 
         this.message = null;
         this.stack = null;
 
         this.steps = [];
+        this._is_promise_test = false;
 
         this.cleanup_callbacks = [];
         this._user_defined_cleanup_count = 0;
+        this._done_callbacks = [];
+
+        // Tests declared following harness completion are likely an indication
+        // of a programming error, but they cannot be reported
+        // deterministically.
+        if (tests.phase === tests.phases.COMPLETE) {
+            return;
+        }
 
         tests.push(this);
     }
@@ -1441,7 +1562,8 @@ policies and contribution forms [3].
         INITIAL:0,
         STARTED:1,
         HAS_RESULT:2,
-        COMPLETE:3
+        CLEANING:3,
+        COMPLETE:4
     };
 
     Test.prototype.structured_clone = function()
@@ -1469,7 +1591,7 @@ policies and contribution forms [3].
             return;
         }
         this.phase = this.phases.STARTED;
-        //If we don't get a result before the harness times out that will be a test timout
+        //If we don't get a result before the harness times out that will be a test timeout
         this.set_status(this.TIMEOUT, "Test timed out");
 
         tests.started = true;
@@ -1569,11 +1691,6 @@ policies and contribution forms [3].
         this._add_cleanup(callback);
     };
 
-    Test.prototype.force_timeout = function() {
-        this.set_status(this.TIMEOUT);
-        this.phase = this.phases.HAS_RESULT;
-    };
-
     Test.prototype.set_timeout = function()
     {
         if (this.timeout_length !== null) {
@@ -1600,9 +1717,15 @@ policies and contribution forms [3].
         this.done();
     };
 
+    Test.prototype.force_timeout = Test.prototype.timeout;
+
+    /**
+     * Update the test status, initiate "cleanup" functions, and signal test
+     * completion.
+     */
     Test.prototype.done = function()
     {
-        if (this.phase == this.phases.COMPLETE) {
+        if (this.phase >= this.phases.CLEANING) {
             return;
         }
 
@@ -1610,13 +1733,23 @@ policies and contribution forms [3].
             this.set_status(this.PASS, null);
         }
 
-        this.phase = this.phases.COMPLETE;
+        if (global_scope.clearTimeout) {
+            clearTimeout(this.timeout_id);
+        }
 
-        clearTimeout(this.timeout_id);
-        tests.result(this);
         this.cleanup();
     };
 
+    function add_test_done_callback(test, callback)
+    {
+        if (test.phase === test.phases.COMPLETE) {
+            callback();
+            return;
+        }
+
+        test._done_callbacks.push(callback);
+    }
+
     /*
      * Invoke all specified cleanup functions. If one or more produce an error,
      * the context is in an unpredictable state, so all further testing should
@@ -1624,29 +1757,108 @@ policies and contribution forms [3].
      */
     Test.prototype.cleanup = function() {
         var error_count = 0;
-        var total;
+        var bad_value_count = 0;
+        function on_error() {
+            error_count += 1;
+            // Abort tests immediately so that tests declared within subsequent
+            // cleanup functions are not run.
+            tests.abort();
+        }
+        var this_obj = this;
+        var results = [];
+
+        this.phase = this.phases.CLEANING;
 
         forEach(this.cleanup_callbacks,
                 function(cleanup_callback) {
+                    var result;
+
                     try {
-                        cleanup_callback();
+                        result = cleanup_callback();
                     } catch (e) {
-                        // Set test phase immediately so that tests declared
+                        on_error();
+                        return;
+                    }
+
+                    if (!is_valid_cleanup_result(this_obj, result)) {
+                        bad_value_count += 1;
+                        // Abort tests immediately so that tests declared
                         // within subsequent cleanup functions are not run.
-                        tests.phase = tests.phases.ABORTED;
-                        error_count += 1;
+                        tests.abort();
                     }
+
+                    results.push(result);
                 });
 
-        if (error_count > 0) {
-            total = this._user_defined_cleanup_count;
+        if (!this._is_promise_test) {
+            cleanup_done(this_obj, error_count, bad_value_count);
+        } else {
+            all_async(results,
+                      function(result, done) {
+                          if (result && typeof result.then === "function") {
+                              result
+                                  .then(null, on_error)
+                                  .then(done);
+                          } else {
+                              done();
+                          }
+                      },
+                      function() {
+                          cleanup_done(this_obj, error_count, bad_value_count);
+                      });
+        }
+    };
+
+    /**
+     * Determine if the return value of a cleanup function is valid for a given
+     * test. Any test may return the value `undefined`. Tests created with
+     * `promise_test` may alternatively return "thenable" object values.
+     */
+    function is_valid_cleanup_result(test, result) {
+        if (result === undefined) {
+            return true;
+        }
+
+        if (test._is_promise_test) {
+            return result && typeof result.then === "function";
+        }
+
+        return false;
+    }
+
+    function cleanup_done(test, error_count, bad_value_count) {
+        if (error_count || bad_value_count) {
+            var total = test._user_defined_cleanup_count;
+
             tests.status.status = tests.status.ERROR;
-            tests.status.message = "Test named '" + this.name +
-                "' specified " + total + " 'cleanup' function" +
-                (total > 1 ? "s" : "") + ", and " + error_count + " failed.";
+            tests.status.message = "Test named '" + test.name +
+                "' specified " + total +
+                " 'cleanup' function" + (total > 1 ? "s" : "");
+
+            if (error_count) {
+                tests.status.message += ", and " + error_count + " failed";
+            }
+
+            if (bad_value_count) {
+                var type = test._is_promise_test ?
+                   "non-thenable" : "non-undefined";
+                tests.status.message += ", and " + bad_value_count +
+                    " returned a " + type + " value";
+            }
+
+            tests.status.message += ".";
+
             tests.status.stack = null;
         }
-    };
+
+        test.phase = test.phases.COMPLETE;
+        tests.result(test);
+        forEach(test._done_callbacks,
+                function(callback) {
+                    callback();
+                });
+        test._done_callbacks.length = 0;
+    }
 
     /*
      * A RemoteTest object mirrors a Test object on a remote worker. The
@@ -1664,6 +1876,7 @@ policies and contribution forms [3].
         this.index = null;
         this.phase = this.phases.INITIAL;
         this.update_state_from(clone);
+        this._done_callbacks = [];
         tests.push(this);
     }
 
@@ -1672,6 +1885,15 @@ policies and contribution forms [3].
         Object.keys(this).forEach(
                 (function(key) {
                     var value = this[key];
+                    // `RemoteTest` instances are responsible for managing
+                    // their own "done" callback functions, so those functions
+                    // are not relevant in other execution contexts. Because of
+                    // this (and because Function values cannot be serialized
+                    // for cross-realm transmittance), the property should not
+                    // be considered when cloning instances.
+                    if (key === '_done_callbacks' ) {
+                        return;
+                    }
 
                     if (typeof value === "object" && value !== null) {
                         clone[key] = merge({}, value);
@@ -1683,7 +1905,19 @@ policies and contribution forms [3].
         return clone;
     };
 
-    RemoteTest.prototype.cleanup = function() {};
+    /**
+     * `RemoteTest` instances are objects which represent tests running in
+     * another realm. They do not define "cleanup" functions (if necessary,
+     * such functions are defined on the associated `Test` instance within the
+     * external realm). However, `RemoteTests` may have "done" callbacks (e.g.
+     * as attached by the `Tests` instance responsible for tracking the overall
+     * test status in the parent realm). The `cleanup` method delegates to
+     * `done` in order to ensure that such callbacks are invoked following the
+     * completion of the `RemoteTest`.
+     */
+    RemoteTest.prototype.cleanup = function() {
+        this.done();
+    };
     RemoteTest.prototype.phases = Test.prototype.phases;
     RemoteTest.prototype.update_state_from = function(clone) {
         this.status = clone.status;
@@ -1695,6 +1929,11 @@ policies and contribution forms [3].
     };
     RemoteTest.prototype.done = function() {
         this.phase = this.phases.COMPLETE;
+
+        forEach(this._done_callbacks,
+                function(callback) {
+                    callback();
+                });
     }
 
     /*
@@ -1708,10 +1947,18 @@ policies and contribution forms [3].
      */
     function RemoteContext(remote, message_target, message_filter) {
         this.running = true;
+        this.started = false;
         this.tests = new Array();
+        this.early_exception = null;
 
         var this_obj = this;
-        remote.onerror = function(error) { this_obj.remote_error(error); };
+        // If remote context is cross origin assigning to onerror is not
+        // possible, so silently catch those errors.
+        try {
+          remote.onerror = function(error) { this_obj.remote_error(error); };
+        } catch (e) {
+          // Ignore.
+        }
 
         // Keeping a reference to the remote object and the message handler until
         // remote_done() is seen prevents the remote object and its message channel
@@ -1720,30 +1967,57 @@ policies and contribution forms [3].
         this.message_target = message_target;
         this.message_handler = function(message) {
             var passesFilter = !message_filter || message_filter(message);
+            // The reference to the `running` property in the following
+            // condition is unnecessary because that value is only set to
+            // `false` after the `message_handler` function has been
+            // unsubscribed.
+            // TODO: Simplify the condition by removing the reference.
             if (this_obj.running && message.data && passesFilter &&
                 (message.data.type in this_obj.message_handlers)) {
                 this_obj.message_handlers[message.data.type].call(this_obj, message.data);
             }
         };
 
+        if (self.Promise) {
+            this.done = new Promise(function(resolve) {
+                this_obj.doneResolve = resolve;
+            });
+        }
+
         this.message_target.addEventListener("message", this.message_handler);
     }
 
     RemoteContext.prototype.remote_error = function(error) {
+        if (error.preventDefault) {
+            error.preventDefault();
+        }
+
+        // Defer interpretation of errors until the testing protocol has
+        // started and the remote test's `allow_uncaught_exception` property
+        // is available.
+        if (!this.started) {
+            this.early_exception = error;
+        } else if (!this.allow_uncaught_exception) {
+            this.report_uncaught(error);
+        }
+    };
+
+    RemoteContext.prototype.report_uncaught = function(error) {
         var message = error.message || String(error);
         var filename = (error.filename ? " " + error.filename: "");
         // FIXME: Display remote error states separately from main document
         // error state.
-        this.remote_done({
-            status: {
-                status: tests.status.ERROR,
-                message: "Error in remote" + filename + ": " + message,
-                stack: error.stack
-            }
-        });
+        tests.set_status(tests.status.ERROR,
+                         "Error in remote" + filename + ": " + message,
+                         error.stack);
+    };
 
-        if (error.preventDefault) {
-            error.preventDefault();
+    RemoteContext.prototype.start = function(data) {
+        this.started = true;
+        this.allow_uncaught_exception = data.properties.allow_uncaught_exception;
+
+        if (this.early_exception && !this.allow_uncaught_exception) {
+            this.report_uncaught(this.early_exception);
         }
     };
 
@@ -1767,20 +2041,33 @@ policies and contribution forms [3].
     RemoteContext.prototype.remote_done = function(data) {
         if (tests.status.status === null &&
             data.status.status !== data.status.OK) {
-            tests.status.status = data.status.status;
-            tests.status.message = data.status.message;
-            tests.status.stack = data.status.stack;
+            tests.set_status(data.status.status, data.status.message, data.status.sack);
         }
+
         this.message_target.removeEventListener("message", this.message_handler);
         this.running = false;
+
+        // If remote context is cross origin assigning to onerror is not
+        // possible, so silently catch those errors.
+        try {
+          this.remote.onerror = null;
+        } catch (e) {
+          // Ignore.
+        }
+
         this.remote = null;
         this.message_target = null;
+        if (this.doneResolve) {
+            this.doneResolve();
+        }
+
         if (tests.all_done()) {
             tests.complete();
         }
     };
 
     RemoteContext.prototype.message_handlers = {
+        start: RemoteContext.prototype.start,
         test_state: RemoteContext.prototype.test_state,
         result: RemoteContext.prototype.test_done,
         complete: RemoteContext.prototype.remote_done
@@ -1829,8 +2116,7 @@ policies and contribution forms [3].
             SETUP:1,
             HAVE_TESTS:2,
             HAVE_RESULTS:3,
-            COMPLETE:4,
-            ABORTED:5
+            COMPLETE:4
         };
         this.phase = this.phases.INITIAL;
 
@@ -1894,6 +2180,9 @@ policies and contribution forms [3].
                     }
                 } else if (p == "timeout_multiplier") {
                     this.timeout_multiplier = value;
+                    if (this.timeout_length) {
+                         this.timeout_length *= this.timeout_multiplier;
+                    }
                 }
             }
         }
@@ -1920,20 +2209,55 @@ policies and contribution forms [3].
         async_test();
     };
 
+    Tests.prototype.set_status = function(status, message, stack)
+    {
+        this.status.status = status;
+        this.status.message = message;
+        this.status.stack = stack ? stack : null;
+    };
+
     Tests.prototype.set_timeout = function() {
-        var this_obj = this;
-        clearTimeout(this.timeout_id);
-        if (this.timeout_length !== null) {
-            this.timeout_id = setTimeout(function() {
-                                             this_obj.timeout();
-                                         }, this.timeout_length);
+        if (global_scope.clearTimeout) {
+            var this_obj = this;
+            clearTimeout(this.timeout_id);
+            if (this.timeout_length !== null) {
+                this.timeout_id = setTimeout(function() {
+                                                 this_obj.timeout();
+                                             }, this.timeout_length);
+            }
         }
     };
 
     Tests.prototype.timeout = function() {
+        var test_in_cleanup = null;
+
         if (this.status.status === null) {
-            this.status.status = this.status.TIMEOUT;
+            forEach(this.tests,
+                    function(test) {
+                        // No more than one test is expected to be in the
+                        // "CLEANUP" phase at any time
+                        if (test.phase === test.phases.CLEANING) {
+                            test_in_cleanup = test;
+                        }
+
+                        test.phase = test.phases.COMPLETE;
+                    });
+
+            // Timeouts that occur while a test is in the "cleanup" phase
+            // indicate that some global state was not properly reverted. This
+            // invalidates the overall test execution, so the timeout should be
+            // reported as an error and cancel the execution of any remaining
+            // tests.
+            if (test_in_cleanup) {
+                this.status.status = this.status.ERROR;
+                this.status.message = "Timeout while running cleanup for " +
+                    "test named \"" + test_in_cleanup.name + "\".";
+                tests.status.stack = null;
+            } else {
+                this.status.status = this.status.TIMEOUT;
+            }
         }
+
         this.complete();
     };
 
@@ -1964,11 +2288,10 @@ policies and contribution forms [3].
     };
 
     Tests.prototype.all_done = function() {
-        return this.phase === this.phases.ABORTED ||
-            (this.tests.length > 0 && test_environment.all_loaded &&
-                this.num_pending === 0 && !this.wait_for_finish &&
+        return this.tests.length > 0 && test_environment.all_loaded &&
+                (this.num_pending === 0 || this.is_aborted) && !this.wait_for_finish &&
                 !this.processing_callbacks &&
-                !this.pending_remotes.some(function(w) { return w.running; }));
+                !this.pending_remotes.some(function(w) { return w.running; });
     };
 
     Tests.prototype.start = function() {
@@ -1987,10 +2310,11 @@ policies and contribution forms [3].
 
     Tests.prototype.result = function(test)
     {
-        if (this.phase > this.phases.HAVE_RESULTS) {
-            return;
+        // If the harness has already transitioned beyond the `HAVE_RESULTS`
+        // phase, subsequent tests should not cause it to revert.
+        if (this.phase <= this.phases.HAVE_RESULTS) {
+            this.phase = this.phases.HAVE_RESULTS;
         }
-        this.phase = this.phases.HAVE_RESULTS;
         this.num_pending--;
         this.notify_result(test);
     };
@@ -2013,19 +2337,54 @@ policies and contribution forms [3].
         if (this.phase === this.phases.COMPLETE) {
             return;
         }
-        this.phase = this.phases.COMPLETE;
         var this_obj = this;
-        this.tests.forEach(
-            function(x)
-            {
-                if (x.phase < x.phases.COMPLETE) {
-                    this_obj.notify_result(x);
-                    x.cleanup();
-                    x.phase = x.phases.COMPLETE;
-                }
-            }
-        );
-        this.notify_complete();
+        var all_complete = function() {
+            this_obj.phase = this_obj.phases.COMPLETE;
+            this_obj.notify_complete();
+        };
+        var incomplete = filter(this.tests,
+                                function(test) {
+                                    return test.phase < test.phases.COMPLETE;
+                                });
+
+        /**
+         * To preserve legacy behavior, overall test completion must be
+         * signaled synchronously.
+         */
+        if (incomplete.length === 0) {
+            all_complete();
+            return;
+        }
+
+        all_async(incomplete,
+                  function(test, testDone)
+                  {
+                      if (test.phase === test.phases.INITIAL) {
+                          test.phase = test.phases.COMPLETE;
+                          testDone();
+                      } else {
+                          add_test_done_callback(test, testDone);
+                          test.cleanup();
+                      }
+                  },
+                  all_complete);
+    };
+
+    /**
+     * Update the harness status to reflect an unrecoverable harness error that
+     * should cancel all further testing. Update all previously-defined tests
+     * which have not yet started to indicate that they will not be executed.
+     */
+    Tests.prototype.abort = function() {
+        this.status.status = this.status.ERROR;
+        this.is_aborted = true;
+
+        forEach(this.tests,
+                function(test) {
+                    if (test.phase === test.phases.INITIAL) {
+                        test.phase = test.phases.COMPLETE;
+                    }
+                });
     };
 
     /*
@@ -2048,6 +2407,42 @@ policies and contribution forms [3].
         return duplicates;
     };
 
+    function code_unit_str(char) {
+        return 'U+' + char.charCodeAt(0).toString(16);
+    }
+
+    function sanitize_unpaired_surrogates(str) {
+        return str.replace(/([\ud800-\udbff])(?![\udc00-\udfff])/g,
+                           function(_, unpaired)
+                           {
+                               return code_unit_str(unpaired);
+                           })
+                  // This replacement is intentionally implemented without an
+                  // ES2018 negative lookbehind assertion to support runtimes
+                  // which do not yet implement that language feature.
+                  .replace(/(^|[^\ud800-\udbff])([\udc00-\udfff])/g,
+                           function(_, previous, unpaired) {
+                              if (/[\udc00-\udfff]/.test(previous)) {
+                                  previous = code_unit_str(previous);
+                              }
+
+                              return previous + code_unit_str(unpaired);
+                           });
+    }
+
+    function sanitize_all_unpaired_surrogates(tests) {
+        forEach (tests,
+                 function (test)
+                 {
+                     var sanitized = sanitize_unpaired_surrogates(test.name);
+
+                     if (test.name !== sanitized) {
+                         test.name = sanitized;
+                         delete test._structured_clone;
+                     }
+                 });
+    }
+
     Tests.prototype.notify_complete = function() {
         var this_obj = this;
         var duplicates;
@@ -2055,6 +2450,11 @@ policies and contribution forms [3].
         if (this.status.status === null) {
             duplicates = this.find_duplicates();
 
+            // Some transports adhere to UTF-8's restriction on unpaired
+            // surrogates. Sanitize the titles so that the results can be
+            // consistently sent via all transports.
+            sanitize_all_unpaired_surrogates(this.tests);
+
             // Test names are presumed to be unique within test files--this
             // allows consumers to use them for identification purposes.
             // Duplicated names violate this expectation and should therefore
@@ -2084,13 +2484,13 @@ policies and contribution forms [3].
         var message_port;
 
         if (is_service_worker(worker)) {
-            // The ServiceWorker's implicit MessagePort is currently not
-            // reliably accessible from the ServiceWorkerGlobalScope due to
-            // Blink setting MessageEvent.source to null for messages sent
-            // via ServiceWorker.postMessage(). Until that's resolved,
-            // create an explicit MessageChannel and pass one end to the
-            // worker.
-            if (window.MessageChannel && !!window.chrome) {
+            if (window.MessageChannel) {
+                // The ServiceWorker's implicit MessagePort is currently not
+                // reliably accessible from the ServiceWorkerGlobalScope due to
+                // Blink setting MessageEvent.source to null for messages sent
+                // via ServiceWorker.postMessage(). Until that's resolved,
+                // create an explicit MessageChannel and pass one end to the
+                // worker.
                 var message_channel = new MessageChannel();
                 message_port = message_channel.port1;
                 message_port.start();
@@ -2131,11 +2531,13 @@ policies and contribution forms [3].
             return;
         }
 
-        this.pending_remotes.push(this.create_remote_worker(worker));
+        var remoteContext = this.create_remote_worker(worker);
+        this.pending_remotes.push(remoteContext);
+        return remoteContext.done;
     };
 
     function fetch_tests_from_worker(port) {
-        tests.fetch_tests_from_worker(port);
+        return tests.fetch_tests_from_worker(port);
     }
     expose(fetch_tests_from_worker, 'fetch_tests_from_worker');
 
@@ -2244,6 +2646,9 @@ policies and contribution forms [3].
 
     Output.prototype.resolve_log = function() {
         var output_document;
+        if (this.output_node) {
+            return;
+        }
         if (typeof this.output_document === "function") {
             output_document = this.output_document.apply(undefined);
         } else {
@@ -2254,12 +2659,34 @@ policies and contribution forms [3].
         }
         var node = output_document.getElementById("log");
         if (!node) {
-            if (!document.body || document.readyState == "loading") {
+            if (output_document.readyState === "loading") {
                 return;
             }
-            node = output_document.createElement("div");
+            node = output_document.createElementNS("http://www.w3.org/1999/xhtml", "div");
             node.id = "log";
-            output_document.body.appendChild(node);
+            if (output_document.body) {
+                output_document.body.appendChild(node);
+            } else {
+                var root = output_document.documentElement;
+                var is_html = (root &&
+                               root.namespaceURI == "http://www.w3.org/1999/xhtml" &&
+                               root.localName == "html");
+                var is_svg = (output_document.defaultView &&
+                              "SVGSVGElement" in output_document.defaultView &&
+                              root instanceof output_document.defaultView.SVGSVGElement);
+                if (is_svg) {
+                    var foreignObject = output_document.createElementNS("http://www.w3.org/2000/svg", "foreignObject");
+                    foreignObject.setAttribute("width", "100%");
+                    foreignObject.setAttribute("height", "100%");
+                    root.appendChild(foreignObject);
+                    foreignObject.appendChild(node);
+                } else if (is_html) {
+                    root.appendChild(output_document.createElementNS("http://www.w3.org/1999/xhtml", "body"))
+                        .appendChild(node);
+                } else {
+                    root.appendChild(node);
+                }
+            }
         }
         this.output_document = output_document;
         this.output_node = node;
@@ -2269,11 +2696,11 @@ policies and contribution forms [3].
         if (this.phase < this.STARTED) {
             this.init();
         }
-        if (!this.enabled) {
+        if (!this.enabled || this.phase === this.COMPLETE) {
             return;
         }
+        this.resolve_log();
         if (this.phase < this.HAVE_RESULTS) {
-            this.resolve_log();
             this.phase = this.HAVE_RESULTS;
         }
         var done_count = tests.tests.length - tests.num_pending;
@@ -2310,15 +2737,11 @@ policies and contribution forms [3].
             log.removeChild(log.lastChild);
         }
 
-        var harness_url = get_harness_url();
-        if (harness_url !== undefined) {
-            var stylesheet = output_document.createElementNS(xhtml_ns, "link");
-            stylesheet.setAttribute("rel", "stylesheet");
-            stylesheet.setAttribute("href", harness_url + "testharness.css");
-            var heads = output_document.getElementsByTagName("head");
-            if (heads.length) {
-                heads[0].appendChild(stylesheet);
-            }
+        var stylesheet = output_document.createElementNS(xhtml_ns, "style");
+        stylesheet.textContent = stylesheetContent;
+        var heads = output_document.getElementsByTagName("head");
+        if (heads.length) {
+            heads[0].appendChild(stylesheet);
         }
 
         var status_text_harness = {};
@@ -2484,7 +2907,7 @@ policies and contribution forms [3].
     /*
      * Template code
      *
-     * A template is just a javascript structure. An element is represented as:
+     * A template is just a JavaScript structure. An element is represented as:
      *
      * [tag_name, {attr_name:attr_value}, child1, child2]
      *
@@ -2646,7 +3069,7 @@ policies and contribution forms [3].
     }
 
     /*
-     * Utility funcions
+     * Utility functions
      */
     function assert(expected_true, function_name, description, error, substitutions)
     {
@@ -2768,6 +3191,57 @@ policies and contribution forms [3].
         }
     }
 
+    /**
+     * Immediately invoke a "iteratee" function with a series of values in
+     * parallel and invoke a final "done" function when all of the "iteratee"
+     * invocations have signaled completion.
+     *
+     * If all callbacks complete synchronously (or if no callbacks are
+     * specified), the `done_callback` will be invoked synchronously. It is the
+     * responsibility of the caller to ensure asynchronicity in cases where
+     * that is desired.
+     *
+     * @param {array} value Zero or more values to use in the invocation of
+     *                      `iter_callback`
+     * @param {function} iter_callback A function that will be invoked once for
+     *                                 each of the provided `values`. Two
+     *                                 arguments will be available in each
+     *                                 invocation: the value from `values` and
+     *                                 a function that must be invoked to
+     *                                 signal completion
+     * @param {function} done_callback A function that will be invoked after
+     *                                 all operations initiated by the
+     *                                 `iter_callback` function have signaled
+     *                                 completion
+     */
+    function all_async(values, iter_callback, done_callback)
+    {
+        var remaining = values.length;
+
+        if (remaining === 0) {
+            done_callback();
+        }
+
+        forEach(values,
+                function(element) {
+                    var invoked = false;
+                    var elDone = function() {
+                        if (invoked) {
+                            return;
+                        }
+
+                        invoked = true;
+                        remaining -= 1;
+
+                        if (remaining === 0) {
+                            done_callback();
+                        }
+                    };
+
+                    iter_callback(element, elDone);
+                });
+    }
+
     function merge(a,b)
     {
         var rv = {};
@@ -2784,7 +3258,7 @@ policies and contribution forms [3].
     function expose(object, name)
     {
         var components = name.split(".");
-        var target = test_environment.global_scope();
+        var target = global_scope;
         for (var i = 0; i < components.length - 1; i++) {
             if (!(components[i] in target)) {
                 target[components[i]] = {};
@@ -2806,7 +3280,7 @@ policies and contribution forms [3].
     /** Returns the 'src' URL of the first <script> tag in the page to include the file 'testharness.js'. */
     function get_script_url()
     {
-        if (!('document' in self)) {
+        if (!('document' in global_scope)) {
             return undefined;
         }
 
@@ -2828,14 +3302,23 @@ policies and contribution forms [3].
         return undefined;
     }
 
-    /** Returns the URL path at which the files for testharness.js are assumed to reside (e.g., '/resources/').
-        The path is derived from inspecting the 'src' of the <script> tag that included 'testharness.js'. */
-    function get_harness_url()
+    /** Returns the <title> or filename or "Untitled" */
+    function get_title()
     {
-        var script_url = get_script_url();
-
-        // Exclude the 'testharness.js' file from the returned path, but '+ 1' to include the trailing slash.
-        return script_url ? script_url.slice(0, script_url.lastIndexOf('/') + 1) : undefined;
+        if ('document' in global_scope) {
+            //Don't use document.title to work around an Opera bug in XHTML documents
+            var title = document.getElementsByTagName("title")[0];
+            if (title && title.firstChild && title.firstChild.data) {
+                return title.firstChild.data;
+            }
+        }
+        if ('META_TITLE' in global_scope && META_TITLE) {
+            return META_TITLE;
+        }
+        if ('location' in global_scope) {
+            return location.pathname.substring(location.pathname.lastIndexOf('/') + 1, location.pathname.indexOf('.'));
+        }
+        return "Untitled";
     }
 
     function supports_post_message(w)
@@ -2849,7 +3332,7 @@ policies and contribution forms [3].
         // Touching the postMessage prop on a window can throw if the window is
         // not from the same origin AND post message is not supported in that
         // browser. So just doing an existence test here won't do, you also need
-        // to wrap it in a try..cacth block.
+        // to wrap it in a try..catch block.
         try {
             type = typeof w.postMessage;
             if (type === "function") {
@@ -2881,38 +3364,150 @@ policies and contribution forms [3].
 
     var tests = new Tests();
 
-    var error_handler = function(e) {
-        if (tests.tests.length === 0 && !tests.allow_uncaught_exception) {
-            tests.set_file_is_test();
-        }
+    if (global_scope.addEventListener) {
+        var error_handler = function(e) {
+            if (tests.tests.length === 0 && !tests.allow_uncaught_exception) {
+                tests.set_file_is_test();
+            }
 
-        var stack;
-        if (e.error && e.error.stack) {
-            stack = e.error.stack;
-        } else {
-            stack = e.filename + ":" + e.lineno + ":" + e.colno;
-        }
+            var stack;
+            if (e.error && e.error.stack) {
+                stack = e.error.stack;
+            } else {
+                stack = e.filename + ":" + e.lineno + ":" + e.colno;
+            }
 
-        if (tests.file_is_test) {
-            var test = tests.tests[0];
-            if (test.phase >= test.phases.HAS_RESULT) {
-                return;
+            if (tests.file_is_test) {
+                var test = tests.tests[0];
+                if (test.phase >= test.phases.HAS_RESULT) {
+                    return;
+                }
+                test.set_status(test.FAIL, e.message, stack);
+                test.phase = test.phases.HAS_RESULT;
+                // The following function invocation is superfluous.
+                // TODO: Remove.
+                test.done();
+            } else if (!tests.allow_uncaught_exception) {
+                tests.status.status = tests.status.ERROR;
+                tests.status.message = e.message;
+                tests.status.stack = stack;
             }
-            test.set_status(test.FAIL, e.message, stack);
-            test.phase = test.phases.HAS_RESULT;
-            test.done();
-        } else if (!tests.allow_uncaught_exception) {
-            tests.status.status = tests.status.ERROR;
-            tests.status.message = e.message;
-            tests.status.stack = stack;
-        }
-        done();
-    };
+            done();
+        };
 
-    addEventListener("error", error_handler, false);
-    addEventListener("unhandledrejection", function(e){ error_handler(e.reason); }, false);
+        addEventListener("error", error_handler, false);
+        addEventListener("unhandledrejection", function(e){ error_handler(e.reason); }, false);
+    }
 
     test_environment.on_tests_ready();
 
-})();
+    /**
+     * Stylesheet
+     */
+     var stylesheetContent = "\
+html {\
+    font-family:DejaVu Sans, Bitstream Vera Sans, Arial, Sans;\
+}\
+\
+#log .warning,\
+#log .warning a {\
+  color: black;\
+  background: yellow;\
+}\
+\
+#log .error,\
+#log .error a {\
+  color: white;\
+  background: red;\
+}\
+\
+section#summary {\
+    margin-bottom:1em;\
+}\
+\
+table#results {\
+    border-collapse:collapse;\
+    table-layout:fixed;\
+    width:100%;\
+}\
+\
+table#results th:first-child,\
+table#results td:first-child {\
+    width:4em;\
+}\
+\
+table#results th:last-child,\
+table#results td:last-child {\
+    width:50%;\
+}\
+\
+table#results.assertions th:last-child,\
+table#results.assertions td:last-child {\
+    width:35%;\
+}\
+\
+table#results th {\
+    padding:0;\
+    padding-bottom:0.5em;\
+    border-bottom:medium solid black;\
+}\
+\
+table#results td {\
+    padding:1em;\
+    padding-bottom:0.5em;\
+    border-bottom:thin solid black;\
+}\
+\
+tr.pass > td:first-child {\
+    color:green;\
+}\
+\
+tr.fail > td:first-child {\
+    color:red;\
+}\
+\
+tr.timeout > td:first-child {\
+    color:red;\
+}\
+\
+tr.notrun > td:first-child {\
+    color:blue;\
+}\
+\
+.pass > td:first-child, .fail > td:first-child, .timeout > td:first-child, .notrun > td:first-child {\
+    font-variant:small-caps;\
+}\
+\
+table#results span {\
+    display:block;\
+}\
+\
+table#results span.expected {\
+    font-family:DejaVu Sans Mono, Bitstream Vera Sans Mono, Monospace;\
+    white-space:pre;\
+}\
+\
+table#results span.actual {\
+    font-family:DejaVu Sans Mono, Bitstream Vera Sans Mono, Monospace;\
+    white-space:pre;\
+}\
+\
+span.ok {\
+    color:green;\
+}\
+\
+tr.error {\
+    color:red;\
+}\
+\
+span.timeout {\
+    color:red;\
+}\
+\
+span.ok, span.timeout, span.error {\
+    font-variant:small-caps;\
+}\
+";
+
+})(this);
 // vim: set expandtab shiftwidth=4 tabstop=4:
index 8274586..214c104 100644 (file)
@@ -1,8 +1,8 @@
 
 PASS global setup 
 FAIL get(resultingClientId) for same-origin document assert_equals: promiseValue expected "client" but got "undefinedValue"
-FAIL get(resultingClientId) on cross-origin redirect assert_equals: get(event.resultingClientId) in the fetch event should fulfill expected (string) "fulfilled" but got (undefined) undefined
-FAIL get(resultingClientId) for document sandboxed by CSP header assert_equals: get(event.resultingClientId) in the fetch event should fulfill expected (string) "fulfilled" but got (undefined) undefined
-FAIL get(resultingClientId) for document sandboxed by CSP header with allow-same-origin assert_equals: get(event.resultingClientId) in the fetch event should fulfill expected (string) "fulfilled" but got (undefined) undefined
+PASS get(resultingClientId) on cross-origin redirect 
+PASS get(resultingClientId) for document sandboxed by CSP header 
+FAIL get(resultingClientId) for document sandboxed by CSP header with allow-same-origin assert_equals: promiseValue expected "client" but got "undefinedValue"
 PASS global cleanup 
 
index 1d91127..e6268c4 100644 (file)
@@ -1,14 +1,14 @@
 CONSOLE MESSAGE: line 16: Unhandled Promise Rejection: TypeError: The WritableStream.ready getter can only be used on instances of WritableStream
-CONSOLE MESSAGE: line 2890: TypeError: undefined is not an object (evaluating 'e.error')
+CONSOLE MESSAGE: line 3374: TypeError: undefined is not an object (evaluating 'e.error')
 CONSOLE MESSAGE: Unhandled Promise Rejection: undefined
-CONSOLE MESSAGE: line 2890: TypeError: undefined is not an object (evaluating 'e.error')
+CONSOLE MESSAGE: line 3374: TypeError: undefined is not an object (evaluating 'e.error')
 CONSOLE MESSAGE: Unhandled Promise Rejection: undefined
 CONSOLE MESSAGE: Unhandled Promise Rejection: TypeError: cancel() called on a reader owned by no readable stream
-CONSOLE MESSAGE: line 2890: TypeError: undefined is not an object (evaluating 'e.error')
+CONSOLE MESSAGE: line 3374: TypeError: undefined is not an object (evaluating 'e.error')
 CONSOLE MESSAGE: Unhandled Promise Rejection: undefined
-CONSOLE MESSAGE: line 2890: TypeError: undefined is not an object (evaluating 'e.error')
+CONSOLE MESSAGE: line 3374: TypeError: undefined is not an object (evaluating 'e.error')
 CONSOLE MESSAGE: Unhandled Promise Rejection: undefined
-CONSOLE MESSAGE: line 2890: TypeError: undefined is not an object (evaluating 'e.error')
+CONSOLE MESSAGE: line 3374: TypeError: undefined is not an object (evaluating 'e.error')
 CONSOLE MESSAGE: Unhandled Promise Rejection: undefined
 
 Harness Error (FAIL), message = The WritableStream.ready getter can only be used on instances of WritableStream
index 5ee9e4d..3dc8c94 100644 (file)
@@ -18,16 +18,16 @@ PASS WebAssembly.instantiate(module): Non-object module: 0.1
 PASS WebAssembly.instantiate(module): Non-object module: NaN 
 PASS WebAssembly.instantiate(module): Missing imports argument 
 PASS WebAssembly.instantiate(module): Imports argument with missing property: undefined 
-TIMEOUT WebAssembly.instantiate(module): Imports argument with missing property: empty object Test timed out
-NOTRUN WebAssembly.instantiate(module): Imports argument with missing property: wrong property 
-NOTRUN WebAssembly.instantiate(module): Importing an i64 global 
-NOTRUN WebAssembly.instantiate(module): Importing a function with an incorrectly-typed value: undefined 
-NOTRUN WebAssembly.instantiate(module): Importing a function with an incorrectly-typed value: null 
-NOTRUN WebAssembly.instantiate(module): Importing a function with an incorrectly-typed value: true 
-NOTRUN WebAssembly.instantiate(module): Importing a function with an incorrectly-typed value: "" 
-NOTRUN WebAssembly.instantiate(module): Importing a function with an incorrectly-typed value: symbol "Symbol()" 
-NOTRUN WebAssembly.instantiate(module): Importing a function with an incorrectly-typed value: 1 
-NOTRUN WebAssembly.instantiate(module): Importing a function with an incorrectly-typed value: 0.1 
-NOTRUN WebAssembly.instantiate(module): Importing a function with an incorrectly-typed value: NaN 
-NOTRUN WebAssembly.instantiate(module): Importing a function with an incorrectly-typed value: object "[object Object]" 
+PASS WebAssembly.instantiate(module): Imports argument with missing property: empty object 
+PASS WebAssembly.instantiate(module): Imports argument with missing property: wrong property 
+PASS WebAssembly.instantiate(module): Importing an i64 global 
+PASS WebAssembly.instantiate(module): Importing a function with an incorrectly-typed value: undefined 
+PASS WebAssembly.instantiate(module): Importing a function with an incorrectly-typed value: null 
+PASS WebAssembly.instantiate(module): Importing a function with an incorrectly-typed value: true 
+PASS WebAssembly.instantiate(module): Importing a function with an incorrectly-typed value: "" 
+PASS WebAssembly.instantiate(module): Importing a function with an incorrectly-typed value: symbol "Symbol()" 
+PASS WebAssembly.instantiate(module): Importing a function with an incorrectly-typed value: 1 
+PASS WebAssembly.instantiate(module): Importing a function with an incorrectly-typed value: 0.1 
+PASS WebAssembly.instantiate(module): Importing a function with an incorrectly-typed value: NaN 
+PASS WebAssembly.instantiate(module): Importing a function with an incorrectly-typed value: object "[object Object]" 
 
index a09da4e..a01fb3d 100644 (file)
@@ -1,4 +1,3 @@
-CONSOLE MESSAGE: line 1774: TypeError: null is not an object (evaluating 'this.message_target.removeEventListener')
 CONSOLE MESSAGE: line 68: TypeError: undefined is not an object (evaluating 'WebAssembly.Global.prototype')
 
 Harness Error (FAIL), message = TypeError: undefined is not an object (evaluating 'WebAssembly.Global.prototype')
index 9be5ab6..a2a92dd 100644 (file)
@@ -1,4 +1,3 @@
-CONSOLE MESSAGE: line 1774: TypeError: null is not an object (evaluating 'this.message_target.removeEventListener')
 CONSOLE MESSAGE: line 154: TypeError: undefined is not an object (evaluating 'WebAssembly.Global.prototype')
 
 Harness Error (FAIL), message = TypeError: undefined is not an object (evaluating 'WebAssembly.Global.prototype')
index 78de6f7..6c63b73 100644 (file)
@@ -11,3 +11,14 @@ PASS The finished promise should NOT be rejected if the animation is already idl
 PASS The cancel event should NOT be fired if the animation is already idle 
 TIMEOUT Canceling an animation should fire cancel event on orphaned element Test timed out
 
+Harness Error (FAIL), message = The operation was aborted.
+
+PASS Canceling an animation should cause its start time and hold time to be unresolved 
+PASS A play-pending ready promise should be rejected when the animation is canceled 
+PASS A pause-pending ready promise should be rejected when the animation is canceled 
+PASS When an animation is canceled, it should create a resolved Promise 
+PASS The ready promise should be replaced when the animation is canceled 
+PASS The finished promise should NOT be rejected if the animation is already idle 
+PASS The cancel event should NOT be fired if the animation is already idle 
+TIMEOUT Canceling an animation should fire cancel event on orphaned element Test timed out
+
index c048ec8..0748480 100644 (file)
@@ -4,8 +4,8 @@ FAIL setCodecPreferences() on video transceiver with codecs returned from RTCRtp
 FAIL setCodecPreferences() with both sender receiver codecs combined should succeed transceiver.setCodecPreferences is not a function. (In 'transceiver.setCodecPreferences([...capabilities1.codecs, ... capabilities2.codecs])', 'transceiver.setCodecPreferences' is undefined)
 FAIL setCodecPreferences([]) should succeed transceiver.setCodecPreferences is not a function. (In 'transceiver.setCodecPreferences([])', 'transceiver.setCodecPreferences' is undefined)
 FAIL setCodecPreferences() with reordered codecs should succeed transceiver.setCodecPreferences is not a function. (In 'transceiver.setCodecPreferences(codecs)', 'transceiver.setCodecPreferences' is undefined)
-FAIL setCodecPreferences() on audio transceiver with codecs returned from getCapabilities('video') should throw InvalidAccessError Test bug: unrecognized DOMException code "() => transceiver.setCodecPreferences(capabilities.codecs)" passed to assert_throws()
-FAIL setCodecPreferences() with user defined codec should throw InvalidAccessError Test bug: unrecognized DOMException code "() => transceiver.setCodecPreferences(codecs)" passed to assert_throws()
-FAIL setCodecPreferences() with user defined codec together with codecs returned from getCapabilities() should throw InvalidAccessError Test bug: unrecognized DOMException code "() => transceiver.setCodecPreferences(codecs)" passed to assert_throws()
-FAIL setCodecPreferences() with modified codecs returned from getCapabilities() should throw InvalidAccessError Test bug: unrecognized DOMException code "() => transceiver.setCodecPreferences(codecs)" passed to assert_throws()
+FAIL setCodecPreferences() on audio transceiver with codecs returned from getCapabilities('video') should throw InvalidAccessError assert_throws: undefined threw object "TypeError: undefined is not an object (evaluating 'func.call')" that is not a DOMException () => transceiver.setCodecPreferences(capabilities.codecs): property "code" is equal to undefined, expected function "() => transceiver.setCodecPreferences(capabilities.codecs)"
+FAIL setCodecPreferences() with user defined codec should throw InvalidAccessError assert_throws: undefined threw object "TypeError: undefined is not an object (evaluating 'func.call')" that is not a DOMException () => transceiver.setCodecPreferences(codecs): property "code" is equal to undefined, expected function "() => transceiver.setCodecPreferences(codecs)"
+FAIL setCodecPreferences() with user defined codec together with codecs returned from getCapabilities() should throw InvalidAccessError assert_throws: undefined threw object "TypeError: undefined is not an object (evaluating 'func.call')" that is not a DOMException () => transceiver.setCodecPreferences(codecs): property "code" is equal to undefined, expected function "() => transceiver.setCodecPreferences(codecs)"
+FAIL setCodecPreferences() with modified codecs returned from getCapabilities() should throw InvalidAccessError assert_throws: undefined threw object "TypeError: undefined is not an object (evaluating 'func.call')" that is not a DOMException () => transceiver.setCodecPreferences(codecs): property "code" is equal to undefined, expected function "() => transceiver.setCodecPreferences(codecs)"
 
index 74411cb..555f828 100644 (file)
@@ -1,5 +1,7 @@
 Test requires popup blocker disabled
 
 
+Harness Error (FAIL), message = Test named 'WebSockets: navigating top-level browsing context' specified 2 'cleanup' functions, and 1 failed.
+
 PASS WebSockets: navigating top-level browsing context 
 
index 9273a0a..41f68a6 100644 (file)
@@ -1,5 +1,7 @@
 Test requires popup blocker disabled
 
 
+Harness Error (FAIL), message = Test named 'WebSockets: navigating top-level browsing context with closed websocket' specified 2 'cleanup' functions, and 1 failed.
+
 FAIL WebSockets: navigating top-level browsing context with closed websocket assert_unreached: document was discarded Reached unreachable code
 
index 1221449..7cf6e0c 100644 (file)
@@ -1,3 +1,5 @@
 
+Harness Error (FAIL), message = Test named 'WebSockets: navigating nested browsing context' specified 2 'cleanup' functions, and 1 failed.
+
 PASS WebSockets: navigating nested browsing context 
 
index e1b2ada..d71a552 100644 (file)
@@ -1,3 +1,5 @@
 
+Harness Error (FAIL), message = Test named 'WebSockets: navigating nested browsing context with closed websocket' specified 2 'cleanup' functions, and 1 failed.
+
 FAIL WebSockets: navigating nested browsing context with closed websocket assert_unreached: document was discarded Reached unreachable code
 
index 9c1a219..9aa4b12 100644 (file)
@@ -2,5 +2,5 @@ CONSOLE MESSAGE: line 9: hello
 
 PASS Error handler outside the worker should not see the error value 
 PASS Error handlers inside a worker should see the error value 
-PASS Untitled 
+PASS Worker_ErrorEvent_error 
 
index 4a43429..e525611 100644 (file)
@@ -1,9 +1,9 @@
-CONSOLE MESSAGE: line 1253: XMLHttpRequest.responseType cannot be changed for synchronous HTTP(S) requests made from the window context.
-CONSOLE MESSAGE: line 1253: XMLHttpRequest.responseType cannot be changed for synchronous HTTP(S) requests made from the window context.
-CONSOLE MESSAGE: line 1253: XMLHttpRequest.responseType cannot be changed for synchronous HTTP(S) requests made from the window context.
-CONSOLE MESSAGE: line 1253: XMLHttpRequest.responseType cannot be changed for synchronous HTTP(S) requests made from the window context.
-CONSOLE MESSAGE: line 1253: XMLHttpRequest.responseType cannot be changed for synchronous HTTP(S) requests made from the window context.
-CONSOLE MESSAGE: line 1253: XMLHttpRequest.responseType cannot be changed for synchronous HTTP(S) requests made from the window context.
+CONSOLE MESSAGE: line 1345: XMLHttpRequest.responseType cannot be changed for synchronous HTTP(S) requests made from the window context.
+CONSOLE MESSAGE: line 1345: XMLHttpRequest.responseType cannot be changed for synchronous HTTP(S) requests made from the window context.
+CONSOLE MESSAGE: line 1345: XMLHttpRequest.responseType cannot be changed for synchronous HTTP(S) requests made from the window context.
+CONSOLE MESSAGE: line 1345: XMLHttpRequest.responseType cannot be changed for synchronous HTTP(S) requests made from the window context.
+CONSOLE MESSAGE: line 1345: XMLHttpRequest.responseType cannot be changed for synchronous HTTP(S) requests made from the window context.
+CONSOLE MESSAGE: line 1345: XMLHttpRequest.responseType cannot be changed for synchronous HTTP(S) requests made from the window context.
 
 PASS Initial value of responseType 
 PASS Set responseType to "" when readyState is UNSENT. 
index d942524..5b1cf56 100644 (file)
@@ -1,4 +1,4 @@
-CONSOLE MESSAGE: line 1253: XMLHttpRequest.timeout cannot be set for synchronous HTTP(S) requests made from the window context.
+CONSOLE MESSAGE: line 1345: XMLHttpRequest.timeout cannot be set for synchronous HTTP(S) requests made from the window context.
 CONSOLE MESSAGE: line 21: Synchronous XMLHttpRequests must not have a timeout value set.
 
 PASS setting timeout attribute on sync request 
index 96a5f2d..d247c14 100644 (file)
@@ -1,3 +1,3 @@
 
-FAIL Traversing history should restore scroll position after dispatching popstate and before dispatching hashchange assert_array_approx_equals: scroll is restored before hashchange for #2 property 0, expected 100 +/- undefined, expected 100 but got 555
+FAIL Traversing history should restore scroll position after dispatching popstate and before dispatching hashchange assert_array_approx_equals: scroll is restored before hashchange for #2 property 0, expected 100 +/- 1, expected 100 but got 555
 
index 62c6a4d..70c171b 100644 (file)
@@ -22,22 +22,22 @@ CONSOLE MESSAGE: line 820: The language contains a null character and is not a v
 CONSOLE MESSAGE: line 820: The language 'null' is not a valid BCP 47 language tag.
 CONSOLE MESSAGE: line 820: The language 'test-toString' is not a valid BCP 47 language tag.
 CONSOLE MESSAGE: line 820: The language 'test-valueOf' is not a valid BCP 47 language tag.
-CONSOLE MESSAGE: line 1489: The language contains a null character and is not a valid BCP 47 language tag.
-CONSOLE MESSAGE: line 1489: The language 'undefined' is not a valid BCP 47 language tag.
-CONSOLE MESSAGE: line 1489: The language '7' is not a valid BCP 47 language tag.
-CONSOLE MESSAGE: line 1489: The language '1.5' is not a valid BCP 47 language tag.
-CONSOLE MESSAGE: line 1489: The language '5%' is not a valid BCP 47 language tag.
-CONSOLE MESSAGE: line 1489: The language '+100' is not a valid BCP 47 language tag.
-CONSOLE MESSAGE: line 1489: The language '.5' is not a valid BCP 47 language tag.
-CONSOLE MESSAGE: line 1489: The language 'true' is not a valid BCP 47 language tag.
-CONSOLE MESSAGE: line 1489: The language 'false' is not a valid BCP 47 language tag.
-CONSOLE MESSAGE: line 1489: The language '[object Object]' is not a valid BCP 47 language tag.
-CONSOLE MESSAGE: line 1489: The language 'Infinity'