Resync service workers WPT tests from upstream
authorcdumez@apple.com <cdumez@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 9 Sep 2019 23:14:44 +0000 (23:14 +0000)
committercdumez@apple.com <cdumez@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 9 Sep 2019 23:14:44 +0000 (23:14 +0000)
https://bugs.webkit.org/show_bug.cgi?id=201589

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

Resync service workers WPT tests from upstream 820f0f86047e6e26401e.

* web-platform-tests/service-workers/service-worker/Service-Worker-Allowed-header.https-expected.txt:
* web-platform-tests/service-workers/service-worker/Service-Worker-Allowed-header.https.html:
* web-platform-tests/service-workers/service-worker/ServiceWorkerGlobalScope/postmessage.https.html:
* web-platform-tests/service-workers/service-worker/ServiceWorkerGlobalScope/unregister.https.html:
* web-platform-tests/service-workers/service-worker/ServiceWorkerGlobalScope/update.https.html:
* web-platform-tests/service-workers/service-worker/about-blank-replacement.https.html:
* web-platform-tests/service-workers/service-worker/activate-event-after-install-state-change.https.html:
* web-platform-tests/service-workers/service-worker/activation-after-registration.https.html:
* web-platform-tests/service-workers/service-worker/activation.https-expected.txt:
* web-platform-tests/service-workers/service-worker/activation.https.html:
* web-platform-tests/service-workers/service-worker/appcache-ordering-main.https.html:
* web-platform-tests/service-workers/service-worker/claim-fetch-with-appcache.https-expected.txt: Removed.
* web-platform-tests/service-workers/service-worker/claim-fetch-with-appcache.https.html: Removed.
* web-platform-tests/service-workers/service-worker/claim-fetch.https.html:
* web-platform-tests/service-workers/service-worker/claim-not-using-registration.https.html:
* web-platform-tests/service-workers/service-worker/claim-shared-worker-fetch.https.html:
* web-platform-tests/service-workers/service-worker/claim-using-registration.https.html:
* web-platform-tests/service-workers/service-worker/claim-worker-fetch.https-expected.txt:
* web-platform-tests/service-workers/service-worker/claim-worker-fetch.https.html:
* web-platform-tests/service-workers/service-worker/client-id.https.html:
* web-platform-tests/service-workers/service-worker/clients-get-client-types.https.html:
* web-platform-tests/service-workers/service-worker/clients-get-resultingClientId.https-expected.txt: Removed.
* web-platform-tests/service-workers/service-worker/clients-get-resultingClientId.https.html: Removed.
* web-platform-tests/service-workers/service-worker/clients-get.https-expected.txt:
* web-platform-tests/service-workers/service-worker/clients-get.https.html:
* web-platform-tests/service-workers/service-worker/clients-matchall-client-types.https.html:
* web-platform-tests/service-workers/service-worker/clients-matchall-exact-controller.https-expected.txt:
* web-platform-tests/service-workers/service-worker/clients-matchall-exact-controller.https.html:
* web-platform-tests/service-workers/service-worker/clients-matchall-include-uncontrolled.https.html:
* web-platform-tests/service-workers/service-worker/clients-matchall-order.https.html:
* web-platform-tests/service-workers/service-worker/clients-matchall.https.html:
* web-platform-tests/service-workers/service-worker/controller-on-disconnect.https.html:
* web-platform-tests/service-workers/service-worker/controller-on-load.https.html:
* web-platform-tests/service-workers/service-worker/controller-on-reload.https.html:
* web-platform-tests/service-workers/service-worker/data-transfer-files.https-expected.txt: Removed.
* web-platform-tests/service-workers/service-worker/data-transfer-files.https.html: Removed.
* web-platform-tests/service-workers/service-worker/detached-context.https-expected.txt:
* web-platform-tests/service-workers/service-worker/detached-context.https.html:
* web-platform-tests/service-workers/service-worker/extendable-event-async-waituntil.https-expected.txt:
* web-platform-tests/service-workers/service-worker/extendable-event-async-waituntil.https.html:
* web-platform-tests/service-workers/service-worker/extendable-event-waituntil.https.html:
* web-platform-tests/service-workers/service-worker/fetch-audio-tainting.https-expected.txt: Removed.
* web-platform-tests/service-workers/service-worker/fetch-audio-tainting.https.html: Removed.
* web-platform-tests/service-workers/service-worker/fetch-canvas-tainting-double-write.https-expected.txt: Removed.
* web-platform-tests/service-workers/service-worker/fetch-canvas-tainting-double-write.https.html: Removed.
* web-platform-tests/service-workers/service-worker/fetch-canvas-tainting-video-cache.https.html:
* web-platform-tests/service-workers/service-worker/fetch-canvas-tainting-video.https.html:
* web-platform-tests/service-workers/service-worker/fetch-cors-xhr.https-expected.txt:
* web-platform-tests/service-workers/service-worker/fetch-cors-xhr.https.html:
* web-platform-tests/service-workers/service-worker/fetch-csp.https.html:
* web-platform-tests/service-workers/service-worker/fetch-event-after-navigation-within-page.https.html:
* web-platform-tests/service-workers/service-worker/fetch-event-async-respond-with.https-expected.txt:
* web-platform-tests/service-workers/service-worker/fetch-event-async-respond-with.https.html:
* web-platform-tests/service-workers/service-worker/fetch-event-network-error.https.html:
* web-platform-tests/service-workers/service-worker/fetch-event-referrer-policy.https-expected.txt:
* web-platform-tests/service-workers/service-worker/fetch-event-referrer-policy.https.html:
* web-platform-tests/service-workers/service-worker/fetch-event-respond-with-argument.https.html:
* web-platform-tests/service-workers/service-worker/fetch-event-respond-with-body-loaded-in-chunk.https.html:
* web-platform-tests/service-workers/service-worker/fetch-event-respond-with-stops-propagation.https.html:
* web-platform-tests/service-workers/service-worker/fetch-event-throws-after-respond-with.https.html:
* web-platform-tests/service-workers/service-worker/fetch-event.https-expected.txt:
* web-platform-tests/service-workers/service-worker/fetch-event.https.html:
* web-platform-tests/service-workers/service-worker/fetch-frame-resource.https.html:
* web-platform-tests/service-workers/service-worker/fetch-header-visibility.https.html:
* web-platform-tests/service-workers/service-worker/fetch-request-css-base-url.https-expected.txt:
* web-platform-tests/service-workers/service-worker/fetch-request-css-base-url.https.html:
* web-platform-tests/service-workers/service-worker/fetch-request-css-images.https.html:
* web-platform-tests/service-workers/service-worker/fetch-request-html-imports.https-expected.txt:
* web-platform-tests/service-workers/service-worker/fetch-request-html-imports.https.html:
* web-platform-tests/service-workers/service-worker/fetch-request-no-freshness-headers.https.html:
* web-platform-tests/service-workers/service-worker/fetch-request-redirect.https.html:
* web-platform-tests/service-workers/service-worker/fetch-request-xhr-sync.https.html:
* web-platform-tests/service-workers/service-worker/fetch-response-xhr.https.html:
* web-platform-tests/service-workers/service-worker/fetch-waits-for-activate.https.html:
* web-platform-tests/service-workers/service-worker/getregistration.https-expected.txt:
* web-platform-tests/service-workers/service-worker/getregistration.https.html:
* web-platform-tests/service-workers/service-worker/import-module-scripts.https-expected.txt: Removed.
* web-platform-tests/service-workers/service-worker/import-module-scripts.https.html: Removed.
* web-platform-tests/service-workers/service-worker/import-scripts-mime-types.https-expected.txt: Removed.
* web-platform-tests/service-workers/service-worker/import-scripts-mime-types.https.html: Removed.
* web-platform-tests/service-workers/service-worker/import-scripts-resource-map.https-expected.txt:
* web-platform-tests/service-workers/service-worker/import-scripts-resource-map.https.html:
* web-platform-tests/service-workers/service-worker/interfaces-window.https.html:
* web-platform-tests/service-workers/service-worker/invalid-blobtype.https.html:
* web-platform-tests/service-workers/service-worker/invalid-header.https.html:
* web-platform-tests/service-workers/service-worker/iso-latin1-header.https.html:
* web-platform-tests/service-workers/service-worker/multiple-update.https.html:
* web-platform-tests/service-workers/service-worker/navigation-redirect.https.html:
* web-platform-tests/service-workers/service-worker/onactivate-script-error.https.html:
* web-platform-tests/service-workers/service-worker/performance-timeline.https.html:
* web-platform-tests/service-workers/service-worker/postmessage-from-waiting-serviceworker.https.html:
* web-platform-tests/service-workers/service-worker/postmessage-to-client-message-queue.https-expected.txt: Removed.
* web-platform-tests/service-workers/service-worker/postmessage-to-client-message-queue.https.html: Removed.
* web-platform-tests/service-workers/service-worker/postmessage-to-client.https.html:
* web-platform-tests/service-workers/service-worker/postmessage.https-expected.txt:
* web-platform-tests/service-workers/service-worker/postmessage.https.html:
* web-platform-tests/service-workers/service-worker/ready.https.html:
* web-platform-tests/service-workers/service-worker/redirected-response.https-expected.txt:
* web-platform-tests/service-workers/service-worker/redirected-response.https.html:
* web-platform-tests/service-workers/service-worker/referer.https.html:
* web-platform-tests/service-workers/service-worker/register-default-scope.https.html:
* web-platform-tests/service-workers/service-worker/register-wait-forever-in-install-worker.https.html:
* web-platform-tests/service-workers/service-worker/registration-end-to-end.https.html:
* web-platform-tests/service-workers/service-worker/registration-events.https.html:
* web-platform-tests/service-workers/service-worker/registration-mime-types.https-expected.txt:
* web-platform-tests/service-workers/service-worker/registration-mime-types.https.html:
* web-platform-tests/service-workers/service-worker/registration-schedule-job.https-expected.txt: Removed.
* web-platform-tests/service-workers/service-worker/registration-schedule-job.https.html: Removed.
* web-platform-tests/service-workers/service-worker/registration-scope.https-expected.txt:
* web-platform-tests/service-workers/service-worker/registration-security-error.https-expected.txt:
* web-platform-tests/service-workers/service-worker/registration-service-worker-attributes.https.html:
* web-platform-tests/service-workers/service-worker/registration-updateviacache.https-expected.txt:
* web-platform-tests/service-workers/service-worker/registration-updateviacache.https.html:
* web-platform-tests/service-workers/service-worker/resource-timing.https.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/resource-timing.sub.https.html.
* web-platform-tests/service-workers/service-worker/resource-timing.sub.https-expected.txt: Removed.
* web-platform-tests/service-workers/service-worker/resources/about-blank-replacement-ping-frame.py:
* web-platform-tests/service-workers/service-worker/resources/appcache-ordering.manifest:
* web-platform-tests/service-workers/service-worker/resources/claim-worker.js:
* web-platform-tests/service-workers/service-worker/resources/classic-worker.js: Removed.
* web-platform-tests/service-workers/service-worker/resources/clients-get-cross-origin-frame.html:
* web-platform-tests/service-workers/service-worker/resources/clients-get-resultingClientId-worker.js: Removed.
* web-platform-tests/service-workers/service-worker/resources/clients-get-worker.js:
(self.onmessage):
* web-platform-tests/service-workers/service-worker/resources/enable-client-message-queue.html: Removed.
* web-platform-tests/service-workers/service-worker/resources/extendable-event-async-waituntil.js:
(switch):
(event.request.url.indexOf):
(else.event.request.url.indexOf):
* web-platform-tests/service-workers/service-worker/resources/fetch-canvas-tainting-double-write-worker.js: Removed.
* web-platform-tests/service-workers/service-worker/resources/fetch-cors-xhr-iframe.html:
* web-platform-tests/service-workers/service-worker/resources/fetch-event-async-respond-with-worker.js:
(setTimeout):
* web-platform-tests/service-workers/service-worker/resources/fetch-event-network-fallback-worker.js:
* web-platform-tests/service-workers/service-worker/resources/fetch-event-test-worker.js:
* web-platform-tests/service-workers/service-worker/resources/fetch-request-css-base-url-iframe.html:
* web-platform-tests/service-workers/service-worker/resources/fetch-request-css-base-url-worker.js:
(self.onmessage):
(url.indexOf):
(else.url.indexOf):
* web-platform-tests/service-workers/service-worker/resources/get-resultingClientId-worker.js: Removed.
* web-platform-tests/service-workers/service-worker/resources/import-relative.xsl: Removed.
* web-platform-tests/service-workers/service-worker/resources/import-scripts-diff-resource-map-worker.js: Removed.
* web-platform-tests/service-workers/service-worker/resources/import-scripts-get.py: Removed.
* web-platform-tests/service-workers/service-worker/resources/import-scripts-mime-types-worker.js: Removed.
* web-platform-tests/service-workers/service-worker/resources/imported-classic-script.js: Removed.
* web-platform-tests/service-workers/service-worker/resources/imported-module-script.js: Removed.
* web-platform-tests/service-workers/service-worker/resources/message-vs-microtask.html: Removed.
* web-platform-tests/service-workers/service-worker/resources/module-worker.js: Removed.
* web-platform-tests/service-workers/service-worker/resources/navigation-redirect-other-origin.html:
* web-platform-tests/service-workers/service-worker/resources/navigation-redirect-out-scope.py:
* web-platform-tests/service-workers/service-worker/resources/navigation-redirect-scope1.py:
* web-platform-tests/service-workers/service-worker/resources/navigation-redirect-scope2.py:
* web-platform-tests/service-workers/service-worker/resources/nested-iframe-parent.html: Removed.
* web-platform-tests/service-workers/service-worker/resources/performance-timeline-worker.js:
(promise_test.):
(promise_test):
* web-platform-tests/service-workers/service-worker/resources/postmessage-echo-worker.js: Removed.
* web-platform-tests/service-workers/service-worker/resources/redirect-worker.js:
(event.waitUntil.Promise.all.waitUntilPromiseList.then):
(then):
(waitUntilPromise.caches.open.cacheName.then):
(event.respondWith.waitUntilPromise.then):
* web-platform-tests/service-workers/service-worker/resources/registration-tests-mime-types.js:
(registration_tests_mime_types):
* web-platform-tests/service-workers/service-worker/resources/registration-tests-scope.js:
(registration_tests_scope):
* web-platform-tests/service-workers/service-worker/resources/registration-tests-security-error.js:
(registration_tests_security_error):
* web-platform-tests/service-workers/service-worker/resources/resource-timing-iframe.sub.html:
* web-platform-tests/service-workers/service-worker/resources/service-worker-csp-worker.py:
* web-platform-tests/service-workers/service-worker/resources/service-worker-header.py:
(main):
* web-platform-tests/service-workers/service-worker/resources/skip-waiting-installed-worker.js:
(event.waitUntil.self.skipWaiting.then):
* web-platform-tests/service-workers/service-worker/resources/stalling-service-worker.js: Removed.
* web-platform-tests/service-workers/service-worker/resources/test-helpers.sub.js:
(wait_for_update):
(async.wait_for_activation_on_dummy_scope):
* web-platform-tests/service-workers/service-worker/resources/test-request-headers-worker.js: Removed.
* web-platform-tests/service-workers/service-worker/resources/test-request-headers-worker.py: Removed.
* web-platform-tests/service-workers/service-worker/resources/trickle.py: Removed.
* web-platform-tests/service-workers/service-worker/resources/update-during-installation-worker.js: Removed.
* web-platform-tests/service-workers/service-worker/resources/update-during-installation-worker.py: Removed.
* web-platform-tests/service-workers/service-worker/resources/update-fetch-worker.py: Removed.
* web-platform-tests/service-workers/service-worker/resources/update-missing-import-scripts-imported-worker.py: Removed.
* web-platform-tests/service-workers/service-worker/resources/update-missing-import-scripts-main-worker.py: Removed.
* web-platform-tests/service-workers/service-worker/resources/update-registration-with-type.py: Removed.
* web-platform-tests/service-workers/service-worker/resources/w3c-import.log:
* web-platform-tests/service-workers/service-worker/resources/worker-interception-iframe.https.html:
* web-platform-tests/service-workers/service-worker/resources/worker-load-interceptor.js:
(self.onfetch):
* web-platform-tests/service-workers/service-worker/resources/worker-testharness.js:
(create_temporary_cache):
* web-platform-tests/service-workers/service-worker/resources/xhr-iframe.html: Removed.
* web-platform-tests/service-workers/service-worker/resources/xhr-response-url-worker.js: Removed.
* web-platform-tests/service-workers/service-worker/resources/xsl-base-url-iframe.xml: Removed.
* web-platform-tests/service-workers/service-worker/resources/xsl-base-url-worker.js: Removed.
* web-platform-tests/service-workers/service-worker/resources/xslt-pass.xsl: Removed.
* web-platform-tests/service-workers/service-worker/service-worker-csp-connect.https-expected.txt:
* web-platform-tests/service-workers/service-worker/service-worker-csp-default.https-expected.txt:
* web-platform-tests/service-workers/service-worker/service-worker-csp-script.https-expected.txt:
* web-platform-tests/service-workers/service-worker/service-worker-header.https-expected.txt:
* web-platform-tests/service-workers/service-worker/service-worker-header.https.html:
* web-platform-tests/service-workers/service-worker/serviceworker-message-event-historical.https.html:
* web-platform-tests/service-workers/service-worker/shared-worker-controlled.https.html:
* web-platform-tests/service-workers/service-worker/skip-waiting-installed.https-expected.txt:
* web-platform-tests/service-workers/service-worker/skip-waiting-installed.https.html:
* web-platform-tests/service-workers/service-worker/skip-waiting-using-registration.https.html:
* web-platform-tests/service-workers/service-worker/skip-waiting-without-using-registration.https.html:
* web-platform-tests/service-workers/service-worker/skip-waiting.https.html:
* web-platform-tests/service-workers/service-worker/state.https.html:
* web-platform-tests/service-workers/service-worker/synced-state.https.html:
* web-platform-tests/service-workers/service-worker/uncontrolled-page.https.html:
* web-platform-tests/service-workers/service-worker/unregister-then-register-new-script.https-expected.txt:
* web-platform-tests/service-workers/service-worker/unregister-then-register-new-script.https.html:
* web-platform-tests/service-workers/service-worker/unregister-then-register.https-expected.txt:
* web-platform-tests/service-workers/service-worker/unregister-then-register.https.html:
* web-platform-tests/service-workers/service-worker/update-after-navigation-redirect.https.html:
* web-platform-tests/service-workers/service-worker/update-after-oneday.https.html:
* web-platform-tests/service-workers/service-worker/update-bytecheck.https.html:
* web-platform-tests/service-workers/service-worker/update-missing-import-scripts.https-expected.txt: Removed.
* web-platform-tests/service-workers/service-worker/update-missing-import-scripts.https.html: Removed.
* web-platform-tests/service-workers/service-worker/update-no-cache-request-headers.https-expected.txt: Removed.
* web-platform-tests/service-workers/service-worker/update-no-cache-request-headers.https.html: Removed.
* web-platform-tests/service-workers/service-worker/update-not-allowed.https-expected.txt: Removed.
* web-platform-tests/service-workers/service-worker/update-not-allowed.https.html: Removed.
* web-platform-tests/service-workers/service-worker/update-on-navigation.https-expected.txt: Removed.
* web-platform-tests/service-workers/service-worker/update-on-navigation.https.html: Removed.
* web-platform-tests/service-workers/service-worker/update-recovery.https.html:
* web-platform-tests/service-workers/service-worker/update-registration-with-type.https-expected.txt: Removed.
* web-platform-tests/service-workers/service-worker/update-registration-with-type.https.html: Removed.
* web-platform-tests/service-workers/service-worker/w3c-import.log:
* web-platform-tests/service-workers/service-worker/websocket.https-expected.txt:
* web-platform-tests/service-workers/service-worker/websocket.https.html:
* web-platform-tests/service-workers/service-worker/windowclient-navigate.https.html:
* web-platform-tests/service-workers/service-worker/worker-client-id.https-expected.txt:
* web-platform-tests/service-workers/service-worker/worker-interception.https-expected.txt:
* web-platform-tests/service-workers/service-worker/worker-interception.https.html:
* web-platform-tests/service-workers/service-worker/xhr-response-url.https-expected.txt: Removed.
* web-platform-tests/service-workers/service-worker/xhr-response-url.https.html: Removed.
* web-platform-tests/service-workers/service-worker/xsl-base-url.https-expected.txt: Removed.
* web-platform-tests/service-workers/service-worker/xsl-base-url.https.html: Removed.

LayoutTests:

* TestExpectations:

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

123 files changed:
LayoutTests/ChangeLog
LayoutTests/TestExpectations
LayoutTests/imported/w3c/ChangeLog
LayoutTests/imported/w3c/resources/import-expectations.json
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/interfaces.any-expected.txt
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/interfaces.any.worker-expected.txt
LayoutTests/imported/w3c/web-platform-tests/WebIDL/interfaces-expected.txt
LayoutTests/imported/w3c/web-platform-tests/common/security-features/resources/common.sub.js [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/content-security-policy/securitypolicyviolation/idlharness.window-expected.txt
LayoutTests/imported/w3c/web-platform-tests/credential-management/META.yml [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/credential-management/OWNERS [deleted file]
LayoutTests/imported/w3c/web-platform-tests/credential-management/idl.https-expected.txt [deleted file]
LayoutTests/imported/w3c/web-platform-tests/credential-management/idl.https.html [deleted file]
LayoutTests/imported/w3c/web-platform-tests/credential-management/idlharness.https.window-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/credential-management/idlharness.https.window.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/credential-management/idlharness.https.window.js [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/credential-management/support/w3c-import.log
LayoutTests/imported/w3c/web-platform-tests/credential-management/w3c-import.log
LayoutTests/imported/w3c/web-platform-tests/css/css-properties-values-api/idlharness-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/css-properties-values-api/idlharness.html
LayoutTests/imported/w3c/web-platform-tests/css/cssom-view/interfaces-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/geometry/interfaces-expected.txt
LayoutTests/imported/w3c/web-platform-tests/css/geometry/interfaces.worker-expected.txt
LayoutTests/imported/w3c/web-platform-tests/dom/interfaces-expected.txt
LayoutTests/imported/w3c/web-platform-tests/domparsing/interfaces.any.worker-expected.txt
LayoutTests/imported/w3c/web-platform-tests/eventsource/interfaces-expected.txt
LayoutTests/imported/w3c/web-platform-tests/fetch/api/idl.any-expected.txt
LayoutTests/imported/w3c/web-platform-tests/fetch/api/idl.any.worker-expected.txt
LayoutTests/imported/w3c/web-platform-tests/fetch/cors-rfc1918/idlharness.tentative.any-expected.txt
LayoutTests/imported/w3c/web-platform-tests/fetch/cors-rfc1918/idlharness.tentative.any.worker-expected.txt
LayoutTests/imported/w3c/web-platform-tests/hr-time/idlharness-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/webappapis/animation-frames/idlharness-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/webappapis/scripting/events/event-handler-all-global-events-expected.txt
LayoutTests/imported/w3c/web-platform-tests/interfaces/SVG.idl [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/interfaces/credential-management.idl [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/interfaces/css-properties-values-api.idl [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/interfaces/css-pseudo.idl [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/interfaces/cssom-view.idl
LayoutTests/imported/w3c/web-platform-tests/interfaces/cssom.idl
LayoutTests/imported/w3c/web-platform-tests/interfaces/dom.idl
LayoutTests/imported/w3c/web-platform-tests/interfaces/html.idl
LayoutTests/imported/w3c/web-platform-tests/interfaces/mediacapture-streams.idl [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/interfaces/performance-timeline.idl [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/interfaces/resource-timing.idl [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/interfaces/service-workers.idl
LayoutTests/imported/w3c/web-platform-tests/interfaces/webrtc.idl [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/intersection-observer/idlharness.window-expected.txt
LayoutTests/imported/w3c/web-platform-tests/mathml/relations/html5-tree/math-global-event-handlers.tentative-expected.txt
LayoutTests/imported/w3c/web-platform-tests/mediacapture-record/idlharness.window-expected.txt
LayoutTests/imported/w3c/web-platform-tests/mediacapture-streams/MediaDevices-IDL-all-expected.txt
LayoutTests/imported/w3c/web-platform-tests/mediacapture-streams/MediaDevices-IDL-enumerateDevices-expected.txt
LayoutTests/imported/w3c/web-platform-tests/mst-content-hint/idlharness.window-expected.txt
LayoutTests/imported/w3c/web-platform-tests/notifications/interfaces-expected.txt
LayoutTests/imported/w3c/web-platform-tests/resize-observer/idlharness.window-expected.txt
LayoutTests/imported/w3c/web-platform-tests/resource-timing/idlharness.any-expected.txt
LayoutTests/imported/w3c/web-platform-tests/resource-timing/idlharness.any.worker-expected.txt
LayoutTests/imported/w3c/web-platform-tests/resources/idlharness.js
LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/lib/webidl2.js
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/clients-matchall-frozen.https-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/clients-matchall-frozen.https.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-cors-xhr.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-event-within-sw.https.html
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/getregistrations.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/getregistrations.https.html
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/import-scripts-redirect.https.html
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/interfaces-sw.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/interfaces-sw.https.html
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/interfaces-window.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/interfaces-window.https.html
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/resources/clients-frame-freeze.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/resources/clients-matchall-worker.js
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/resources/dummy-shared-worker-interceptor.js [deleted file]
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/resources/dummy-shared-worker-interceptor.js.headers [deleted file]
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/resources/dummy-worker-interceptor.js
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/resources/dummy-worker-script.py [deleted file]
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/resources/import-scripts-404-after-update-plus-update-worker.js [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/resources/import-scripts-404-after-update.js [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/resources/import-scripts-404.js [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/resources/import-scripts-redirect-on-second-time-worker.js [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/resources/interfaces-worker.sub.js
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/resources/load_worker.js
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/resources/nested_load_worker.js
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/resources/postmessage-on-load-worker.js [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/resources/shared-worker-controlled.js [deleted file]
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/resources/shared-worker-import.js [deleted file]
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/resources/update-during-installation-worker.js
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/resources/update-smaller-body-after-update-worker.js [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/resources/update-smaller-body-before-update-worker.js [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/resources/update-worker-from-file.py [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/resources/update-worker.py
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/resources/w3c-import.log
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/resources/worker-interception-iframe.https.html [deleted file]
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/resources/worker-load-interceptor.js
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/shared-worker-controlled.https.html [deleted file]
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/update-import-scripts.https-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/update-import-scripts.https.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/update-not-allowed.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/update-registration-with-type.https.html
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/update.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/update.https.html
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/w3c-import.log
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/websocket.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/worker-client-id.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/worker-interception.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/worker-interception.https.html
LayoutTests/imported/w3c/web-platform-tests/service-workers/stub-3.1-service-worker-obj-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/stub-3.2-navigator-service-worker-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/stub-4.1-service-worker-global-scope-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/stub-4.5-response-objects-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/stub-4.6.3-cache-storage-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/stub-4.7.4.1-fetch-event-section-expected.txt
LayoutTests/imported/w3c/web-platform-tests/url/interfaces.any-expected.txt
LayoutTests/imported/w3c/web-platform-tests/url/interfaces.any.worker-expected.txt
LayoutTests/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-audiobuffer-interface/idl-test-expected.txt
LayoutTests/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-audiodestinationnode-interface/idl-test-expected.txt
LayoutTests/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-delaynode-interface/idl-test-expected.txt
LayoutTests/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-gainnode-interface/idl-test-expected.txt
LayoutTests/imported/w3c/web-platform-tests/webrtc/idlharness.https.window-expected.txt
LayoutTests/imported/w3c/web-platform-tests/workers/interfaces.worker-expected.txt
LayoutTests/imported/w3c/web-platform-tests/xhr/idlharness.any-expected.txt
LayoutTests/imported/w3c/web-platform-tests/xhr/idlharness.any.worker-expected.txt
LayoutTests/platform/ios/TestExpectations
LayoutTests/tests-options.json

index 2036fca..bed6c5a 100644 (file)
@@ -1,3 +1,12 @@
+2019-09-09  Chris Dumez  <cdumez@apple.com>
+
+        Resync service workers WPT tests from upstream
+        https://bugs.webkit.org/show_bug.cgi?id=201589
+
+        Reviewed by Youenn Fablet.
+
+        * TestExpectations:
+
 2019-09-09  Jiewen Tan  <jiewen_tan@apple.com>
 
         Layout Test http/wpt/webauthn/public-key-credential-create-failure-u2f-silent.https.html is flaky
index 9f1434c..0e16496 100644 (file)
@@ -211,15 +211,17 @@ imported/w3c/web-platform-tests/service-workers/service-worker/fetch-mixed-conte
 imported/w3c/web-platform-tests/service-workers/service-worker/multipart-image.https.html [ Skip ]
 imported/w3c/web-platform-tests/service-workers/service-worker/skip-waiting-using-registration.https.html [ Skip ]
 imported/w3c/web-platform-tests/service-workers/service-worker/skip-waiting-without-using-registration.https.html [ Skip ]
-imported/w3c/web-platform-tests/service-workers/service-worker/update-not-allowed.https.html [ Skip ]
 imported/w3c/web-platform-tests/service-workers/service-worker/worker-in-sandboxed-iframe-by-csp-fetch-event.https.html [ Skip ]
 [ Debug ] imported/w3c/web-platform-tests/service-workers/service-worker/ready.https.html [ Skip ]
 
 # Newly imported service worker tests that are flaky.
 imported/w3c/web-platform-tests/service-workers/service-worker/navigation-redirect-to-http.https.html [ Pass Failure ]
-imported/w3c/web-platform-tests/service-workers/service-worker/resource-timing.sub.https.html [ Pass Failure ]
 imported/w3c/web-platform-tests/service-workers/service-worker/worker-client-id.https.html [ Pass Failure ]
 imported/w3c/web-platform-tests/xhr/event-timeout-order.htm [ Pass Failure ]
+imported/w3c/web-platform-tests/service-workers/service-worker/update-not-allowed.https.html [ Pass Failure ]
+
+# The tests prints out a UUID that is different every time.
+imported/w3c/web-platform-tests/service-workers/service-worker/update.https.html [ Pass Failure ]
 
 # This test is timing out because it relies on http://www1.localhost:8800 host for cross origin checks.
 imported/w3c/web-platform-tests/cors/remote-origin.htm [ Skip ]
@@ -248,7 +250,6 @@ imported/w3c/web-platform-tests/service-workers/service-worker/update-after-oned
 
 # Unsupported features: SharedWorker, NavigationPreload
 imported/w3c/web-platform-tests/service-workers/service-worker/navigation-preload [ Skip ]
-imported/w3c/web-platform-tests/service-workers/service-worker/shared-worker-controlled.https.html [ Skip ]
 imported/w3c/web-platform-tests/service-workers/service-worker/claim-shared-worker-fetch.https.html [ Skip ]
 
 # Unsupported features: PerformanceNavigationTiming
@@ -266,6 +267,7 @@ webkit.org/b/188246 imported/w3c/web-platform-tests/service-workers/service-work
 # Console log lines may appear in a different order so we silence them.
 imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/location-protocol-setter-non-broken.html [ DumpJSConsoleLogInStdErr ]
 imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/location-protocol-setter-non-broken-weird.html [ DumpJSConsoleLogInStdErr ]
+imported/w3c/web-platform-tests/service-workers/service-worker/fetch-cors-xhr.https.html [ DumpJSConsoleLogInStdErr ]
 
 # Newly imported WPT tests that are timing out.
 imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/location-origin-idna.sub.window.html [ Skip ]
index e30903f..75ef556 100644 (file)
@@ -1,3 +1,255 @@
+2019-09-09  Chris Dumez  <cdumez@apple.com>
+
+        Resync service workers WPT tests from upstream
+        https://bugs.webkit.org/show_bug.cgi?id=201589
+
+        Reviewed by Youenn Fablet.
+
+        Resync service workers WPT tests from upstream 820f0f86047e6e26401e.
+
+        * web-platform-tests/service-workers/service-worker/Service-Worker-Allowed-header.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/Service-Worker-Allowed-header.https.html:
+        * web-platform-tests/service-workers/service-worker/ServiceWorkerGlobalScope/postmessage.https.html:
+        * web-platform-tests/service-workers/service-worker/ServiceWorkerGlobalScope/unregister.https.html:
+        * web-platform-tests/service-workers/service-worker/ServiceWorkerGlobalScope/update.https.html:
+        * web-platform-tests/service-workers/service-worker/about-blank-replacement.https.html:
+        * web-platform-tests/service-workers/service-worker/activate-event-after-install-state-change.https.html:
+        * web-platform-tests/service-workers/service-worker/activation-after-registration.https.html:
+        * web-platform-tests/service-workers/service-worker/activation.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/activation.https.html:
+        * web-platform-tests/service-workers/service-worker/appcache-ordering-main.https.html:
+        * web-platform-tests/service-workers/service-worker/claim-fetch-with-appcache.https-expected.txt: Removed.
+        * web-platform-tests/service-workers/service-worker/claim-fetch-with-appcache.https.html: Removed.
+        * web-platform-tests/service-workers/service-worker/claim-fetch.https.html:
+        * web-platform-tests/service-workers/service-worker/claim-not-using-registration.https.html:
+        * web-platform-tests/service-workers/service-worker/claim-shared-worker-fetch.https.html:
+        * web-platform-tests/service-workers/service-worker/claim-using-registration.https.html:
+        * web-platform-tests/service-workers/service-worker/claim-worker-fetch.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/claim-worker-fetch.https.html:
+        * web-platform-tests/service-workers/service-worker/client-id.https.html:
+        * web-platform-tests/service-workers/service-worker/clients-get-client-types.https.html:
+        * web-platform-tests/service-workers/service-worker/clients-get-resultingClientId.https-expected.txt: Removed.
+        * web-platform-tests/service-workers/service-worker/clients-get-resultingClientId.https.html: Removed.
+        * web-platform-tests/service-workers/service-worker/clients-get.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/clients-get.https.html:
+        * web-platform-tests/service-workers/service-worker/clients-matchall-client-types.https.html:
+        * web-platform-tests/service-workers/service-worker/clients-matchall-exact-controller.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/clients-matchall-exact-controller.https.html:
+        * web-platform-tests/service-workers/service-worker/clients-matchall-include-uncontrolled.https.html:
+        * web-platform-tests/service-workers/service-worker/clients-matchall-order.https.html:
+        * web-platform-tests/service-workers/service-worker/clients-matchall.https.html:
+        * web-platform-tests/service-workers/service-worker/controller-on-disconnect.https.html:
+        * web-platform-tests/service-workers/service-worker/controller-on-load.https.html:
+        * web-platform-tests/service-workers/service-worker/controller-on-reload.https.html:
+        * web-platform-tests/service-workers/service-worker/data-transfer-files.https-expected.txt: Removed.
+        * web-platform-tests/service-workers/service-worker/data-transfer-files.https.html: Removed.
+        * web-platform-tests/service-workers/service-worker/detached-context.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/detached-context.https.html:
+        * web-platform-tests/service-workers/service-worker/extendable-event-async-waituntil.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/extendable-event-async-waituntil.https.html:
+        * web-platform-tests/service-workers/service-worker/extendable-event-waituntil.https.html:
+        * web-platform-tests/service-workers/service-worker/fetch-audio-tainting.https-expected.txt: Removed.
+        * web-platform-tests/service-workers/service-worker/fetch-audio-tainting.https.html: Removed.
+        * web-platform-tests/service-workers/service-worker/fetch-canvas-tainting-double-write.https-expected.txt: Removed.
+        * web-platform-tests/service-workers/service-worker/fetch-canvas-tainting-double-write.https.html: Removed.
+        * web-platform-tests/service-workers/service-worker/fetch-canvas-tainting-video-cache.https.html:
+        * web-platform-tests/service-workers/service-worker/fetch-canvas-tainting-video.https.html:
+        * web-platform-tests/service-workers/service-worker/fetch-cors-xhr.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/fetch-cors-xhr.https.html:
+        * web-platform-tests/service-workers/service-worker/fetch-csp.https.html:
+        * web-platform-tests/service-workers/service-worker/fetch-event-after-navigation-within-page.https.html:
+        * web-platform-tests/service-workers/service-worker/fetch-event-async-respond-with.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/fetch-event-async-respond-with.https.html:
+        * web-platform-tests/service-workers/service-worker/fetch-event-network-error.https.html:
+        * web-platform-tests/service-workers/service-worker/fetch-event-referrer-policy.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/fetch-event-referrer-policy.https.html:
+        * web-platform-tests/service-workers/service-worker/fetch-event-respond-with-argument.https.html:
+        * web-platform-tests/service-workers/service-worker/fetch-event-respond-with-body-loaded-in-chunk.https.html:
+        * web-platform-tests/service-workers/service-worker/fetch-event-respond-with-stops-propagation.https.html:
+        * web-platform-tests/service-workers/service-worker/fetch-event-throws-after-respond-with.https.html:
+        * web-platform-tests/service-workers/service-worker/fetch-event.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/fetch-event.https.html:
+        * web-platform-tests/service-workers/service-worker/fetch-frame-resource.https.html:
+        * web-platform-tests/service-workers/service-worker/fetch-header-visibility.https.html:
+        * web-platform-tests/service-workers/service-worker/fetch-request-css-base-url.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/fetch-request-css-base-url.https.html:
+        * web-platform-tests/service-workers/service-worker/fetch-request-css-images.https.html:
+        * web-platform-tests/service-workers/service-worker/fetch-request-html-imports.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/fetch-request-html-imports.https.html:
+        * web-platform-tests/service-workers/service-worker/fetch-request-no-freshness-headers.https.html:
+        * web-platform-tests/service-workers/service-worker/fetch-request-redirect.https.html:
+        * web-platform-tests/service-workers/service-worker/fetch-request-xhr-sync.https.html:
+        * web-platform-tests/service-workers/service-worker/fetch-response-xhr.https.html:
+        * web-platform-tests/service-workers/service-worker/fetch-waits-for-activate.https.html:
+        * web-platform-tests/service-workers/service-worker/getregistration.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/getregistration.https.html:
+        * web-platform-tests/service-workers/service-worker/import-module-scripts.https-expected.txt: Removed.
+        * web-platform-tests/service-workers/service-worker/import-module-scripts.https.html: Removed.
+        * web-platform-tests/service-workers/service-worker/import-scripts-mime-types.https-expected.txt: Removed.
+        * web-platform-tests/service-workers/service-worker/import-scripts-mime-types.https.html: Removed.
+        * web-platform-tests/service-workers/service-worker/import-scripts-resource-map.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/import-scripts-resource-map.https.html:
+        * web-platform-tests/service-workers/service-worker/interfaces-window.https.html:
+        * web-platform-tests/service-workers/service-worker/invalid-blobtype.https.html:
+        * web-platform-tests/service-workers/service-worker/invalid-header.https.html:
+        * web-platform-tests/service-workers/service-worker/iso-latin1-header.https.html:
+        * web-platform-tests/service-workers/service-worker/multiple-update.https.html:
+        * web-platform-tests/service-workers/service-worker/navigation-redirect.https.html:
+        * web-platform-tests/service-workers/service-worker/onactivate-script-error.https.html:
+        * web-platform-tests/service-workers/service-worker/performance-timeline.https.html:
+        * web-platform-tests/service-workers/service-worker/postmessage-from-waiting-serviceworker.https.html:
+        * web-platform-tests/service-workers/service-worker/postmessage-to-client-message-queue.https-expected.txt: Removed.
+        * web-platform-tests/service-workers/service-worker/postmessage-to-client-message-queue.https.html: Removed.
+        * web-platform-tests/service-workers/service-worker/postmessage-to-client.https.html:
+        * web-platform-tests/service-workers/service-worker/postmessage.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/postmessage.https.html:
+        * web-platform-tests/service-workers/service-worker/ready.https.html:
+        * web-platform-tests/service-workers/service-worker/redirected-response.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/redirected-response.https.html:
+        * web-platform-tests/service-workers/service-worker/referer.https.html:
+        * web-platform-tests/service-workers/service-worker/register-default-scope.https.html:
+        * web-platform-tests/service-workers/service-worker/register-wait-forever-in-install-worker.https.html:
+        * web-platform-tests/service-workers/service-worker/registration-end-to-end.https.html:
+        * web-platform-tests/service-workers/service-worker/registration-events.https.html:
+        * web-platform-tests/service-workers/service-worker/registration-mime-types.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/registration-mime-types.https.html:
+        * web-platform-tests/service-workers/service-worker/registration-schedule-job.https-expected.txt: Removed.
+        * web-platform-tests/service-workers/service-worker/registration-schedule-job.https.html: Removed.
+        * web-platform-tests/service-workers/service-worker/registration-scope.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/registration-security-error.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/registration-service-worker-attributes.https.html:
+        * web-platform-tests/service-workers/service-worker/registration-updateviacache.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/registration-updateviacache.https.html:
+        * web-platform-tests/service-workers/service-worker/resource-timing.https.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/resource-timing.sub.https.html.
+        * web-platform-tests/service-workers/service-worker/resource-timing.sub.https-expected.txt: Removed.
+        * web-platform-tests/service-workers/service-worker/resources/about-blank-replacement-ping-frame.py:
+        * web-platform-tests/service-workers/service-worker/resources/appcache-ordering.manifest:
+        * web-platform-tests/service-workers/service-worker/resources/claim-worker.js:
+        * web-platform-tests/service-workers/service-worker/resources/classic-worker.js: Removed.
+        * web-platform-tests/service-workers/service-worker/resources/clients-get-cross-origin-frame.html:
+        * web-platform-tests/service-workers/service-worker/resources/clients-get-resultingClientId-worker.js: Removed.
+        * web-platform-tests/service-workers/service-worker/resources/clients-get-worker.js:
+        (self.onmessage):
+        * web-platform-tests/service-workers/service-worker/resources/enable-client-message-queue.html: Removed.
+        * web-platform-tests/service-workers/service-worker/resources/extendable-event-async-waituntil.js:
+        (switch):
+        (event.request.url.indexOf):
+        (else.event.request.url.indexOf):
+        * web-platform-tests/service-workers/service-worker/resources/fetch-canvas-tainting-double-write-worker.js: Removed.
+        * web-platform-tests/service-workers/service-worker/resources/fetch-cors-xhr-iframe.html:
+        * web-platform-tests/service-workers/service-worker/resources/fetch-event-async-respond-with-worker.js:
+        (setTimeout):
+        * web-platform-tests/service-workers/service-worker/resources/fetch-event-network-fallback-worker.js:
+        * web-platform-tests/service-workers/service-worker/resources/fetch-event-test-worker.js:
+        * web-platform-tests/service-workers/service-worker/resources/fetch-request-css-base-url-iframe.html:
+        * web-platform-tests/service-workers/service-worker/resources/fetch-request-css-base-url-worker.js:
+        (self.onmessage):
+        (url.indexOf):
+        (else.url.indexOf):
+        * web-platform-tests/service-workers/service-worker/resources/get-resultingClientId-worker.js: Removed.
+        * web-platform-tests/service-workers/service-worker/resources/import-relative.xsl: Removed.
+        * web-platform-tests/service-workers/service-worker/resources/import-scripts-diff-resource-map-worker.js: Removed.
+        * web-platform-tests/service-workers/service-worker/resources/import-scripts-get.py: Removed.
+        * web-platform-tests/service-workers/service-worker/resources/import-scripts-mime-types-worker.js: Removed.
+        * web-platform-tests/service-workers/service-worker/resources/imported-classic-script.js: Removed.
+        * web-platform-tests/service-workers/service-worker/resources/imported-module-script.js: Removed.
+        * web-platform-tests/service-workers/service-worker/resources/message-vs-microtask.html: Removed.
+        * web-platform-tests/service-workers/service-worker/resources/module-worker.js: Removed.
+        * web-platform-tests/service-workers/service-worker/resources/navigation-redirect-other-origin.html:
+        * web-platform-tests/service-workers/service-worker/resources/navigation-redirect-out-scope.py:
+        * web-platform-tests/service-workers/service-worker/resources/navigation-redirect-scope1.py:
+        * web-platform-tests/service-workers/service-worker/resources/navigation-redirect-scope2.py:
+        * web-platform-tests/service-workers/service-worker/resources/nested-iframe-parent.html: Removed.
+        * web-platform-tests/service-workers/service-worker/resources/performance-timeline-worker.js:
+        (promise_test.):
+        (promise_test):
+        * web-platform-tests/service-workers/service-worker/resources/postmessage-echo-worker.js: Removed.
+        * web-platform-tests/service-workers/service-worker/resources/redirect-worker.js:
+        (event.waitUntil.Promise.all.waitUntilPromiseList.then):
+        (then):
+        (waitUntilPromise.caches.open.cacheName.then):
+        (event.respondWith.waitUntilPromise.then):
+        * web-platform-tests/service-workers/service-worker/resources/registration-tests-mime-types.js:
+        (registration_tests_mime_types):
+        * web-platform-tests/service-workers/service-worker/resources/registration-tests-scope.js:
+        (registration_tests_scope):
+        * web-platform-tests/service-workers/service-worker/resources/registration-tests-security-error.js:
+        (registration_tests_security_error):
+        * web-platform-tests/service-workers/service-worker/resources/resource-timing-iframe.sub.html:
+        * web-platform-tests/service-workers/service-worker/resources/service-worker-csp-worker.py:
+        * web-platform-tests/service-workers/service-worker/resources/service-worker-header.py:
+        (main):
+        * web-platform-tests/service-workers/service-worker/resources/skip-waiting-installed-worker.js:
+        (event.waitUntil.self.skipWaiting.then):
+        * web-platform-tests/service-workers/service-worker/resources/stalling-service-worker.js: Removed.
+        * web-platform-tests/service-workers/service-worker/resources/test-helpers.sub.js:
+        (wait_for_update):
+        (async.wait_for_activation_on_dummy_scope):
+        * web-platform-tests/service-workers/service-worker/resources/test-request-headers-worker.js: Removed.
+        * web-platform-tests/service-workers/service-worker/resources/test-request-headers-worker.py: Removed.
+        * web-platform-tests/service-workers/service-worker/resources/trickle.py: Removed.
+        * web-platform-tests/service-workers/service-worker/resources/update-during-installation-worker.js: Removed.
+        * web-platform-tests/service-workers/service-worker/resources/update-during-installation-worker.py: Removed.
+        * web-platform-tests/service-workers/service-worker/resources/update-fetch-worker.py: Removed.
+        * web-platform-tests/service-workers/service-worker/resources/update-missing-import-scripts-imported-worker.py: Removed.
+        * web-platform-tests/service-workers/service-worker/resources/update-missing-import-scripts-main-worker.py: Removed.
+        * web-platform-tests/service-workers/service-worker/resources/update-registration-with-type.py: Removed.
+        * web-platform-tests/service-workers/service-worker/resources/w3c-import.log:
+        * web-platform-tests/service-workers/service-worker/resources/worker-interception-iframe.https.html:
+        * web-platform-tests/service-workers/service-worker/resources/worker-load-interceptor.js:
+        (self.onfetch):
+        * web-platform-tests/service-workers/service-worker/resources/worker-testharness.js:
+        (create_temporary_cache):
+        * web-platform-tests/service-workers/service-worker/resources/xhr-iframe.html: Removed.
+        * web-platform-tests/service-workers/service-worker/resources/xhr-response-url-worker.js: Removed.
+        * web-platform-tests/service-workers/service-worker/resources/xsl-base-url-iframe.xml: Removed.
+        * web-platform-tests/service-workers/service-worker/resources/xsl-base-url-worker.js: Removed.
+        * web-platform-tests/service-workers/service-worker/resources/xslt-pass.xsl: Removed.
+        * web-platform-tests/service-workers/service-worker/service-worker-csp-connect.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/service-worker-csp-default.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/service-worker-csp-script.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/service-worker-header.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/service-worker-header.https.html:
+        * web-platform-tests/service-workers/service-worker/serviceworker-message-event-historical.https.html:
+        * web-platform-tests/service-workers/service-worker/shared-worker-controlled.https.html:
+        * web-platform-tests/service-workers/service-worker/skip-waiting-installed.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/skip-waiting-installed.https.html:
+        * web-platform-tests/service-workers/service-worker/skip-waiting-using-registration.https.html:
+        * web-platform-tests/service-workers/service-worker/skip-waiting-without-using-registration.https.html:
+        * web-platform-tests/service-workers/service-worker/skip-waiting.https.html:
+        * web-platform-tests/service-workers/service-worker/state.https.html:
+        * web-platform-tests/service-workers/service-worker/synced-state.https.html:
+        * web-platform-tests/service-workers/service-worker/uncontrolled-page.https.html:
+        * web-platform-tests/service-workers/service-worker/unregister-then-register-new-script.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/unregister-then-register-new-script.https.html:
+        * web-platform-tests/service-workers/service-worker/unregister-then-register.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/unregister-then-register.https.html:
+        * web-platform-tests/service-workers/service-worker/update-after-navigation-redirect.https.html:
+        * web-platform-tests/service-workers/service-worker/update-after-oneday.https.html:
+        * web-platform-tests/service-workers/service-worker/update-bytecheck.https.html:
+        * web-platform-tests/service-workers/service-worker/update-missing-import-scripts.https-expected.txt: Removed.
+        * web-platform-tests/service-workers/service-worker/update-missing-import-scripts.https.html: Removed.
+        * web-platform-tests/service-workers/service-worker/update-no-cache-request-headers.https-expected.txt: Removed.
+        * web-platform-tests/service-workers/service-worker/update-no-cache-request-headers.https.html: Removed.
+        * web-platform-tests/service-workers/service-worker/update-not-allowed.https-expected.txt: Removed.
+        * web-platform-tests/service-workers/service-worker/update-not-allowed.https.html: Removed.
+        * web-platform-tests/service-workers/service-worker/update-on-navigation.https-expected.txt: Removed.
+        * web-platform-tests/service-workers/service-worker/update-on-navigation.https.html: Removed.
+        * web-platform-tests/service-workers/service-worker/update-recovery.https.html:
+        * web-platform-tests/service-workers/service-worker/update-registration-with-type.https-expected.txt: Removed.
+        * web-platform-tests/service-workers/service-worker/update-registration-with-type.https.html: Removed.
+        * web-platform-tests/service-workers/service-worker/w3c-import.log:
+        * web-platform-tests/service-workers/service-worker/websocket.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/websocket.https.html:
+        * web-platform-tests/service-workers/service-worker/windowclient-navigate.https.html:
+        * web-platform-tests/service-workers/service-worker/worker-client-id.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/worker-interception.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/worker-interception.https.html:
+        * web-platform-tests/service-workers/service-worker/xhr-response-url.https-expected.txt: Removed.
+        * web-platform-tests/service-workers/service-worker/xhr-response-url.https.html: Removed.
+        * web-platform-tests/service-workers/service-worker/xsl-base-url.https-expected.txt: Removed.
+        * web-platform-tests/service-workers/service-worker/xsl-base-url.https.html: Removed.
+
 2019-09-09  Ryan Haddad  <ryanhaddad@apple.com>
 
         Unreviewed, rolling out r249574.
index 088df76..cb4ea87 100644 (file)
     "web-platform-tests/worklets": "skip", 
     "web-platform-tests/x-frame-options": "skip", 
     "web-platform-tests/xhr": "import"
-}
+}
\ No newline at end of file
index f14f539..d2851a6 100644 (file)
@@ -1,4 +1,3 @@
-CONSOLE MESSAGE: line 482: callback not yet supported
 
 PASS Test driver 
 PASS Partial interface WindowOrWorkerGlobalScope: original interface defined 
index b3b9510..e4df4c9 100644 (file)
@@ -28,6 +28,10 @@ PASS NodeIterator interface: existence and properties of interface object
 PASS TreeWalker interface: existence and properties of interface object 
 PASS NodeFilter interface: existence and properties of interface object 
 PASS DOMTokenList interface: existence and properties of interface object 
+PASS XPathResult interface: existence and properties of interface object 
+PASS XPathExpression interface: existence and properties of interface object 
+PASS XPathNSResolver interface: existence and properties of interface object 
+PASS XPathEvaluator interface: existence and properties of interface object 
 PASS IDBRequest interface: existence and properties of interface object 
 PASS IDBRequest interface object length 
 PASS IDBRequest interface object name 
index 79d5a1e..514b6f4 100644 (file)
@@ -1,5 +1,3 @@
-CONSOLE MESSAGE: line 482: callback not yet supported
-CONSOLE MESSAGE: line 482: callback not yet supported
 
 PASS Test driver 
 PASS DOMException interface: existence and properties of interface object 
diff --git a/LayoutTests/imported/w3c/web-platform-tests/common/security-features/resources/common.sub.js b/LayoutTests/imported/w3c/web-platform-tests/common/security-features/resources/common.sub.js
new file mode 100644 (file)
index 0000000..c7f94e8
--- /dev/null
@@ -0,0 +1,1226 @@
+/**
+ * @fileoverview Utilities for mixed-content in Web Platform Tests.
+ * @author burnik@google.com (Kristijan Burnik)
+ * Disclaimer: Some methods of other authors are annotated in the corresponding
+ *     method's JSDoc.
+ */
+
+// ===============================================================
+// Types
+// ===============================================================
+// Objects of the following types are used to represent what kind of
+// subresource requests should be sent with what kind of policies,
+// from what kind of possibly nested source contexts.
+// The objects are represented as JSON objects (not JavaScript/Python classes
+// in a strict sense) to be passed between JavaScript/Python code.
+
+// Note: So far this document covers:
+// - resources/common.sub.js : client-side test infra code
+// - scope/ - server-side scripts that serves nested source contexts
+// but doesn't cover:
+// - tools/ - generator scripts that generates top-level HTML documents.
+// There are some policies only handled by generators (e.g. mixed-content
+// opt-ins) and not yet covered by the docs here.
+
+/**
+  @typedef PolicyDelivery
+  @type {object}
+  Referrer policy etc. can be applied/delivered in several ways.
+  A PolicyDelivery object specifies what policy is delivered and how.
+
+  @property {string} deliveryType
+    Specifies how the policy is delivered.
+    The valid deliveryType are:
+
+     "attr"
+        [A] DOM attributes e.g. referrerPolicy.
+
+      "rel-noref"
+        [A] <link rel="noreferrer"> (referrer-policy only).
+
+      "http-rp"
+        [B] HTTP response headers.
+
+      "meta"
+        [B] <meta> elements.
+
+  @property {string} key
+  @property {string} value
+    Specifies what policy to be delivered. The valid keys are:
+
+      "referrerPolicy"
+        Referrer Policy
+        https://w3c.github.io/webappsec-referrer-policy/
+        Valid values are those listed in
+        https://w3c.github.io/webappsec-referrer-policy/#referrer-policy
+        (except that "" is represented as null/None)
+
+  A PolicyDelivery can be specified in several ways:
+
+  - (for [A]) Associated with an individual subresource request and
+    specified in `Subresource.policies`,
+    e.g. referrerPolicy attributes of DOM elements.
+    This is handled in invokeRequest().
+
+  - (for [B]) Associated with an nested environmental settings object and
+    specified in `SourceContext.policies`,
+    e.g. HTTP referrer-policy response headers of HTML/worker scripts.
+    This is handled in server-side under /common/security-features/scope/.
+
+  - (for [B]) Associated with the top-level HTML document.
+    This is handled by the generators.d
+*/
+
+/**
+  @typedef Subresource
+  @type {object}
+  A Subresource represents how a subresource request is sent.
+
+  @property{SubresourceType} subresourceType
+    How the subresource request is sent,
+    e.g. "img-tag" for sending a request via <img src>.
+    See the keys of `subresourceMap` for valid values.
+
+  @property{string} url
+    subresource's URL.
+    Typically this is constructed by getRequestURLs() below.
+
+  @property{PolicyDelivery} policyDeliveries
+    Policies delivered specific to the subresource request.
+*/
+
+/**
+  @typedef SourceContext
+  @type {object}
+  Requests can be possibly sent from various kinds of source contexts, i.e.
+  fetch client's environment settings objects:
+  top-level windows, iframes, or workers.
+  A SourceContext object specifies one environment settings object, and
+  an Array<SourceContext> specifies a possibly nested context,
+  from the outer-most to inner-most environment settings objects.
+
+  For example:
+    [{sourceContextType: "srcdoc"}, {sourceContextType: "worker-classic"}]
+  means that a subresource request is to be sent from
+  a classic dedicated worker created from <iframe srcdoc>
+  inside the top-level HTML document.
+  Note: the top-level document is not included in the array and
+  is assumed implicitly.
+
+  SourceContext (or Array<SourceContext>) is set based on
+  the fetch client's settings object that is used for the subresource request,
+  NOT on module map settings object, and
+  NOT on the inner-most settings object that appears in the test.
+  For example, Array<SourceContext> is `[]` (indicating the top Window)
+  for `worker.js`
+  - When it is the root worker script: `new Worker('worker.js')`, or
+  - When it is imported from the root worker script:
+    `new Worker('top.js', {type: 'module'})`
+    where `top.js` has `import 'worker.js'`.
+  because the request for `worker.js` uses the Window as its fetch client's
+  settings object, while a WorkerGlobalScope is created though.
+
+  @property {string} sourceContextType
+    Kind of the source context to be used.
+    Valid values are the keys of `sourceContextMap` below.
+
+  @property {Array<PolicyDelivery>} policyDeliveries
+    A list of PolicyDelivery applied to the source context.
+*/
+
+// ===============================================================
+// General utility functions
+// ===============================================================
+
+function timeoutPromise(t, ms) {
+  return new Promise(resolve => { t.step_timeout(resolve, ms); });
+}
+
+/**
+ * Normalizes the target port for use in a URL. For default ports, this is the
+ *     empty string (omitted port), otherwise it's a colon followed by the port
+ *     number. Ports 80, 443 and an empty string are regarded as default ports.
+ * @param {number} targetPort The port to use
+ * @return {string} The port portion for using as part of a URL.
+ */
+function getNormalizedPort(targetPort) {
+  return ([80, 443, ""].indexOf(targetPort) >= 0) ? "" : ":" + targetPort;
+}
+
+/**
+ * Creates a GUID.
+ *     See: https://en.wikipedia.org/wiki/Globally_unique_identifier
+ *     Original author: broofa (http://www.broofa.com/)
+ *     Sourced from: http://stackoverflow.com/a/2117523/4949715
+ * @return {string} A pseudo-random GUID.
+ */
+function guid() {
+  return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
+    var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
+    return v.toString(16);
+  });
+}
+
+/**
+ * Initiates a new XHR via GET.
+ * @param {string} url The endpoint URL for the XHR.
+ * @param {string} responseType Optional - how should the response be parsed.
+ *     Default is "json".
+ *     See: https://xhr.spec.whatwg.org/#dom-xmlhttprequest-responsetype
+ * @return {Promise} A promise wrapping the success and error events.
+ */
+function xhrRequest(url, responseType) {
+  return new Promise(function(resolve, reject) {
+    var xhr = new XMLHttpRequest();
+    xhr.open('GET', url, true);
+    xhr.responseType = responseType || "json";
+
+    xhr.addEventListener("error", function() {
+      reject(Error("Network Error"));
+    });
+
+    xhr.addEventListener("load", function() {
+      if (xhr.status != 200)
+        reject(Error(xhr.statusText));
+      else
+        resolve(xhr.response);
+    });
+
+    xhr.send();
+  });
+}
+
+/**
+ * Sets attributes on a given DOM element.
+ * @param {DOMElement} element The element on which to set the attributes.
+ * @param {object} An object with keys (serving as attribute names) and values.
+ */
+function setAttributes(el, attrs) {
+  attrs = attrs || {}
+  for (var attr in attrs) {
+    if (attr !== 'src')
+      el.setAttribute(attr, attrs[attr]);
+  }
+  // Workaround for Chromium: set <img>'s src attribute after all other
+  // attributes to ensure the policy is applied.
+  for (var attr in attrs) {
+    if (attr === 'src')
+      el.setAttribute(attr, attrs[attr]);
+  }
+}
+
+/**
+ * Binds to success and error events of an object wrapping them into a promise
+ *     available through {@code element.eventPromise}. The success event
+ *     resolves and error event rejects.
+ * This method adds event listeners, and then removes all the added listeners
+ * when one of listened event is fired.
+ * @param {object} element An object supporting events on which to bind the
+ *     promise.
+ * @param {string} resolveEventName [="load"] The event name to bind resolve to.
+ * @param {string} rejectEventName [="error"] The event name to bind reject to.
+ */
+function bindEvents(element, resolveEventName, rejectEventName) {
+  element.eventPromise =
+      bindEvents2(element, resolveEventName, element, rejectEventName);
+}
+
+// Returns a promise wrapping success and error events of objects.
+// This is a variant of bindEvents that can accept separate objects for each
+// events and two events to reject, and doesn't set `eventPromise`.
+//
+// When `resolveObject`'s `resolveEventName` event (default: "load") is
+// fired, the promise is resolved with the event.
+//
+// When `rejectObject`'s `rejectEventName` event (default: "error") or
+// `rejectObject2`'s `rejectEventName2` event (default: "error") is
+// fired, the promise is rejected.
+//
+// `rejectObject2` is optional.
+function bindEvents2(resolveObject, resolveEventName, rejectObject, rejectEventName, rejectObject2, rejectEventName2) {
+  return new Promise(function(resolve, reject) {
+    const actualResolveEventName = resolveEventName || "load";
+    const actualRejectEventName = rejectEventName || "error";
+    const actualRejectEventName2 = rejectEventName2 || "error";
+
+    const resolveHandler = function(event) {
+      cleanup();
+      resolve(event);
+    };
+
+    const rejectHandler = function(event) {
+      // Chromium starts propagating errors from worker.onerror to
+      // window.onerror. This handles the uncaught exceptions in tests.
+      event.preventDefault();
+      cleanup();
+      reject(event);
+    };
+
+    const cleanup = function() {
+      resolveObject.removeEventListener(actualResolveEventName, resolveHandler);
+      rejectObject.removeEventListener(actualRejectEventName, rejectHandler);
+      if (rejectObject2) {
+        rejectObject2.removeEventListener(actualRejectEventName2, rejectHandler);
+      }
+    };
+
+    resolveObject.addEventListener(actualResolveEventName, resolveHandler);
+    rejectObject.addEventListener(actualRejectEventName, rejectHandler);
+    if (rejectObject2) {
+      rejectObject2.addEventListener(actualRejectEventName2, rejectHandler);
+    }
+  });
+}
+
+/**
+ * Creates a new DOM element.
+ * @param {string} tagName The type of the DOM element.
+ * @param {object} attrs A JSON with attributes to apply to the element.
+ * @param {DOMElement} parent Optional - an existing DOM element to append to
+ *     If not provided, the returned element will remain orphaned.
+ * @param {boolean} doBindEvents Optional - Whether to bind to load and error
+ *     events and provide the promise wrapping the events via the element's
+ *     {@code eventPromise} property. Default value evaluates to false.
+ * @return {DOMElement} The newly created DOM element.
+ */
+function createElement(tagName, attrs, parentNode, doBindEvents) {
+  var element = document.createElement(tagName);
+
+  if (doBindEvents)
+    bindEvents(element);
+
+  // We set the attributes after binding to events to catch any
+  // event-triggering attribute changes. E.g. form submission.
+  //
+  // But be careful with images: unlike other elements they will start the load
+  // as soon as the attr is set, even if not in the document yet, and sometimes
+  // complete it synchronously, so the append doesn't have the effect we want.
+  // So for images, we want to set the attrs after appending, whereas for other
+  // elements we want to do it before appending.
+  var isImg = (tagName == "img");
+  if (!isImg)
+    setAttributes(element, attrs);
+
+  if (parentNode)
+    parentNode.appendChild(element);
+
+  if (isImg)
+    setAttributes(element, attrs);
+
+  return element;
+}
+
+function createRequestViaElement(tagName, attrs, parentNode) {
+  return createElement(tagName, attrs, parentNode, true).eventPromise;
+}
+
+/**
+ * Creates a new empty iframe and appends it to {@code document.body} .
+ * @param {string} name The name and ID of the new iframe.
+ * @param {boolean} doBindEvents Whether to bind load and error events.
+ * @return {DOMElement} The newly created iframe.
+ */
+function createHelperIframe(name, doBindEvents) {
+  return createElement("iframe",
+                       {"name": name, "id": name},
+                       document.body,
+                       doBindEvents);
+}
+
+function wrapResult(server_data) {
+  if (typeof(server_data) === "string") {
+    throw server_data;
+  }
+  return {
+    referrer: server_data.headers.referer,
+    headers: server_data.headers
+  }
+}
+
+// ===============================================================
+// Subresources
+// ===============================================================
+
+/**
+  @typedef RequestResult
+  @type {object}
+  Represents the result of sending an request.
+  All properties are optional. See the comments for
+  requestVia*() and invokeRequest() below to see which properties are set.
+
+  @property {Array<Object<string, string>>} headers
+    HTTP request headers sent to server.
+  @property {string} referrer - Referrer.
+  @property {string} location - The URL of the subresource.
+  @property {string} sourceContextUrl
+    the URL of the global object where the actual request is sent.
+*/
+
+/**
+  requestVia*(url, additionalAttributes) functions send a subresource
+  request from the current environment settings object.
+
+  @param {string} url
+    The URL of the subresource.
+  @param {Object<string, string>} additionalAttributes
+    Additional attributes set to DOM elements
+    (element-initiated requests only).
+
+  @returns {Promise} that are resolved with a RequestResult object
+  on successful requests.
+
+  - Category 1:
+      `headers`: set.
+      `referrer`: set via `document.referrer`.
+      `location`: set via `document.location`.
+      See `template/document.html.template`.
+  - Category 2:
+      `headers`: set.
+      `referrer`: set to `headers.referer` by `wrapResult()`.
+      `location`: not set.
+  - Category 3:
+      All the keys listed above are NOT set.
+  `sourceContextUrl` is not set here.
+
+  -------------------------------- -------- --------------------------
+  Function name                    Category Used in
+                                            -------- ------- ---------
+                                            referrer mixed-  upgrade-
+                                            policy   content insecure-
+                                            policy   content request
+  -------------------------------- -------- -------- ------- ---------
+  requestViaAnchor                 1        Y        Y       -
+  requestViaArea                   1        Y        Y       -
+  requestViaAudio                  3        -        Y       -
+  requestViaDedicatedWorker        2        Y        Y       Y
+  requestViaFetch                  2        Y        Y       -
+  requestViaForm                   3        -        Y       -
+  requestViaIframe                 1        Y        Y       -
+  requestViaImage                  2        Y        Y       -
+  requestViaLinkPrefetch           3        -        Y       -
+  requestViaLinkStylesheet         3        -        Y       -
+  requestViaObject                 3        -        Y       -
+  requestViaPicture                3        -        Y       -
+  requestViaScript                 2        Y        Y       -
+  requestViaSendBeacon             3        -        Y       -
+  requestViaSharedWorker           2        Y        -       -
+  requestViaVideo                  3        -        Y       -
+  requestViaWebSocket              3        -        Y       -
+  requestViaWorklet                3        -        Y       Y
+  requestViaXhr                    2        Y        Y       -
+  -------------------------------- -------- -------- ------- ---------
+*/
+
+/**
+ * Creates a new iframe, binds load and error events, sets the src attribute and
+ *     appends it to {@code document.body} .
+ * @param {string} url The src for the iframe.
+ * @return {Promise} The promise for success/error events.
+ */
+function requestViaIframe(url, additionalAttributes) {
+  const iframe = createElement(
+      "iframe",
+      Object.assign({"src": url}, additionalAttributes),
+      document.body,
+      false);
+  return bindEvents2(window, "message", iframe, "error", window, "error")
+      .then(event => {
+          if (event.source !== iframe.contentWindow)
+            return Promise.reject(new Error('Unexpected event.source'));
+          return event.data;
+        });
+}
+
+/**
+ * Creates a new image, binds load and error events, sets the src attribute and
+ *     appends it to {@code document.body} .
+ * @param {string} url The src for the image.
+ * @return {Promise} The promise for success/error events.
+ */
+function requestViaImage(url, additionalAttributes) {
+  const img = createElement(
+      "img",
+      // crossOrigin attribute is added to read the pixel data of the response.
+      Object.assign({"src": url, "crossOrigin": "Anonymous"}, additionalAttributes),
+      document.body, true);
+  return img.eventPromise.then(() => wrapResult(decodeImageData(img)));
+}
+
+// Helper for requestViaImage().
+function decodeImageData(img) {
+  var canvas = document.createElement("canvas");
+  var context = canvas.getContext('2d');
+  context.drawImage(img, 0, 0);
+  var imgData = context.getImageData(0, 0, img.clientWidth, img.clientHeight);
+  const rgba = imgData.data;
+
+  let decodedBytes = new Uint8ClampedArray(rgba.length);
+  let decodedLength = 0;
+
+  for (var i = 0; i + 12 <= rgba.length; i += 12) {
+    // A single byte is encoded in three pixels. 8 pixel octets (among
+    // 9 octets = 3 pixels * 3 channels) are used to encode 8 bits,
+    // the most significant bit first, where `0` and `255` in pixel values
+    // represent `0` and `1` in bits, respectively.
+    // This encoding is used to avoid errors due to different color spaces.
+    const bits = [];
+    for (let j = 0; j < 3; ++j) {
+      bits.push(rgba[i + j * 4 + 0]);
+      bits.push(rgba[i + j * 4 + 1]);
+      bits.push(rgba[i + j * 4 + 2]);
+      // rgba[i + j * 4 + 3]: Skip alpha channel.
+    }
+    // The last one element is not used.
+    bits.pop();
+
+    // Decode a single byte.
+    let byte = 0;
+    for (let j = 0; j < 8; ++j) {
+      byte <<= 1;
+      if (bits[j] >= 128)
+        byte |= 1;
+    }
+
+    // Zero is the string terminator.
+    if (byte == 0)
+      break;
+
+    decodedBytes[decodedLength++] = byte;
+  }
+
+  // Remove trailing nulls from data.
+  decodedBytes = decodedBytes.subarray(0, decodedLength);
+  var string_data = (new TextDecoder("ascii")).decode(decodedBytes);
+
+  return JSON.parse(string_data);
+}
+
+/**
+ * Initiates a new XHR GET request to provided URL.
+ * @param {string} url The endpoint URL for the XHR.
+ * @return {Promise} The promise for success/error events.
+ */
+function requestViaXhr(url) {
+  return xhrRequest(url).then(result => wrapResult(result));
+}
+
+/**
+ * Initiates a new GET request to provided URL via the Fetch API.
+ * @param {string} url The endpoint URL for the Fetch.
+ * @return {Promise} The promise for success/error events.
+ */
+function requestViaFetch(url) {
+  return fetch(url)
+    .then(res => res.json())
+    .then(j => wrapResult(j));
+}
+
+function dedicatedWorkerUrlThatFetches(url) {
+  return `data:text/javascript,
+    fetch('${url}')
+      .then(r => r.json())
+      .then(j => postMessage(j))
+      .catch((e) => postMessage(e.message));`;
+}
+
+function workerUrlThatImports(url) {
+  return `data:text/javascript,import '${url}';`;
+}
+
+/**
+ * Creates a new Worker, binds message and error events wrapping them into.
+ *     {@code worker.eventPromise} and posts an empty string message to start
+ *     the worker.
+ * @param {string} url The endpoint URL for the worker script.
+ * @param {object} options The options for Worker constructor.
+ * @return {Promise} The promise for success/error events.
+ */
+function requestViaDedicatedWorker(url, options) {
+  var worker;
+  try {
+    worker = new Worker(url, options);
+  } catch (e) {
+    return Promise.reject(e);
+  }
+  worker.postMessage('');
+  return bindEvents2(worker, "message", worker, "error")
+    .then(event => wrapResult(event.data));
+}
+
+function requestViaSharedWorker(url) {
+  var worker;
+  try {
+    worker = new SharedWorker(url);
+  } catch(e) {
+    return Promise.reject(e);
+  }
+  const promise = bindEvents2(worker.port, "message", worker, "error")
+    .then(event => wrapResult(event.data));
+  worker.port.start();
+  return promise;
+}
+
+// Returns a reference to a worklet object corresponding to a given type.
+function get_worklet(type) {
+  if (type == 'animation')
+    return CSS.animationWorklet;
+  if (type == 'layout')
+    return CSS.layoutWorklet;
+  if (type == 'paint')
+    return CSS.paintWorklet;
+  if (type == 'audio')
+    return new OfflineAudioContext(2,44100*40,44100).audioWorklet;
+
+  throw new Error('unknown worklet type is passed.');
+}
+
+function requestViaWorklet(type, url) {
+  try {
+    return get_worklet(type).addModule(url);
+  } catch (e) {
+    return Promise.reject(e);
+  }
+}
+
+/**
+ * Sets the href attribute on a navigable DOM element and performs a navigation
+ *     by clicking it. To avoid navigating away from the current execution
+ *     context, a target attribute is set to point to a new helper iframe.
+ * @param {DOMElement} navigableElement The navigable DOMElement
+ * @param {string} url The href for the navigable element.
+ * @return {Promise} The promise for success/error events.
+ */
+function requestViaNavigable(navigableElement, url) {
+  var iframe = createHelperIframe(guid(), false);
+  setAttributes(navigableElement,
+                {"href": url,
+                 "target": iframe.name});
+
+  const promise =
+    bindEvents2(window, "message", iframe, "error", window, "error")
+      .then(event => {
+          if (event.source !== iframe.contentWindow)
+            return Promise.reject(new Error('Unexpected event.source'));
+          return event.data;
+        });
+  navigableElement.click();
+  return promise;
+}
+
+/**
+ * Creates a new anchor element, appends it to {@code document.body} and
+ *     performs the navigation.
+ * @param {string} url The URL to navigate to.
+ * @return {Promise} The promise for success/error events.
+ */
+function requestViaAnchor(url, additionalAttributes) {
+  var a = createElement(
+      "a",
+      Object.assign({"innerHTML": "Link to resource"}, additionalAttributes),
+      document.body);
+
+  return requestViaNavigable(a, url);
+}
+
+/**
+ * Creates a new area element, appends it to {@code document.body} and performs
+ *     the navigation.
+ * @param {string} url The URL to navigate to.
+ * @return {Promise} The promise for success/error events.
+ */
+function requestViaArea(url, additionalAttributes) {
+  var area = createElement(
+      "area",
+      Object.assign({}, additionalAttributes),
+      document.body);
+
+  // TODO(kristijanburnik): Append to map and add image.
+  return requestViaNavigable(area, url);
+}
+
+/**
+ * Creates a new script element, sets the src to url, and appends it to
+ *     {@code document.body}.
+ * @param {string} url The src URL.
+ * @return {Promise} The promise for success/error events.
+ */
+function requestViaScript(url, additionalAttributes) {
+  const script = createElement(
+      "script",
+      Object.assign({"src": url}, additionalAttributes),
+      document.body,
+      false);
+
+  return bindEvents2(window, "message", script, "error", window, "error")
+    .then(event => wrapResult(event.data));
+}
+
+/**
+ * Creates a new form element, sets attributes, appends it to
+ *     {@code document.body} and submits the form.
+ * @param {string} url The URL to submit to.
+ * @return {Promise} The promise for success/error events.
+ */
+function requestViaForm(url) {
+  var iframe = createHelperIframe(guid());
+  var form = createElement("form",
+                           {"action": url,
+                            "method": "POST",
+                            "target": iframe.name},
+                           document.body);
+  bindEvents(iframe);
+  form.submit();
+
+  return iframe.eventPromise;
+}
+
+/**
+ * Creates a new link element for a stylesheet, binds load and error events,
+ *     sets the href to url and appends it to {@code document.head}.
+ * @param {string} url The URL for a stylesheet.
+ * @return {Promise} The promise for success/error events.
+ */
+function requestViaLinkStylesheet(url) {
+  return createRequestViaElement("link",
+                                 {"rel": "stylesheet", "href": url},
+                                 document.head);
+}
+
+/**
+ * Creates a new link element for a prefetch, binds load and error events, sets
+ *     the href to url and appends it to {@code document.head}.
+ * @param {string} url The URL of a resource to prefetch.
+ * @return {Promise} The promise for success/error events.
+ */
+function requestViaLinkPrefetch(url) {
+  var link = document.createElement('link');
+  if (link.relList && link.relList.supports && link.relList.supports("prefetch")) {
+    return createRequestViaElement("link",
+                                   {"rel": "prefetch", "href": url},
+                                   document.head);
+  } else {
+    return Promise.reject("This browser does not support 'prefetch'.");
+  }
+}
+
+/**
+ * Initiates a new beacon request.
+ * @param {string} url The URL of a resource to prefetch.
+ * @return {Promise} The promise for success/error events.
+ */
+async function requestViaSendBeacon(url) {
+  function wait(ms) {
+    return new Promise(resolve => step_timeout(resolve, ms));
+  }
+  if (!navigator.sendBeacon(url)) {
+    // If mixed-content check fails, it should return false.
+    throw new Error('sendBeacon() fails.');
+  }
+  // We don't have a means to see the result of sendBeacon() request
+  // for sure. Let's wait for a while and let the generic test function
+  // ask the server for the result.
+  await wait(500);
+  return 'allowed';
+}
+
+/**
+ * Creates a new media element with a child source element, binds loadeddata and
+ *     error events, sets attributes and appends to document.body.
+ * @param {string} type The type of the media element (audio/video/picture).
+ * @param {object} media_attrs The attributes for the media element.
+ * @param {object} source_attrs The attributes for the child source element.
+ * @return {DOMElement} The newly created media element.
+ */
+function createMediaElement(type, media_attrs, source_attrs) {
+  var mediaElement = createElement(type, {});
+
+  var sourceElement = createElement("source", {});
+
+  mediaElement.eventPromise = new Promise(function(resolve, reject) {
+    mediaElement.addEventListener("loadeddata", function (e) {
+      resolve(e);
+    });
+
+    // Safari doesn't fire an `error` event when blocking mixed content.
+    mediaElement.addEventListener("stalled", function(e) {
+      reject(e);
+    });
+
+    sourceElement.addEventListener("error", function(e) {
+      reject(e);
+    });
+  });
+
+  setAttributes(mediaElement, media_attrs);
+  setAttributes(sourceElement, source_attrs);
+
+  mediaElement.appendChild(sourceElement);
+  document.body.appendChild(mediaElement);
+
+  return mediaElement;
+}
+
+/**
+ * Creates a new video element, binds loadeddata and error events, sets
+ *     attributes and source URL and appends to {@code document.body}.
+ * @param {string} url The URL of the video.
+ * @return {Promise} The promise for success/error events.
+ */
+function requestViaVideo(url) {
+  return createMediaElement("video",
+                            {},
+                            {"src": url}).eventPromise;
+}
+
+/**
+ * Creates a new audio element, binds loadeddata and error events, sets
+ *     attributes and source URL and appends to {@code document.body}.
+ * @param {string} url The URL of the audio.
+ * @return {Promise} The promise for success/error events.
+ */
+function requestViaAudio(url) {
+  return createMediaElement("audio",
+                            {},
+                            {"type": "audio/wav", "src": url}).eventPromise;
+}
+
+/**
+ * Creates a new picture element, binds loadeddata and error events, sets
+ *     attributes and source URL and appends to {@code document.body}. Also
+ *     creates new image element appending it to the picture
+ * @param {string} url The URL of the image for the source and image elements.
+ * @return {Promise} The promise for success/error events.
+ */
+function requestViaPicture(url) {
+  var picture = createMediaElement("picture", {}, {"srcset": url,
+                                                "type": "image/png"});
+  return createRequestViaElement("img", {"src": url}, picture);
+}
+
+/**
+ * Creates a new object element, binds load and error events, sets the data to
+ *     url, and appends it to {@code document.body}.
+ * @param {string} url The data URL.
+ * @return {Promise} The promise for success/error events.
+ */
+function requestViaObject(url) {
+  return createRequestViaElement("object", {"data": url, "type": "text/html"}, document.body);
+}
+
+/**
+ * Creates a new WebSocket pointing to {@code url} and sends a message string
+ * "echo". The {@code message} and {@code error} events are triggering the
+ * returned promise resolve/reject events.
+ * @param {string} url The URL for WebSocket to connect to.
+ * @return {Promise} The promise for success/error events.
+ */
+function requestViaWebSocket(url) {
+  return new Promise(function(resolve, reject) {
+    var websocket = new WebSocket(url);
+
+    websocket.addEventListener("message", function(e) {
+      resolve(e.data);
+    });
+
+    websocket.addEventListener("open", function(e) {
+      websocket.send("echo");
+    });
+
+    websocket.addEventListener("error", function(e) {
+      reject(e)
+    });
+  })
+  .then(data => {
+      return JSON.parse(data);
+    });
+}
+
+/**
+  @typedef SubresourceType
+  @type {string}
+
+  Represents how a subresource is sent.
+  The keys of `subresourceMap` below are the valid values.
+*/
+
+// Subresource paths and invokers.
+const subresourceMap = {
+  "a-tag": {
+    path: "/common/security-features/subresource/document.py",
+    invoker: requestViaAnchor,
+  },
+  "area-tag": {
+    path: "/common/security-features/subresource/document.py",
+    invoker: requestViaArea,
+  },
+  "audio-tag": {
+    path: "/common/security-features/subresource/audio.py",
+    invoker: requestViaAudio,
+  },
+  "beacon": {
+    path: "/common/security-features/subresource/empty.py",
+    invoker: requestViaSendBeacon,
+  },
+  "fetch": {
+    path: "/common/security-features/subresource/xhr.py",
+    invoker: requestViaFetch,
+  },
+  "form-tag": {
+    path: "/common/security-features/subresource/empty.py",
+    invoker: requestViaForm,
+  },
+  "iframe-tag": {
+    path: "/common/security-features/subresource/document.py",
+    invoker: requestViaIframe,
+  },
+  "img-tag": {
+    path: "/common/security-features/subresource/image.py",
+    invoker: requestViaImage,
+  },
+  "link-css-tag": {
+    path: "/common/security-features/subresource/empty.py",
+    invoker: requestViaLinkStylesheet,
+  },
+  "link-prefetch-tag": {
+    path: "/common/security-features/subresource/empty.py",
+    invoker: requestViaLinkPrefetch,
+  },
+  "object-tag": {
+    path: "/common/security-features/subresource/empty.py",
+    invoker: requestViaObject,
+  },
+  "picture-tag": {
+    path: "/common/security-features/subresource/image.py",
+    invoker: requestViaPicture,
+  },
+  "script-tag": {
+    path: "/common/security-features/subresource/script.py",
+    invoker: requestViaScript,
+  },
+  "video-tag": {
+    path: "/common/security-features/subresource/video.py",
+    invoker: requestViaVideo,
+  },
+  "xhr": {
+    path: "/common/security-features/subresource/xhr.py",
+    invoker: requestViaXhr,
+  },
+
+  "worker-classic": {
+    path: "/common/security-features/subresource/worker.py",
+    invoker: url => requestViaDedicatedWorker(url),
+  },
+  "worker-module": {
+    path: "/common/security-features/subresource/worker.py",
+    invoker: url => requestViaDedicatedWorker(url, {type: "module"}),
+  },
+  "worker-import-data": {
+    path: "/common/security-features/subresource/worker.py",
+    invoker: url =>
+        requestViaDedicatedWorker(workerUrlThatImports(url), {type: "module"}),
+  },
+  "sharedworker-classic": {
+    path: "/common/security-features/subresource/shared-worker.py",
+    invoker: requestViaSharedWorker,
+  },
+
+  "websocket": {
+    path: "/stash_responder",
+    invoker: requestViaWebSocket,
+  },
+};
+for (const workletType of ['animation', 'audio', 'layout', 'paint']) {
+  subresourceMap[`worklet-${workletType}`] = {
+      path: "/common/security-features/subresource/worker.py",
+      invoker: url => requestViaWorklet(workletType, url)
+    };
+  subresourceMap[`worklet-${workletType}-import-data`] = {
+      path: "/common/security-features/subresource/worker.py",
+      invoker: url =>
+          requestViaWorklet(workletType, workerUrlThatImports(url))
+    };
+}
+
+/**
+  @typedef RedirectionType
+  @type {string}
+
+  Represents what redirects should occur to the subresource request
+  after initial request.
+  See preprocess_redirection() in
+  /common/security-features/subresource/subresource.py for valid values.
+*/
+
+/**
+  Construct subresource (and related) origin.
+
+  @param {string} originType
+  @returns {object} the origin of the subresource.
+*/
+function getSubresourceOrigin(originType) {
+  const httpProtocol = "http";
+  const httpsProtocol = "https";
+  const wsProtocol = "ws";
+  const wssProtocol = "wss";
+
+  const sameOriginHost = "{{host}}";
+  const crossOriginHost = "{{domains[www1]}}";
+
+  // These values can evaluate to either empty strings or a ":port" string.
+  const httpPort = getNormalizedPort(parseInt("{{ports[http][0]}}", 10));
+  const httpsPort = getNormalizedPort(parseInt("{{ports[https][0]}}", 10));
+  const wsPort = getNormalizedPort(parseInt("{{ports[ws][0]}}", 10));
+  const wssPort = getNormalizedPort(parseInt("{{ports[wss][0]}}", 10));
+
+  /**
+    @typedef OriginType
+    @type {string}
+
+    Represents the origin of the subresource request URL.
+    The keys of `originMap` below are the valid values.
+
+    Note that there can be redirects from the specified origin
+    (see RedirectionType), and thus the origin of the subresource
+    response URL might be different from what is specified by OriginType.
+  */
+  const originMap = {
+    "same-https": httpsProtocol + "://" + sameOriginHost + httpsPort,
+    "same-http": httpProtocol + "://" + sameOriginHost + httpPort,
+    "cross-https": httpsProtocol + "://" + crossOriginHost + httpsPort,
+    "cross-http": httpProtocol + "://" + crossOriginHost + httpPort,
+    "same-wss": wssProtocol + "://" + sameOriginHost + wssPort,
+    "same-ws": wsProtocol + "://" + sameOriginHost + wsPort,
+    "cross-wss": wssProtocol + "://" + crossOriginHost + wssPort,
+    "cross-ws": wsProtocol + "://" + crossOriginHost + wsPort,
+  };
+
+  return originMap[originType];
+}
+
+/**
+  Construct subresource (and related) URLs.
+
+  @param {SubresourceType} subresourceType
+  @param {OriginType} originType
+  @param {RedirectionType} redirectionType
+  @returns {object} with following properties:
+    {string} testUrl
+      The subresource request URL.
+    {string} announceUrl
+    {string} assertUrl
+      The URLs to be used for detecting whether `testUrl` is actually sent
+      to the server.
+      1. Fetch `announceUrl` first,
+      2. then possibly fetch `testUrl`, and
+      3. finally fetch `assertUrl`.
+         The fetch result of `assertUrl` should indicate whether
+         `testUrl` is actually sent to the server or not.
+*/
+function getRequestURLs(subresourceType, originType, redirectionType) {
+  const key = guid();
+  const value = guid();
+
+  // We use the same stash path for both HTTP/S and WS/S stash requests.
+  const stashPath = encodeURIComponent("/mixed-content");
+
+  const stashEndpoint = "/common/security-features/subresource/xhr.py?key=" +
+                        key + "&path=" + stashPath;
+  return {
+    testUrl:
+      getSubresourceOrigin(originType) +
+        subresourceMap[subresourceType].path +
+        "?redirection=" + encodeURIComponent(redirectionType) +
+        "&action=purge&key=" + key +
+        "&path=" + stashPath,
+    announceUrl: stashEndpoint + "&action=put&value=" + value,
+    assertUrl: stashEndpoint + "&action=take",
+  };
+}
+
+// ===============================================================
+// Source Context
+// ===============================================================
+// Requests can be sent from several source contexts,
+// such as the main documents, iframes, workers, or so,
+// possibly nested, and possibly with <meta>/http headers added.
+// invokeRequest() and invokeFrom*() functions handles
+// SourceContext-related setup in client-side.
+
+/**
+  invokeRequest() invokes a subresource request
+  (specified as `subresource`)
+  from a (possibly nested) environment settings object
+  (specified as `sourceContextList`).
+
+  For nested contexts, invokeRequest() calls an invokeFrom*() function
+  that creates a nested environment settings object using
+  /common/security-features/scope/, which calls invokeRequest()
+  again inside the nested environment settings object.
+  This cycle continues until all specified
+  nested environment settings object are created, and
+  finally invokeRequest() calls a requestVia*() function to start the
+  subresource request from the inner-most environment settings object.
+
+  @param {Subresource} subresource
+  @param {Array<SourceContext>} sourceContextList
+
+  @returns {Promise} A promise that is resolved with an RequestResult object.
+  `sourceContextUrl` is always set. For whether other properties are set,
+  see the comments for requestVia*() above.
+*/
+function invokeRequest(subresource, sourceContextList) {
+  if (sourceContextList.length === 0) {
+    // No further nested global objects. Send the subresource request here.
+
+    const additionalAttributes = {};
+    /** @type {PolicyDelivery} policyDelivery */
+    for (const policyDelivery of (subresource.policyDeliveries || [])) {
+      // Depending on the delivery method, extend the subresource element with
+      // these attributes.
+      if (policyDelivery.deliveryType === "attr") {
+        additionalAttributes[policyDelivery.key] = policyDelivery.value;
+      } else if (policyDelivery.deliveryType === "rel-noref") {
+        additionalAttributes["rel"] = "noreferrer";
+      }
+    }
+
+    return subresourceMap[subresource.subresourceType].invoker(
+        subresource.url,
+        additionalAttributes)
+      .then(result => Object.assign(
+          {sourceContextUrl: location.toString()},
+          result));
+  }
+
+  // Defines invokers for each valid SourceContext.sourceContextType.
+  const sourceContextMap = {
+    "srcdoc": { // <iframe srcdoc></iframe>
+      invoker: invokeFromIframe,
+    },
+    "iframe": { // <iframe src="same-origin-URL"></iframe>
+      invoker: invokeFromIframe,
+    },
+    "worker-classic": {
+      // Classic dedicated worker loaded from same-origin.
+      invoker: invokeFromWorker.bind(undefined, false, {}),
+    },
+    "worker-classic-data": {
+      // Classic dedicated worker loaded from data: URL.
+      invoker: invokeFromWorker.bind(undefined, true, {}),
+    },
+    "worker-module": {
+      // Module dedicated worker loaded from same-origin.
+      invoker: invokeFromWorker.bind(undefined, false, {type: 'module'}),
+    },
+    "worker-module-data": {
+      // Module dedicated worker loaded from data: URL.
+      invoker: invokeFromWorker.bind(undefined, true, {type: 'module'}),
+    },
+  };
+
+  return sourceContextMap[sourceContextList[0].sourceContextType].invoker(
+      subresource, sourceContextList);
+}
+
+// Quick hack to expose invokeRequest when common.sub.js is loaded either
+// as a classic or module script.
+self.invokeRequest = invokeRequest;
+
+/**
+  invokeFrom*() functions are helper functions with the same parameters
+  and return values as invokeRequest(), that are tied to specific types
+  of top-most environment settings objects.
+  For example, invokeFromIframe() is the helper function for the cases where
+  sourceContextList[0] is an iframe.
+*/
+
+/**
+  @param {boolean} isDataUrl
+    true if the worker script is loaded from data: URL.
+    Otherwise, the script is loaded from same-origin.
+  @param {object} workerOptions
+    The `options` argument for Worker constructor.
+
+  Other parameters and return values are the same as those of invokeRequest().
+*/
+function invokeFromWorker(isDataUrl, workerOptions,
+                          subresource, sourceContextList) {
+  const currentSourceContext = sourceContextList[0];
+  let workerUrl =
+    "/common/security-features/scope/worker.py?policyDeliveries=" +
+    encodeURIComponent(JSON.stringify(
+        currentSourceContext.policyDeliveries || []));
+  if (workerOptions.type === 'module') {
+    workerUrl += "&type=module";
+  }
+
+  let promise;
+  if (isDataUrl) {
+    promise = fetch(workerUrl)
+      .then(r => r.text())
+      .then(source => {
+          return 'data:text/javascript;base64,' + btoa(source);
+        });
+  } else {
+    promise = Promise.resolve(workerUrl);
+  }
+
+  return promise
+    .then(url => {
+      const worker = new Worker(url, workerOptions);
+      worker.postMessage({subresource: subresource,
+                          sourceContextList: sourceContextList.slice(1)});
+      return bindEvents2(worker, "message", worker, "error", window, "error");
+    })
+    .then(event => {
+        if (event.data.error)
+          return Promise.reject(event.data.error);
+        return event.data;
+      });
+}
+
+function invokeFromIframe(subresource, sourceContextList) {
+  const currentSourceContext = sourceContextList[0];
+  const frameUrl =
+    "/common/security-features/scope/document.py?policyDeliveries=" +
+    encodeURIComponent(JSON.stringify(
+        currentSourceContext.policyDeliveries || []));
+
+  let promise;
+  if (currentSourceContext.sourceContextType === 'srcdoc') {
+    promise = fetch(frameUrl)
+      .then(r => r.text())
+      .then(srcdoc => {
+          return createElement("iframe", {srcdoc: srcdoc}, document.body, true);
+        });
+  } else if (currentSourceContext.sourceContextType === 'iframe') {
+    promise = Promise.resolve(
+        createElement("iframe", {src: frameUrl}, document.body, true));
+  }
+
+  return promise
+    .then(iframe => {
+        return iframe.eventPromise
+          .then(() => {
+              const promise = bindEvents2(
+                  window, "message", iframe, "error", window, "error");
+              iframe.contentWindow.postMessage(
+                  {subresource: subresource,
+                   sourceContextList: sourceContextList.slice(1)},
+                  "*");
+              return promise;
+            })
+          .then(event => {
+              if (event.data.error)
+                return Promise.reject(event.data.error);
+              return event.data;
+            });
+      });
+}
+
+// SanityChecker does nothing in release mode. See sanity-checker.js for debug
+// mode.
+function SanityChecker() {}
+SanityChecker.prototype.checkScenario = function() {};
+SanityChecker.prototype.setFailTimeout = function(test, timeout) {};
+SanityChecker.prototype.checkSubresourceResult = function() {};
index a7ea327..1e1cf66 100644 (file)
@@ -1,30 +1,3 @@
 
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "Got an error before parsing any named definition: Unrecognised tokens, line 1 (tokens: "{\"error\": {\"message\"")
-[
-    {
-        "type": "{",
-        "value": "{",
-        "trivia": ""
-    },
-    {
-        "type": "string",
-        "value": "\"error\"",
-        "trivia": ""
-    },
-    {
-        "type": ":",
-        "value": ":",
-        "trivia": ""
-    },
-    {
-        "type": "{",
-        "value": "{",
-        "trivia": " "
-    },
-    {
-        "type": "string",
-        "value": "\"message\"",
-        "trivia": ""
-    }
-]"
+FAIL idl_test setup promise_test: Unhandled rejection with value: object "Error fetching /interfaces/CSP.idl."
 
diff --git a/LayoutTests/imported/w3c/web-platform-tests/credential-management/META.yml b/LayoutTests/imported/w3c/web-platform-tests/credential-management/META.yml
new file mode 100644 (file)
index 0000000..7b18609
--- /dev/null
@@ -0,0 +1,3 @@
+spec: https://w3c.github.io/webappsec-credential-management/
+suggested_reviewers:
+  - mikewest
diff --git a/LayoutTests/imported/w3c/web-platform-tests/credential-management/OWNERS b/LayoutTests/imported/w3c/web-platform-tests/credential-management/OWNERS
deleted file mode 100644 (file)
index 12f907c..0000000
+++ /dev/null
@@ -1 +0,0 @@
-@mikewest
diff --git a/LayoutTests/imported/w3c/web-platform-tests/credential-management/idl.https-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/credential-management/idl.https-expected.txt
deleted file mode 100644 (file)
index ed3b1c1..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-
-PASS CredentialsContainer interface: existence and properties of interface object 
-PASS CredentialsContainer interface object length 
-PASS CredentialsContainer interface object name 
-PASS CredentialsContainer interface: existence and properties of interface prototype object 
-PASS CredentialsContainer interface: existence and properties of interface prototype object's "constructor" property 
-PASS CredentialsContainer interface: existence and properties of interface prototype object's @@unscopables property 
-PASS CredentialsContainer interface: operation get(CredentialRequestOptions) 
-PASS CredentialsContainer interface: operation store(Credential) 
-PASS CredentialsContainer interface: operation create(CredentialCreationOptions) 
-PASS CredentialsContainer interface: operation preventSilentAccess() 
-PASS CredentialsContainer must be primary interface of navigator.credentials 
-PASS Stringification of navigator.credentials 
-PASS CredentialsContainer interface: navigator.credentials must inherit property "get(CredentialRequestOptions)" with the proper type 
-PASS CredentialsContainer interface: calling get(CredentialRequestOptions) on navigator.credentials with too few arguments must throw TypeError 
-PASS CredentialsContainer interface: navigator.credentials must inherit property "store(Credential)" with the proper type 
-PASS CredentialsContainer interface: calling store(Credential) on navigator.credentials with too few arguments must throw TypeError 
-PASS CredentialsContainer interface: navigator.credentials must inherit property "create(CredentialCreationOptions)" with the proper type 
-PASS CredentialsContainer interface: calling create(CredentialCreationOptions) on navigator.credentials with too few arguments must throw TypeError 
-PASS CredentialsContainer interface: navigator.credentials must inherit property "preventSilentAccess()" with the proper type 
-FAIL PasswordCredential interface: existence and properties of interface object assert_own_property: self does not have own property "PasswordCredential" expected property "PasswordCredential" missing
-FAIL PasswordCredential interface object length assert_own_property: self does not have own property "PasswordCredential" expected property "PasswordCredential" missing
-FAIL PasswordCredential interface object name assert_own_property: self does not have own property "PasswordCredential" expected property "PasswordCredential" missing
-FAIL PasswordCredential interface: existence and properties of interface prototype object assert_own_property: self does not have own property "PasswordCredential" expected property "PasswordCredential" missing
-FAIL PasswordCredential interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "PasswordCredential" expected property "PasswordCredential" missing
-FAIL PasswordCredential interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "PasswordCredential" expected property "PasswordCredential" missing
-FAIL PasswordCredential interface: attribute password assert_own_property: self does not have own property "PasswordCredential" expected property "PasswordCredential" missing
-FAIL PasswordCredential must be primary interface of new PasswordCredential({ id: "id", password: "pencil", iconURL: "https://example.com/", name: "name" }) assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: PasswordCredential"
-FAIL Stringification of new PasswordCredential({ id: "id", password: "pencil", iconURL: "https://example.com/", name: "name" }) assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: PasswordCredential"
-FAIL PasswordCredential interface: new PasswordCredential({ id: "id", password: "pencil", iconURL: "https://example.com/", name: "name" }) must inherit property "password" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: PasswordCredential"
-FAIL FederatedCredential interface: existence and properties of interface object assert_own_property: self does not have own property "FederatedCredential" expected property "FederatedCredential" missing
-FAIL FederatedCredential interface object length assert_own_property: self does not have own property "FederatedCredential" expected property "FederatedCredential" missing
-FAIL FederatedCredential interface object name assert_own_property: self does not have own property "FederatedCredential" expected property "FederatedCredential" missing
-FAIL FederatedCredential interface: existence and properties of interface prototype object assert_own_property: self does not have own property "FederatedCredential" expected property "FederatedCredential" missing
-FAIL FederatedCredential interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "FederatedCredential" expected property "FederatedCredential" missing
-FAIL FederatedCredential interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "FederatedCredential" expected property "FederatedCredential" missing
-FAIL FederatedCredential interface: attribute provider assert_own_property: self does not have own property "FederatedCredential" expected property "FederatedCredential" missing
-FAIL FederatedCredential interface: attribute protocol assert_own_property: self does not have own property "FederatedCredential" expected property "FederatedCredential" missing
-FAIL FederatedCredential must be primary interface of new FederatedCredential({ id: "id", provider: "https://example.com", iconURL: "https://example.com/", name: "name" }) assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: FederatedCredential"
-FAIL Stringification of new FederatedCredential({ id: "id", provider: "https://example.com", iconURL: "https://example.com/", name: "name" }) assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: FederatedCredential"
-FAIL FederatedCredential interface: new FederatedCredential({ id: "id", provider: "https://example.com", iconURL: "https://example.com/", name: "name" }) must inherit property "provider" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: FederatedCredential"
-FAIL FederatedCredential interface: new FederatedCredential({ id: "id", provider: "https://example.com", iconURL: "https://example.com/", name: "name" }) must inherit property "protocol" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: FederatedCredential"
-
diff --git a/LayoutTests/imported/w3c/web-platform-tests/credential-management/idl.https.html b/LayoutTests/imported/w3c/web-platform-tests/credential-management/idl.https.html
deleted file mode 100644 (file)
index 8754b5a..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-<!DOCTYPE html>
-<script src=/resources/testharness.js></script>
-<script src=/resources/testharnessreport.js></script>
-<script src=/resources/WebIDLParser.js></script>
-<script src=/resources/idlharness.js></script>
-<script type="text/plain" id="untested">
-    dictionary CredentialData {
-      USVString id;
-    };
-
-    [Exposed=Window, SecureContext]
-    interface Credential {
-      readonly attribute USVString id;
-      readonly attribute DOMString type;
-    };
-
-    [NoInterfaceObject, SecureContext]
-    interface CredentialUserData {
-      readonly attribute USVString name;
-      readonly attribute USVString iconURL;
-    };
-
-    dictionary PasswordCredentialData : CredentialData {
-      USVString name;
-      USVString iconURL;
-      required USVString password;
-    };
-
-    typedef (PasswordCredentialData or HTMLFormElement) PasswordCredentialInit;
-
-    typedef (FormData or URLSearchParams) CredentialBodyType;
-
-
-    dictionary FederatedCredentialInit : CredentialData {
-      USVString name;
-      USVString iconURL;
-      required USVString provider;
-      DOMString protocol;
-    };
-
-    dictionary CredentialCreationOptions {
-      PasswordCredentialInit? password;
-      FederatedCredentialInit? federated;
-    };
-
-    enum CredentialMediationRequirement {
-      "silent",
-      "optional",
-      "required"
-    };
-
-    dictionary CredentialRequestOptions {
-      boolean password = false;
-      FederatedCredentialRequestOptions federated;
-
-      CredentialMediationRequirement mediation = "optional";
-    };
-
-    dictionary FederatedCredentialRequestOptions {
-      sequence<USVString> providers;
-      sequence<DOMString> protocols;
-    };
-
-</script>
-<script type="text/plain" id="tested">
-    [Exposed=Window, SecureContext]
-    interface CredentialsContainer {
-      Promise<Credential> get(optional CredentialRequestOptions options);
-      Promise<Credential> store(Credential credential);
-      Promise<Credential?> create(optional CredentialCreationOptions options);
-      Promise<void> preventSilentAccess();
-    };
-
-    [Constructor(PasswordCredentialData data),
-     Constructor(HTMLFormElement form),
-     Exposed=Window,
-     SecureContext]
-    interface PasswordCredential : Credential {
-      readonly attribute DOMString password;
-    };
-    PasswordCredential implements CredentialUserData;
-
-    [Constructor(FederatedCredentialInit data),
-     Exposed=Window,
-     SecureContext]
-    interface FederatedCredential : Credential {
-      readonly attribute USVString provider;
-      readonly attribute DOMString? protocol;
-    };
-    FederatedCredential implements CredentialUserData;
-</script>
-<script>
-    "use strict";
-    var idl_array = new IdlArray();
-    idl_array.add_untested_idls(document.querySelector('#untested').textContent);
-    idl_array.add_idls(document.querySelector('#tested').textContent);
-    idl_array.add_objects({
-      CredentialsContainer: ['navigator.credentials'],
-      PasswordCredential: ['new PasswordCredential({ id: "id", password: "pencil", iconURL: "https://example.com/", name: "name" })'],
-      FederatedCredential: ['new FederatedCredential({ id: "id", provider: "https://example.com", iconURL: "https://example.com/", name: "name" })']
-    });
-    idl_array.test();
-</script>
diff --git a/LayoutTests/imported/w3c/web-platform-tests/credential-management/idlharness.https.window-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/credential-management/idlharness.https.window-expected.txt
new file mode 100644 (file)
index 0000000..af8245c
--- /dev/null
@@ -0,0 +1,70 @@
+
+PASS idl_test setup 
+PASS Partial interface Navigator: original interface defined 
+PASS Partial dictionary CredentialRequestOptions: original dictionary defined 
+PASS Partial dictionary CredentialCreationOptions: original dictionary defined 
+PASS Partial dictionary CredentialRequestOptions[2]: original dictionary defined 
+PASS Partial dictionary CredentialCreationOptions[2]: original dictionary defined 
+PASS Credential interface: existence and properties of interface object 
+PASS Credential interface object length 
+PASS Credential interface object name 
+PASS Credential interface: existence and properties of interface prototype object 
+PASS Credential interface: existence and properties of interface prototype object's "constructor" property 
+PASS Credential interface: existence and properties of interface prototype object's @@unscopables property 
+PASS Credential interface: attribute id 
+PASS Credential interface: attribute type 
+PASS CredentialsContainer interface: existence and properties of interface object 
+PASS CredentialsContainer interface object length 
+PASS CredentialsContainer interface object name 
+PASS CredentialsContainer interface: existence and properties of interface prototype object 
+PASS CredentialsContainer interface: existence and properties of interface prototype object's "constructor" property 
+PASS CredentialsContainer interface: existence and properties of interface prototype object's @@unscopables property 
+PASS CredentialsContainer interface: operation get(CredentialRequestOptions) 
+PASS CredentialsContainer interface: operation store(Credential) 
+PASS CredentialsContainer interface: operation create(CredentialCreationOptions) 
+PASS CredentialsContainer interface: operation preventSilentAccess() 
+PASS CredentialsContainer must be primary interface of navigator.credentials 
+PASS Stringification of navigator.credentials 
+PASS CredentialsContainer interface: navigator.credentials must inherit property "get(CredentialRequestOptions)" with the proper type 
+PASS CredentialsContainer interface: calling get(CredentialRequestOptions) on navigator.credentials with too few arguments must throw TypeError 
+PASS CredentialsContainer interface: navigator.credentials must inherit property "store(Credential)" with the proper type 
+PASS CredentialsContainer interface: calling store(Credential) on navigator.credentials with too few arguments must throw TypeError 
+PASS CredentialsContainer interface: navigator.credentials must inherit property "create(CredentialCreationOptions)" with the proper type 
+PASS CredentialsContainer interface: calling create(CredentialCreationOptions) on navigator.credentials with too few arguments must throw TypeError 
+PASS CredentialsContainer interface: navigator.credentials must inherit property "preventSilentAccess()" with the proper type 
+FAIL PasswordCredential interface: existence and properties of interface object assert_own_property: self does not have own property "PasswordCredential" expected property "PasswordCredential" missing
+FAIL PasswordCredential interface object length assert_own_property: self does not have own property "PasswordCredential" expected property "PasswordCredential" missing
+FAIL PasswordCredential interface object name assert_own_property: self does not have own property "PasswordCredential" expected property "PasswordCredential" missing
+FAIL PasswordCredential interface: existence and properties of interface prototype object assert_own_property: self does not have own property "PasswordCredential" expected property "PasswordCredential" missing
+FAIL PasswordCredential interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "PasswordCredential" expected property "PasswordCredential" missing
+FAIL PasswordCredential interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "PasswordCredential" expected property "PasswordCredential" missing
+FAIL PasswordCredential interface: attribute password assert_own_property: self does not have own property "PasswordCredential" expected property "PasswordCredential" missing
+FAIL PasswordCredential interface: attribute name assert_own_property: self does not have own property "PasswordCredential" expected property "PasswordCredential" missing
+FAIL PasswordCredential interface: attribute iconURL assert_own_property: self does not have own property "PasswordCredential" expected property "PasswordCredential" missing
+FAIL PasswordCredential must be primary interface of passwordCredential assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: passwordCredential"
+FAIL Stringification of passwordCredential assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: passwordCredential"
+FAIL PasswordCredential interface: passwordCredential must inherit property "password" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: passwordCredential"
+FAIL PasswordCredential interface: passwordCredential must inherit property "name" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: passwordCredential"
+FAIL PasswordCredential interface: passwordCredential must inherit property "iconURL" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: passwordCredential"
+FAIL Credential interface: passwordCredential must inherit property "id" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: passwordCredential"
+FAIL Credential interface: passwordCredential must inherit property "type" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: passwordCredential"
+FAIL FederatedCredential interface: existence and properties of interface object assert_own_property: self does not have own property "FederatedCredential" expected property "FederatedCredential" missing
+FAIL FederatedCredential interface object length assert_own_property: self does not have own property "FederatedCredential" expected property "FederatedCredential" missing
+FAIL FederatedCredential interface object name assert_own_property: self does not have own property "FederatedCredential" expected property "FederatedCredential" missing
+FAIL FederatedCredential interface: existence and properties of interface prototype object assert_own_property: self does not have own property "FederatedCredential" expected property "FederatedCredential" missing
+FAIL FederatedCredential interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "FederatedCredential" expected property "FederatedCredential" missing
+FAIL FederatedCredential interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "FederatedCredential" expected property "FederatedCredential" missing
+FAIL FederatedCredential interface: attribute provider assert_own_property: self does not have own property "FederatedCredential" expected property "FederatedCredential" missing
+FAIL FederatedCredential interface: attribute protocol assert_own_property: self does not have own property "FederatedCredential" expected property "FederatedCredential" missing
+FAIL FederatedCredential interface: attribute name assert_own_property: self does not have own property "FederatedCredential" expected property "FederatedCredential" missing
+FAIL FederatedCredential interface: attribute iconURL assert_own_property: self does not have own property "FederatedCredential" expected property "FederatedCredential" missing
+FAIL FederatedCredential must be primary interface of federatedCredential assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: federatedCredential"
+FAIL Stringification of federatedCredential assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: federatedCredential"
+FAIL FederatedCredential interface: federatedCredential must inherit property "provider" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: federatedCredential"
+FAIL FederatedCredential interface: federatedCredential must inherit property "protocol" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: federatedCredential"
+FAIL FederatedCredential interface: federatedCredential must inherit property "name" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: federatedCredential"
+FAIL FederatedCredential interface: federatedCredential must inherit property "iconURL" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: federatedCredential"
+FAIL Credential interface: federatedCredential must inherit property "id" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: federatedCredential"
+FAIL Credential interface: federatedCredential must inherit property "type" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: federatedCredential"
+PASS Navigator interface: attribute credentials 
+
diff --git a/LayoutTests/imported/w3c/web-platform-tests/credential-management/idlharness.https.window.html b/LayoutTests/imported/w3c/web-platform-tests/credential-management/idlharness.https.window.html
new file mode 100644 (file)
index 0000000..2382913
--- /dev/null
@@ -0,0 +1 @@
+<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/credential-management/idlharness.https.window.js b/LayoutTests/imported/w3c/web-platform-tests/credential-management/idlharness.https.window.js
new file mode 100644 (file)
index 0000000..789643e
--- /dev/null
@@ -0,0 +1,36 @@
+// META: script=/resources/WebIDLParser.js
+// META: script=/resources/idlharness.js
+
+// https://w3c.github.io/webappsec-credential-management/
+
+'use strict';
+
+idl_test(
+  ['credential-management'],
+  ['html', 'dom'],
+  idl_array => {
+    idl_array.add_objects({
+      CredentialsContainer: ['navigator.credentials'],
+      PasswordCredential: ['passwordCredential'],
+      FederatedCredential: ['federatedCredential'],
+    });
+
+    try {
+      self.passwordCredential = new PasswordCredential({
+        id: "id",
+        password: "pencil",
+        iconURL: "https://example.com/",
+        name: "name"
+      });
+    } catch (e) {}
+
+    try {
+      self.federatedCredential = new FederatedCredential({
+        id: "id",
+        provider: "https://example.com",
+        iconURL: "https://example.com/",
+        name: "name"
+      });
+    } catch (e) {}
+  }
+)
index af204bd..7f34b97 100644 (file)
@@ -1,7 +1,7 @@
 The tests in this directory were imported from the W3C repository.
 Do NOT modify these tests directly in WebKit.
 Instead, create a pull request on the WPT github:
-       https://github.com/w3c/web-platform-tests
+       https://github.com/web-platform-tests/wpt
 
 Then run the Tools/Scripts/import-w3c-tests in WebKit to reimport
 
index 2b11765..7f9e80e 100644 (file)
@@ -1,7 +1,7 @@
 The tests in this directory were imported from the W3C repository.
 Do NOT modify these tests directly in WebKit.
 Instead, create a pull request on the WPT github:
-       https://github.com/w3c/web-platform-tests
+       https://github.com/web-platform-tests/wpt
 
 Then run the Tools/Scripts/import-w3c-tests in WebKit to reimport
 
@@ -14,9 +14,9 @@ Property values requiring vendor prefixes:
 None
 ------------------------------------------------------------------------
 List of files:
-/LayoutTests/imported/w3c/web-platform-tests/credential-management/OWNERS
+/LayoutTests/imported/w3c/web-platform-tests/credential-management/META.yml
 /LayoutTests/imported/w3c/web-platform-tests/credential-management/credentialscontainer-create-basics.https.html
 /LayoutTests/imported/w3c/web-platform-tests/credential-management/federatedcredential-framed-get.sub.https.html
-/LayoutTests/imported/w3c/web-platform-tests/credential-management/idl.https.html
+/LayoutTests/imported/w3c/web-platform-tests/credential-management/idlharness.https.window.js
 /LayoutTests/imported/w3c/web-platform-tests/credential-management/passwordcredential-framed-get.sub.https.html
 /LayoutTests/imported/w3c/web-platform-tests/credential-management/require_securecontext.html
index b65f544..20c5af2 100644 (file)
@@ -1,30 +1,16 @@
 
-FAIL Test IDL implementation of CSS Properties Values API promise_test: Unhandled rejection with value: object "Got an error before parsing any named definition: Unrecognised tokens, line 1 (tokens: "{\"error\": {\"message\"")
-[
-    {
-        "type": "{",
-        "value": "{",
-        "trivia": ""
-    },
-    {
-        "type": "string",
-        "value": "\"error\"",
-        "trivia": ""
-    },
-    {
-        "type": ":",
-        "value": ":",
-        "trivia": ""
-    },
-    {
-        "type": "{",
-        "value": "{",
-        "trivia": " "
-    },
-    {
-        "type": "string",
-        "value": "\"message\"",
-        "trivia": ""
-    }
-]"
+PASS idl_test setup 
+PASS Partial namespace CSS: original namespace defined 
+FAIL CSSPropertyRule interface: existence and properties of interface object assert_own_property: self does not have own property "CSSPropertyRule" expected property "CSSPropertyRule" missing
+FAIL CSSPropertyRule interface object length assert_own_property: self does not have own property "CSSPropertyRule" expected property "CSSPropertyRule" missing
+FAIL CSSPropertyRule interface object name assert_own_property: self does not have own property "CSSPropertyRule" expected property "CSSPropertyRule" missing
+FAIL CSSPropertyRule interface: existence and properties of interface prototype object assert_own_property: self does not have own property "CSSPropertyRule" expected property "CSSPropertyRule" missing
+FAIL CSSPropertyRule interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "CSSPropertyRule" expected property "CSSPropertyRule" missing
+FAIL CSSPropertyRule interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "CSSPropertyRule" expected property "CSSPropertyRule" missing
+FAIL CSSPropertyRule interface: attribute name assert_own_property: self does not have own property "CSSPropertyRule" expected property "CSSPropertyRule" missing
+FAIL CSSPropertyRule interface: attribute syntax assert_own_property: self does not have own property "CSSPropertyRule" expected property "CSSPropertyRule" missing
+FAIL CSSPropertyRule interface: attribute inherits assert_own_property: self does not have own property "CSSPropertyRule" expected property "CSSPropertyRule" missing
+FAIL CSSPropertyRule interface: attribute initialValue assert_own_property: self does not have own property "CSSPropertyRule" expected property "CSSPropertyRule" missing
+PASS CSS namespace: operation escape(CSSOMString) 
+PASS CSS namespace: operation registerProperty(PropertyDefinition) 
 
index e57f0f0..6f05375 100644 (file)
@@ -8,13 +8,9 @@
 <script>
   "use strict";
 
-  promise_test(async () => {
-    const idl = await fetch("/interfaces/css-properties-values-api.idl").then(r => r.text());
-    const cssom = await fetch("/interfaces/cssom.idl").then(r => r.text());
-
-    const idl_array = new IdlArray();
-    idl_array.add_idls(idl);
-    idl_array.add_dependency_idls(cssom);
-    idl_array.test();
-  }, "Test IDL implementation of CSS Properties Values API");
+  idl_test(
+    ["css-properties-values-api"],
+    ["cssom"]
+    // No objects
+  );
 </script>
index b55c1ec..9e44ae1 100644 (file)
 CSSOM View IDL tests
 
 
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "Got an error before parsing any named definition: Unrecognised tokens, line 1 (tokens: "{\"error\": {\"message\"")
-[
-    {
-        "type": "{",
-        "value": "{",
-        "trivia": ""
-    },
-    {
-        "type": "string",
-        "value": "\"error\"",
-        "trivia": ""
-    },
-    {
-        "type": ":",
-        "value": ":",
-        "trivia": ""
-    },
-    {
-        "type": "{",
-        "value": "{",
-        "trivia": " "
-    },
-    {
-        "type": "string",
-        "value": "\"message\"",
-        "trivia": ""
-    }
-]"
-FAIL Partial interface Window: original interface defined assert_true: Original interface should be defined expected true got false
-FAIL Partial interface Document: original interface defined assert_true: Original interface should be defined expected true got false
-FAIL Partial interface Element: original interface defined assert_true: Original interface should be defined expected true got false
-FAIL Partial interface HTMLElement: original interface defined assert_true: Original interface should be defined expected true got false
-FAIL Partial interface HTMLImageElement: original interface defined assert_true: Original interface should be defined expected true got false
-FAIL Partial interface Range: original interface defined assert_true: Original interface should be defined expected true got false
+PASS idl_test setup 
+PASS Partial interface Window: original interface defined 
+PASS Partial interface Document: original interface defined 
+PASS Partial interface Element: original interface defined 
+PASS Partial interface HTMLElement: original interface defined 
+PASS Partial interface HTMLImageElement: original interface defined 
+PASS Partial interface Range: original interface defined 
+PASS Partial interface MouseEvent: original interface defined 
+PASS Partial dictionary MouseEventInit: original dictionary defined 
+FAIL MediaQueryList interface: existence and properties of interface object assert_own_property: self does not have own property "MediaQueryList" expected property "MediaQueryList" missing
+FAIL MediaQueryList interface object length assert_own_property: self does not have own property "MediaQueryList" expected property "MediaQueryList" missing
+FAIL MediaQueryList interface object name assert_own_property: self does not have own property "MediaQueryList" expected property "MediaQueryList" missing
+FAIL MediaQueryList interface: existence and properties of interface prototype object assert_own_property: self does not have own property "MediaQueryList" expected property "MediaQueryList" missing
+FAIL MediaQueryList interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "MediaQueryList" expected property "MediaQueryList" missing
+FAIL MediaQueryList interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "MediaQueryList" expected property "MediaQueryList" missing
+FAIL MediaQueryList interface: attribute media assert_own_property: self does not have own property "MediaQueryList" expected property "MediaQueryList" missing
+FAIL MediaQueryList interface: attribute matches assert_own_property: self does not have own property "MediaQueryList" expected property "MediaQueryList" missing
+FAIL MediaQueryList interface: operation addListener(EventListener) assert_own_property: self does not have own property "MediaQueryList" expected property "MediaQueryList" missing
+FAIL MediaQueryList interface: operation removeListener(EventListener) assert_own_property: self does not have own property "MediaQueryList" expected property "MediaQueryList" missing
+FAIL MediaQueryList interface: attribute onchange assert_own_property: self does not have own property "MediaQueryList" expected property "MediaQueryList" missing
+FAIL MediaQueryList must be primary interface of matchMedia("all") assert_own_property: self does not have own property "MediaQueryList" expected property "MediaQueryList" missing
+PASS Stringification of matchMedia("all") 
+PASS MediaQueryList interface: matchMedia("all") must inherit property "media" with the proper type 
+PASS MediaQueryList interface: matchMedia("all") must inherit property "matches" with the proper type 
+PASS MediaQueryList interface: matchMedia("all") must inherit property "addListener(EventListener)" with the proper type 
+FAIL MediaQueryList interface: calling addListener(EventListener) on matchMedia("all") with too few arguments must throw TypeError assert_throws: Called with 0 arguments function "function () {
+            fn.apply(obj, args);
+        }" did not throw
+PASS MediaQueryList interface: matchMedia("all") must inherit property "removeListener(EventListener)" with the proper type 
+FAIL MediaQueryList interface: calling removeListener(EventListener) on matchMedia("all") with too few arguments must throw TypeError assert_throws: Called with 0 arguments function "function () {
+            fn.apply(obj, args);
+        }" did not throw
+FAIL MediaQueryList interface: matchMedia("all") must inherit property "onchange" with the proper type assert_inherits: property "onchange" not found in prototype chain
+FAIL MediaQueryListEvent interface: existence and properties of interface object assert_own_property: self does not have own property "MediaQueryListEvent" expected property "MediaQueryListEvent" missing
+FAIL MediaQueryListEvent interface object length assert_own_property: self does not have own property "MediaQueryListEvent" expected property "MediaQueryListEvent" missing
+FAIL MediaQueryListEvent interface object name assert_own_property: self does not have own property "MediaQueryListEvent" expected property "MediaQueryListEvent" missing
+FAIL MediaQueryListEvent interface: existence and properties of interface prototype object assert_own_property: self does not have own property "MediaQueryListEvent" expected property "MediaQueryListEvent" missing
+FAIL MediaQueryListEvent interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "MediaQueryListEvent" expected property "MediaQueryListEvent" missing
+FAIL MediaQueryListEvent interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "MediaQueryListEvent" expected property "MediaQueryListEvent" missing
+FAIL MediaQueryListEvent interface: attribute media assert_own_property: self does not have own property "MediaQueryListEvent" expected property "MediaQueryListEvent" missing
+FAIL MediaQueryListEvent interface: attribute matches assert_own_property: self does not have own property "MediaQueryListEvent" expected property "MediaQueryListEvent" missing
+FAIL MediaQueryListEvent must be primary interface of new MediaQueryListEvent("change") assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: MediaQueryListEvent"
+FAIL Stringification of new MediaQueryListEvent("change") assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: MediaQueryListEvent"
+FAIL MediaQueryListEvent interface: new MediaQueryListEvent("change") must inherit property "media" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: MediaQueryListEvent"
+FAIL MediaQueryListEvent interface: new MediaQueryListEvent("change") must inherit property "matches" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: MediaQueryListEvent"
+PASS Screen interface: existence and properties of interface object 
+PASS Screen interface object length 
+PASS Screen interface object name 
+PASS Screen interface: existence and properties of interface prototype object 
+PASS Screen interface: existence and properties of interface prototype object's "constructor" property 
+PASS Screen interface: existence and properties of interface prototype object's @@unscopables property 
+PASS Screen interface: attribute availWidth 
+PASS Screen interface: attribute availHeight 
+PASS Screen interface: attribute width 
+PASS Screen interface: attribute height 
+PASS Screen interface: attribute colorDepth 
+PASS Screen interface: attribute pixelDepth 
+PASS Screen must be primary interface of screen 
+PASS Stringification of screen 
+PASS Screen interface: screen must inherit property "availWidth" with the proper type 
+PASS Screen interface: screen must inherit property "availHeight" with the proper type 
+PASS Screen interface: screen must inherit property "width" with the proper type 
+PASS Screen interface: screen must inherit property "height" with the proper type 
+PASS Screen interface: screen must inherit property "colorDepth" with the proper type 
+PASS Screen interface: screen must inherit property "pixelDepth" with the proper type 
+FAIL CaretPosition interface: existence and properties of interface object assert_own_property: self does not have own property "CaretPosition" expected property "CaretPosition" missing
+FAIL CaretPosition interface object length assert_own_property: self does not have own property "CaretPosition" expected property "CaretPosition" missing
+FAIL CaretPosition interface object name assert_own_property: self does not have own property "CaretPosition" expected property "CaretPosition" missing
+FAIL CaretPosition interface: existence and properties of interface prototype object assert_own_property: self does not have own property "CaretPosition" expected property "CaretPosition" missing
+FAIL CaretPosition interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "CaretPosition" expected property "CaretPosition" missing
+FAIL CaretPosition interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "CaretPosition" expected property "CaretPosition" missing
+FAIL CaretPosition interface: attribute offsetNode assert_own_property: self does not have own property "CaretPosition" expected property "CaretPosition" missing
+FAIL CaretPosition interface: attribute offset assert_own_property: self does not have own property "CaretPosition" expected property "CaretPosition" missing
+FAIL CaretPosition interface: operation getClientRect() assert_own_property: self does not have own property "CaretPosition" expected property "CaretPosition" missing
+FAIL CaretPosition must be primary interface of document.caretPositionFromPoint(5, 5) assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: document.caretPositionFromPoint is not a function. (In 'document.caretPositionFromPoint(5, 5)', 'document.caretPositionFromPoint' is undefined)"
+FAIL Stringification of document.caretPositionFromPoint(5, 5) assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: document.caretPositionFromPoint is not a function. (In 'document.caretPositionFromPoint(5, 5)', 'document.caretPositionFromPoint' is undefined)"
+FAIL CaretPosition interface: document.caretPositionFromPoint(5, 5) must inherit property "offsetNode" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: document.caretPositionFromPoint is not a function. (In 'document.caretPositionFromPoint(5, 5)', 'document.caretPositionFromPoint' is undefined)"
+FAIL CaretPosition interface: document.caretPositionFromPoint(5, 5) must inherit property "offset" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: document.caretPositionFromPoint is not a function. (In 'document.caretPositionFromPoint(5, 5)', 'document.caretPositionFromPoint' is undefined)"
+FAIL CaretPosition interface: document.caretPositionFromPoint(5, 5) must inherit property "getClientRect()" with the proper type assert_equals: Unexpected exception when evaluating object expected null but got object "TypeError: document.caretPositionFromPoint is not a function. (In 'document.caretPositionFromPoint(5, 5)', 'document.caretPositionFromPoint' is undefined)"
+FAIL CSSPseudoElement interface: operation getBoxQuads(BoxQuadOptions) assert_own_property: self does not have own property "CSSPseudoElement" expected property "CSSPseudoElement" missing
+FAIL CSSPseudoElement interface: operation convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions) assert_own_property: self does not have own property "CSSPseudoElement" expected property "CSSPseudoElement" missing
+FAIL CSSPseudoElement interface: operation convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions) assert_own_property: self does not have own property "CSSPseudoElement" expected property "CSSPseudoElement" missing
+FAIL CSSPseudoElement interface: operation convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions) assert_own_property: self does not have own property "CSSPseudoElement" expected property "CSSPseudoElement" missing
+PASS MouseEvent interface: attribute screenX 
+PASS MouseEvent interface: attribute screenY 
+FAIL MouseEvent interface: attribute pageX assert_own_property: expected property "pageX" missing
+FAIL MouseEvent interface: attribute pageY assert_own_property: expected property "pageY" missing
+PASS MouseEvent interface: attribute clientX 
+PASS MouseEvent interface: attribute clientY 
+PASS MouseEvent interface: attribute x 
+PASS MouseEvent interface: attribute y 
+PASS MouseEvent interface: attribute offsetX 
+PASS MouseEvent interface: attribute offsetY 
+PASS HTMLElement interface: attribute offsetParent 
+PASS HTMLElement interface: attribute offsetTop 
+PASS HTMLElement interface: attribute offsetLeft 
+PASS HTMLElement interface: attribute offsetWidth 
+PASS HTMLElement interface: attribute offsetHeight 
+PASS HTMLElement interface: document.createElement("div") must inherit property "offsetParent" with the proper type 
+PASS HTMLElement interface: document.createElement("div") must inherit property "offsetTop" with the proper type 
+PASS HTMLElement interface: document.createElement("div") must inherit property "offsetLeft" with the proper type 
+PASS HTMLElement interface: document.createElement("div") must inherit property "offsetWidth" with the proper type 
+PASS HTMLElement interface: document.createElement("div") must inherit property "offsetHeight" with the proper type 
+PASS Element interface: document.createElement("div") must inherit property "getClientRects()" with the proper type 
+PASS Element interface: document.createElement("div") must inherit property "getBoundingClientRect()" with the proper type 
+PASS Element interface: document.createElement("div") must inherit property "scrollIntoView([object Object],[object Object])" with the proper type 
+PASS Element interface: calling scrollIntoView([object Object],[object Object]) on document.createElement("div") with too few arguments must throw TypeError 
+PASS Element interface: document.createElement("div") must inherit property "scroll(ScrollToOptions)" with the proper type 
+PASS Element interface: calling scroll(ScrollToOptions) on document.createElement("div") with too few arguments must throw TypeError 
+PASS Element interface: document.createElement("div") must inherit property "scroll(unrestricted double, unrestricted double)" with the proper type 
+PASS Element interface: calling scroll(unrestricted double, unrestricted double) on document.createElement("div") with too few arguments must throw TypeError 
+PASS Element interface: document.createElement("div") must inherit property "scrollTo(ScrollToOptions)" with the proper type 
+PASS Element interface: calling scrollTo(ScrollToOptions) on document.createElement("div") with too few arguments must throw TypeError 
+PASS Element interface: document.createElement("div") must inherit property "scrollTo(unrestricted double, unrestricted double)" with the proper type 
+PASS Element interface: calling scrollTo(unrestricted double, unrestricted double) on document.createElement("div") with too few arguments must throw TypeError 
+PASS Element interface: document.createElement("div") must inherit property "scrollBy(ScrollToOptions)" with the proper type 
+PASS Element interface: calling scrollBy(ScrollToOptions) on document.createElement("div") with too few arguments must throw TypeError 
+PASS Element interface: document.createElement("div") must inherit property "scrollBy(unrestricted double, unrestricted double)" with the proper type 
+PASS Element interface: calling scrollBy(unrestricted double, unrestricted double) on document.createElement("div") with too few arguments must throw TypeError 
+PASS Element interface: document.createElement("div") must inherit property "scrollTop" with the proper type 
+PASS Element interface: document.createElement("div") must inherit property "scrollLeft" with the proper type 
+PASS Element interface: document.createElement("div") must inherit property "scrollWidth" with the proper type 
+PASS Element interface: document.createElement("div") must inherit property "scrollHeight" with the proper type 
+PASS Element interface: document.createElement("div") must inherit property "clientTop" with the proper type 
+PASS Element interface: document.createElement("div") must inherit property "clientLeft" with the proper type 
+PASS Element interface: document.createElement("div") must inherit property "clientWidth" with the proper type 
+PASS Element interface: document.createElement("div") must inherit property "clientHeight" with the proper type 
+FAIL Element interface: document.createElement("div") must inherit property "getBoxQuads(BoxQuadOptions)" with the proper type assert_inherits: property "getBoxQuads" not found in prototype chain
+FAIL Element interface: calling getBoxQuads(BoxQuadOptions) on document.createElement("div") with too few arguments must throw TypeError assert_inherits: property "getBoxQuads" not found in prototype chain
+FAIL Element interface: document.createElement("div") must inherit property "convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertQuadFromNode" not found in prototype chain
+FAIL Element interface: calling convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions) on document.createElement("div") with too few arguments must throw TypeError assert_inherits: property "convertQuadFromNode" not found in prototype chain
+FAIL Element interface: document.createElement("div") must inherit property "convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertRectFromNode" not found in prototype chain
+FAIL Element interface: calling convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions) on document.createElement("div") with too few arguments must throw TypeError assert_inherits: property "convertRectFromNode" not found in prototype chain
+FAIL Element interface: document.createElement("div") must inherit property "convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertPointFromNode" not found in prototype chain
+FAIL Element interface: calling convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions) on document.createElement("div") with too few arguments must throw TypeError assert_inherits: property "convertPointFromNode" not found in prototype chain
+PASS HTMLImageElement interface: attribute x 
+PASS HTMLImageElement interface: attribute y 
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "x" with the proper type 
+PASS HTMLImageElement interface: document.createElement("img") must inherit property "y" with the proper type 
+PASS HTMLElement interface: document.createElement("img") must inherit property "offsetParent" with the proper type 
+PASS HTMLElement interface: document.createElement("img") must inherit property "offsetTop" with the proper type 
+PASS HTMLElement interface: document.createElement("img") must inherit property "offsetLeft" with the proper type 
+PASS HTMLElement interface: document.createElement("img") must inherit property "offsetWidth" with the proper type 
+PASS HTMLElement interface: document.createElement("img") must inherit property "offsetHeight" with the proper type 
+PASS Element interface: document.createElement("img") must inherit property "getClientRects()" with the proper type 
+PASS Element interface: document.createElement("img") must inherit property "getBoundingClientRect()" with the proper type 
+PASS Element interface: document.createElement("img") must inherit property "scrollIntoView([object Object],[object Object])" with the proper type 
+PASS Element interface: calling scrollIntoView([object Object],[object Object]) on document.createElement("img") with too few arguments must throw TypeError 
+PASS Element interface: document.createElement("img") must inherit property "scroll(ScrollToOptions)" with the proper type 
+PASS Element interface: calling scroll(ScrollToOptions) on document.createElement("img") with too few arguments must throw TypeError 
+PASS Element interface: document.createElement("img") must inherit property "scroll(unrestricted double, unrestricted double)" with the proper type 
+PASS Element interface: calling scroll(unrestricted double, unrestricted double) on document.createElement("img") with too few arguments must throw TypeError 
+PASS Element interface: document.createElement("img") must inherit property "scrollTo(ScrollToOptions)" with the proper type 
+PASS Element interface: calling scrollTo(ScrollToOptions) on document.createElement("img") with too few arguments must throw TypeError 
+PASS Element interface: document.createElement("img") must inherit property "scrollTo(unrestricted double, unrestricted double)" with the proper type 
+PASS Element interface: calling scrollTo(unrestricted double, unrestricted double) on document.createElement("img") with too few arguments must throw TypeError 
+PASS Element interface: document.createElement("img") must inherit property "scrollBy(ScrollToOptions)" with the proper type 
+PASS Element interface: calling scrollBy(ScrollToOptions) on document.createElement("img") with too few arguments must throw TypeError 
+PASS Element interface: document.createElement("img") must inherit property "scrollBy(unrestricted double, unrestricted double)" with the proper type 
+PASS Element interface: calling scrollBy(unrestricted double, unrestricted double) on document.createElement("img") with too few arguments must throw TypeError 
+PASS Element interface: document.createElement("img") must inherit property "scrollTop" with the proper type 
+PASS Element interface: document.createElement("img") must inherit property "scrollLeft" with the proper type 
+PASS Element interface: document.createElement("img") must inherit property "scrollWidth" with the proper type 
+PASS Element interface: document.createElement("img") must inherit property "scrollHeight" with the proper type 
+PASS Element interface: document.createElement("img") must inherit property "clientTop" with the proper type 
+PASS Element interface: document.createElement("img") must inherit property "clientLeft" with the proper type 
+PASS Element interface: document.createElement("img") must inherit property "clientWidth" with the proper type 
+PASS Element interface: document.createElement("img") must inherit property "clientHeight" with the proper type 
+FAIL Element interface: document.createElement("img") must inherit property "getBoxQuads(BoxQuadOptions)" with the proper type assert_inherits: property "getBoxQuads" not found in prototype chain
+FAIL Element interface: calling getBoxQuads(BoxQuadOptions) on document.createElement("img") with too few arguments must throw TypeError assert_inherits: property "getBoxQuads" not found in prototype chain
+FAIL Element interface: document.createElement("img") must inherit property "convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertQuadFromNode" not found in prototype chain
+FAIL Element interface: calling convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions) on document.createElement("img") with too few arguments must throw TypeError assert_inherits: property "convertQuadFromNode" not found in prototype chain
+FAIL Element interface: document.createElement("img") must inherit property "convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertRectFromNode" not found in prototype chain
+FAIL Element interface: calling convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions) on document.createElement("img") with too few arguments must throw TypeError assert_inherits: property "convertRectFromNode" not found in prototype chain
+FAIL Element interface: document.createElement("img") must inherit property "convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertPointFromNode" not found in prototype chain
+FAIL Element interface: calling convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions) on document.createElement("img") with too few arguments must throw TypeError assert_inherits: property "convertPointFromNode" not found in prototype chain
+PASS Window interface: operation matchMedia(CSSOMString) 
+PASS Window interface: attribute screen 
+FAIL Window interface: operation moveTo(long, long) assert_equals: property has wrong .length expected 2 but got 0
+FAIL Window interface: operation moveBy(long, long) assert_equals: property has wrong .length expected 2 but got 0
+FAIL Window interface: operation resizeTo(long, long) assert_equals: property has wrong .length expected 2 but got 0
+FAIL Window interface: operation resizeBy(long, long) assert_equals: property has wrong .length expected 2 but got 0
+PASS Window interface: attribute innerWidth 
+PASS Window interface: attribute innerHeight 
+PASS Window interface: attribute scrollX 
+PASS Window interface: attribute pageXOffset 
+PASS Window interface: attribute scrollY 
+PASS Window interface: attribute pageYOffset 
+PASS Window interface: operation scroll(ScrollToOptions) 
+PASS Window interface: operation scroll(unrestricted double, unrestricted double) 
+PASS Window interface: operation scrollTo(ScrollToOptions) 
+PASS Window interface: operation scrollTo(unrestricted double, unrestricted double) 
+PASS Window interface: operation scrollBy(ScrollToOptions) 
+PASS Window interface: operation scrollBy(unrestricted double, unrestricted double) 
+PASS Window interface: attribute screenX 
+PASS Window interface: attribute screenLeft 
+PASS Window interface: attribute screenY 
+PASS Window interface: attribute screenTop 
+PASS Window interface: attribute outerWidth 
+PASS Window interface: attribute outerHeight 
+PASS Window interface: attribute devicePixelRatio 
+PASS Window interface: window must inherit property "matchMedia(CSSOMString)" with the proper type 
+PASS Window interface: calling matchMedia(CSSOMString) on window with too few arguments must throw TypeError 
+PASS Window interface: window must inherit property "screen" with the proper type 
+PASS Window interface: window must inherit property "moveTo(long, long)" with the proper type 
+FAIL Window interface: calling moveTo(long, long) on window with too few arguments must throw TypeError assert_throws: Called with 0 arguments function "function () {
+            fn.apply(obj, args);
+        }" did not throw
+PASS Window interface: window must inherit property "moveBy(long, long)" with the proper type 
+FAIL Window interface: calling moveBy(long, long) on window with too few arguments must throw TypeError assert_throws: Called with 0 arguments function "function () {
+            fn.apply(obj, args);
+        }" did not throw
+PASS Window interface: window must inherit property "resizeTo(long, long)" with the proper type 
+FAIL Window interface: calling resizeTo(long, long) on window with too few arguments must throw TypeError assert_throws: Called with 0 arguments function "function () {
+            fn.apply(obj, args);
+        }" did not throw
+PASS Window interface: window must inherit property "resizeBy(long, long)" with the proper type 
+FAIL Window interface: calling resizeBy(long, long) on window with too few arguments must throw TypeError assert_throws: Called with 0 arguments function "function () {
+            fn.apply(obj, args);
+        }" did not throw
+PASS Window interface: window must inherit property "innerWidth" with the proper type 
+PASS Window interface: window must inherit property "innerHeight" with the proper type 
+PASS Window interface: window must inherit property "scrollX" with the proper type 
+PASS Window interface: window must inherit property "pageXOffset" with the proper type 
+PASS Window interface: window must inherit property "scrollY" with the proper type 
+PASS Window interface: window must inherit property "pageYOffset" with the proper type 
+PASS Window interface: window must inherit property "scroll(ScrollToOptions)" with the proper type 
+PASS Window interface: calling scroll(ScrollToOptions) on window with too few arguments must throw TypeError 
+PASS Window interface: window must inherit property "scroll(unrestricted double, unrestricted double)" with the proper type 
+PASS Window interface: calling scroll(unrestricted double, unrestricted double) on window with too few arguments must throw TypeError 
+PASS Window interface: window must inherit property "scrollTo(ScrollToOptions)" with the proper type 
+PASS Window interface: calling scrollTo(ScrollToOptions) on window with too few arguments must throw TypeError 
+PASS Window interface: window must inherit property "scrollTo(unrestricted double, unrestricted double)" with the proper type 
+PASS Window interface: calling scrollTo(unrestricted double, unrestricted double) on window with too few arguments must throw TypeError 
+PASS Window interface: window must inherit property "scrollBy(ScrollToOptions)" with the proper type 
+PASS Window interface: calling scrollBy(ScrollToOptions) on window with too few arguments must throw TypeError 
+PASS Window interface: window must inherit property "scrollBy(unrestricted double, unrestricted double)" with the proper type 
+PASS Window interface: calling scrollBy(unrestricted double, unrestricted double) on window with too few arguments must throw TypeError 
+PASS Window interface: window must inherit property "screenX" with the proper type 
+PASS Window interface: window must inherit property "screenLeft" with the proper type 
+PASS Window interface: window must inherit property "screenY" with the proper type 
+PASS Window interface: window must inherit property "screenTop" with the proper type 
+PASS Window interface: window must inherit property "outerWidth" with the proper type 
+PASS Window interface: window must inherit property "outerHeight" with the proper type 
+PASS Window interface: window must inherit property "devicePixelRatio" with the proper type 
+PASS Document interface: operation elementFromPoint(double, double) 
+PASS Document interface: operation elementsFromPoint(double, double) 
+FAIL Document interface: operation caretPositionFromPoint(double, double) assert_own_property: interface prototype object missing non-static operation expected property "caretPositionFromPoint" missing
+PASS Document interface: attribute scrollingElement 
+FAIL Document interface: operation getBoxQuads(BoxQuadOptions) assert_own_property: interface prototype object missing non-static operation expected property "getBoxQuads" missing
+FAIL Document interface: operation convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions) assert_own_property: interface prototype object missing non-static operation expected property "convertQuadFromNode" missing
+FAIL Document interface: operation convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions) assert_own_property: interface prototype object missing non-static operation expected property "convertRectFromNode" missing
+FAIL Document interface: operation convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions) assert_own_property: interface prototype object missing non-static operation expected property "convertPointFromNode" missing
+PASS Document interface: document must inherit property "elementFromPoint(double, double)" with the proper type 
+PASS Document interface: calling elementFromPoint(double, double) on document with too few arguments must throw TypeError 
+PASS Document interface: document must inherit property "elementsFromPoint(double, double)" with the proper type 
+PASS Document interface: calling elementsFromPoint(double, double) on document with too few arguments must throw TypeError 
+FAIL Document interface: document must inherit property "caretPositionFromPoint(double, double)" with the proper type assert_inherits: property "caretPositionFromPoint" not found in prototype chain
+FAIL Document interface: calling caretPositionFromPoint(double, double) on document with too few arguments must throw TypeError assert_inherits: property "caretPositionFromPoint" not found in prototype chain
+PASS Document interface: document must inherit property "scrollingElement" with the proper type 
+FAIL Document interface: document must inherit property "getBoxQuads(BoxQuadOptions)" with the proper type assert_inherits: property "getBoxQuads" not found in prototype chain
+FAIL Document interface: calling getBoxQuads(BoxQuadOptions) on document with too few arguments must throw TypeError assert_inherits: property "getBoxQuads" not found in prototype chain
+FAIL Document interface: document must inherit property "convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertQuadFromNode" not found in prototype chain
+FAIL Document interface: calling convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions) on document with too few arguments must throw TypeError assert_inherits: property "convertQuadFromNode" not found in prototype chain
+FAIL Document interface: document must inherit property "convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertRectFromNode" not found in prototype chain
+FAIL Document interface: calling convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions) on document with too few arguments must throw TypeError assert_inherits: property "convertRectFromNode" not found in prototype chain
+FAIL Document interface: document must inherit property "convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertPointFromNode" not found in prototype chain
+FAIL Document interface: calling convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions) on document with too few arguments must throw TypeError assert_inherits: property "convertPointFromNode" not found in prototype chain
+PASS Element interface: operation getClientRects() 
+PASS Element interface: operation getBoundingClientRect() 
+PASS Element interface: operation scrollIntoView([object Object],[object Object]) 
+PASS Element interface: operation scroll(ScrollToOptions) 
+PASS Element interface: operation scroll(unrestricted double, unrestricted double) 
+PASS Element interface: operation scrollTo(ScrollToOptions) 
+PASS Element interface: operation scrollTo(unrestricted double, unrestricted double) 
+PASS Element interface: operation scrollBy(ScrollToOptions) 
+PASS Element interface: operation scrollBy(unrestricted double, unrestricted double) 
+PASS Element interface: attribute scrollTop 
+PASS Element interface: attribute scrollLeft 
+PASS Element interface: attribute scrollWidth 
+PASS Element interface: attribute scrollHeight 
+PASS Element interface: attribute clientTop 
+PASS Element interface: attribute clientLeft 
+PASS Element interface: attribute clientWidth 
+PASS Element interface: attribute clientHeight 
+FAIL Element interface: operation getBoxQuads(BoxQuadOptions) assert_own_property: interface prototype object missing non-static operation expected property "getBoxQuads" missing
+FAIL Element interface: operation convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions) assert_own_property: interface prototype object missing non-static operation expected property "convertQuadFromNode" missing
+FAIL Element interface: operation convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions) assert_own_property: interface prototype object missing non-static operation expected property "convertRectFromNode" missing
+FAIL Element interface: operation convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions) assert_own_property: interface prototype object missing non-static operation expected property "convertPointFromNode" missing
+PASS Element interface: document.createElementNS("x", "y") must inherit property "getClientRects()" with the proper type 
+PASS Element interface: document.createElementNS("x", "y") must inherit property "getBoundingClientRect()" with the proper type 
+PASS Element interface: document.createElementNS("x", "y") must inherit property "scrollIntoView([object Object],[object Object])" with the proper type 
+PASS Element interface: calling scrollIntoView([object Object],[object Object]) on document.createElementNS("x", "y") with too few arguments must throw TypeError 
+PASS Element interface: document.createElementNS("x", "y") must inherit property "scroll(ScrollToOptions)" with the proper type 
+PASS Element interface: calling scroll(ScrollToOptions) on document.createElementNS("x", "y") with too few arguments must throw TypeError 
+PASS Element interface: document.createElementNS("x", "y") must inherit property "scroll(unrestricted double, unrestricted double)" with the proper type 
+PASS Element interface: calling scroll(unrestricted double, unrestricted double) on document.createElementNS("x", "y") with too few arguments must throw TypeError 
+PASS Element interface: document.createElementNS("x", "y") must inherit property "scrollTo(ScrollToOptions)" with the proper type 
+PASS Element interface: calling scrollTo(ScrollToOptions) on document.createElementNS("x", "y") with too few arguments must throw TypeError 
+PASS Element interface: document.createElementNS("x", "y") must inherit property "scrollTo(unrestricted double, unrestricted double)" with the proper type 
+PASS Element interface: calling scrollTo(unrestricted double, unrestricted double) on document.createElementNS("x", "y") with too few arguments must throw TypeError 
+PASS Element interface: document.createElementNS("x", "y") must inherit property "scrollBy(ScrollToOptions)" with the proper type 
+PASS Element interface: calling scrollBy(ScrollToOptions) on document.createElementNS("x", "y") with too few arguments must throw TypeError 
+PASS Element interface: document.createElementNS("x", "y") must inherit property "scrollBy(unrestricted double, unrestricted double)" with the proper type 
+PASS Element interface: calling scrollBy(unrestricted double, unrestricted double) on document.createElementNS("x", "y") with too few arguments must throw TypeError 
+PASS Element interface: document.createElementNS("x", "y") must inherit property "scrollTop" with the proper type 
+PASS Element interface: document.createElementNS("x", "y") must inherit property "scrollLeft" with the proper type 
+PASS Element interface: document.createElementNS("x", "y") must inherit property "scrollWidth" with the proper type 
+PASS Element interface: document.createElementNS("x", "y") must inherit property "scrollHeight" with the proper type 
+PASS Element interface: document.createElementNS("x", "y") must inherit property "clientTop" with the proper type 
+PASS Element interface: document.createElementNS("x", "y") must inherit property "clientLeft" with the proper type 
+PASS Element interface: document.createElementNS("x", "y") must inherit property "clientWidth" with the proper type 
+PASS Element interface: document.createElementNS("x", "y") must inherit property "clientHeight" with the proper type 
+FAIL Element interface: document.createElementNS("x", "y") must inherit property "getBoxQuads(BoxQuadOptions)" with the proper type assert_inherits: property "getBoxQuads" not found in prototype chain
+FAIL Element interface: calling getBoxQuads(BoxQuadOptions) on document.createElementNS("x", "y") with too few arguments must throw TypeError assert_inherits: property "getBoxQuads" not found in prototype chain
+FAIL Element interface: document.createElementNS("x", "y") must inherit property "convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertQuadFromNode" not found in prototype chain
+FAIL Element interface: calling convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions) on document.createElementNS("x", "y") with too few arguments must throw TypeError assert_inherits: property "convertQuadFromNode" not found in prototype chain
+FAIL Element interface: document.createElementNS("x", "y") must inherit property "convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertRectFromNode" not found in prototype chain
+FAIL Element interface: calling convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions) on document.createElementNS("x", "y") with too few arguments must throw TypeError assert_inherits: property "convertRectFromNode" not found in prototype chain
+FAIL Element interface: document.createElementNS("x", "y") must inherit property "convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertPointFromNode" not found in prototype chain
+FAIL Element interface: calling convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions) on document.createElementNS("x", "y") with too few arguments must throw TypeError assert_inherits: property "convertPointFromNode" not found in prototype chain
+FAIL Text interface: operation getBoxQuads(BoxQuadOptions) assert_own_property: interface prototype object missing non-static operation expected property "getBoxQuads" missing
+FAIL Text interface: operation convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions) assert_own_property: interface prototype object missing non-static operation expected property "convertQuadFromNode" missing
+FAIL Text interface: operation convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions) assert_own_property: interface prototype object missing non-static operation expected property "convertRectFromNode" missing
+FAIL Text interface: operation convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions) assert_own_property: interface prototype object missing non-static operation expected property "convertPointFromNode" missing
+FAIL Text interface: document.createTextNode("x") must inherit property "getBoxQuads(BoxQuadOptions)" with the proper type assert_inherits: property "getBoxQuads" not found in prototype chain
+FAIL Text interface: calling getBoxQuads(BoxQuadOptions) on document.createTextNode("x") with too few arguments must throw TypeError assert_inherits: property "getBoxQuads" not found in prototype chain
+FAIL Text interface: document.createTextNode("x") must inherit property "convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertQuadFromNode" not found in prototype chain
+FAIL Text interface: calling convertQuadFromNode(DOMQuadInit, GeometryNode, ConvertCoordinateOptions) on document.createTextNode("x") with too few arguments must throw TypeError assert_inherits: property "convertQuadFromNode" not found in prototype chain
+FAIL Text interface: document.createTextNode("x") must inherit property "convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertRectFromNode" not found in prototype chain
+FAIL Text interface: calling convertRectFromNode(DOMRectReadOnly, GeometryNode, ConvertCoordinateOptions) on document.createTextNode("x") with too few arguments must throw TypeError assert_inherits: property "convertRectFromNode" not found in prototype chain
+FAIL Text interface: document.createTextNode("x") must inherit property "convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions)" with the proper type assert_inherits: property "convertPointFromNode" not found in prototype chain
+FAIL Text interface: calling convertPointFromNode(DOMPointInit, GeometryNode, ConvertCoordinateOptions) on document.createTextNode("x") with too few arguments must throw TypeError assert_inherits: property "convertPointFromNode" not found in prototype chain
+PASS Range interface: operation getClientRects() 
+PASS Range interface: operation getBoundingClientRect() 
+PASS Range interface: new Range() must inherit property "getClientRects()" with the proper type 
+PASS Range interface: new Range() must inherit property "getBoundingClientRect()" with the proper type 
 
index fa635df..7274caf 100644 (file)
@@ -24,7 +24,7 @@ PASS DOMPointReadOnly interface: new DOMPointReadOnly() must inherit property "w
 PASS DOMPointReadOnly interface: new DOMPointReadOnly() must inherit property "matrixTransform(DOMMatrixInit)" with the proper type 
 PASS DOMPointReadOnly interface: calling matrixTransform(DOMMatrixInit) on new DOMPointReadOnly() with too few arguments must throw TypeError 
 PASS DOMPointReadOnly interface: new DOMPointReadOnly() must inherit property "toJSON()" with the proper type 
-PASS Test default toJSON operation of DOMPointReadOnly 
+PASS DOMPointReadOnly interface: default toJSON operation on new DOMPointReadOnly() 
 PASS DOMPoint interface: existence and properties of interface object 
 PASS DOMPoint interface object length 
 PASS DOMPoint interface object name 
@@ -58,7 +58,7 @@ PASS DOMPointReadOnly interface: new DOMPoint() must inherit property "w" with t
 PASS DOMPointReadOnly interface: new DOMPoint() must inherit property "matrixTransform(DOMMatrixInit)" with the proper type 
 PASS DOMPointReadOnly interface: calling matrixTransform(DOMMatrixInit) on new DOMPoint() with too few arguments must throw TypeError 
 PASS DOMPointReadOnly interface: new DOMPoint() must inherit property "toJSON()" with the proper type 
-PASS Test default toJSON operation of DOMPoint 
+PASS DOMPointReadOnly interface: default toJSON operation on new DOMPoint() 
 PASS DOMRectReadOnly interface: existence and properties of interface object 
 PASS DOMRectReadOnly interface object length 
 PASS DOMRectReadOnly interface object name 
@@ -88,7 +88,7 @@ PASS DOMRectReadOnly interface: new DOMRectReadOnly() must inherit property "rig
 PASS DOMRectReadOnly interface: new DOMRectReadOnly() must inherit property "bottom" with the proper type 
 PASS DOMRectReadOnly interface: new DOMRectReadOnly() must inherit property "left" with the proper type 
 PASS DOMRectReadOnly interface: new DOMRectReadOnly() must inherit property "toJSON()" with the proper type 
-PASS Test default toJSON operation of DOMRectReadOnly 
+PASS DOMRectReadOnly interface: default toJSON operation on new DOMRectReadOnly() 
 PASS DOMRect interface: existence and properties of interface object 
 PASS DOMRect interface object length 
 PASS DOMRect interface object name 
@@ -124,7 +124,7 @@ PASS DOMRectReadOnly interface: new DOMRect() must inherit property "right" with
 PASS DOMRectReadOnly interface: new DOMRect() must inherit property "bottom" with the proper type 
 PASS DOMRectReadOnly interface: new DOMRect() must inherit property "left" with the proper type 
 PASS DOMRectReadOnly interface: new DOMRect() must inherit property "toJSON()" with the proper type 
-PASS Test default toJSON operation of DOMRect 
+PASS DOMRectReadOnly interface: default toJSON operation on new DOMRect() 
 PASS DOMRectList interface: existence and properties of interface object 
 PASS DOMRectList interface object length 
 PASS DOMRectList interface object name 
@@ -164,7 +164,7 @@ PASS DOMQuad interface: new DOMQuad() must inherit property "p3" with the proper
 PASS DOMQuad interface: new DOMQuad() must inherit property "p4" with the proper type 
 PASS DOMQuad interface: new DOMQuad() must inherit property "getBounds()" with the proper type 
 PASS DOMQuad interface: new DOMQuad() must inherit property "toJSON()" with the proper type 
-FAIL Test default toJSON operation of DOMQuad assert_true: instanceof DOMPoint expected true got false
+FAIL DOMQuad interface: default toJSON operation on new DOMQuad() assert_true: instanceof DOMPoint expected true got false
 PASS DOMMatrixReadOnly interface: existence and properties of interface object 
 PASS DOMMatrixReadOnly interface object length 
 PASS DOMMatrixReadOnly interface object name 
@@ -273,7 +273,7 @@ PASS DOMMatrixReadOnly interface: calling transformPoint(DOMPointInit) on new DO
 PASS DOMMatrixReadOnly interface: new DOMMatrixReadOnly() must inherit property "toFloat32Array()" with the proper type 
 PASS DOMMatrixReadOnly interface: new DOMMatrixReadOnly() must inherit property "toFloat64Array()" with the proper type 
 PASS DOMMatrixReadOnly interface: new DOMMatrixReadOnly() must inherit property "toJSON()" with the proper type 
-PASS Test default toJSON operation of DOMMatrixReadOnly 
+PASS DOMMatrixReadOnly interface: default toJSON operation on new DOMMatrixReadOnly() 
 PASS DOMMatrixReadOnly must be primary interface of DOMMatrixReadOnly.fromMatrix({is2D: false}) 
 PASS Stringification of DOMMatrixReadOnly.fromMatrix({is2D: false}) 
 PASS DOMMatrix interface: existence and properties of interface object 
index 9058708..cb3be89 100644 (file)
@@ -24,7 +24,7 @@ PASS DOMPointReadOnly interface: new DOMPointReadOnly() must inherit property "w
 PASS DOMPointReadOnly interface: new DOMPointReadOnly() must inherit property "matrixTransform(DOMMatrixInit)" with the proper type 
 PASS DOMPointReadOnly interface: calling matrixTransform(DOMMatrixInit) on new DOMPointReadOnly() with too few arguments must throw TypeError 
 PASS DOMPointReadOnly interface: new DOMPointReadOnly() must inherit property "toJSON()" with the proper type 
-PASS Test default toJSON operation of DOMPointReadOnly 
+PASS DOMPointReadOnly interface: default toJSON operation on new DOMPointReadOnly() 
 PASS DOMPoint interface: existence and properties of interface object 
 PASS DOMPoint interface object length 
 PASS DOMPoint interface object name 
@@ -54,7 +54,7 @@ PASS DOMPointReadOnly interface: new DOMPoint() must inherit property "w" with t
 PASS DOMPointReadOnly interface: new DOMPoint() must inherit property "matrixTransform(DOMMatrixInit)" with the proper type 
 PASS DOMPointReadOnly interface: calling matrixTransform(DOMMatrixInit) on new DOMPoint() with too few arguments must throw TypeError 
 PASS DOMPointReadOnly interface: new DOMPoint() must inherit property "toJSON()" with the proper type 
-PASS Test default toJSON operation of DOMPoint 
+PASS DOMPointReadOnly interface: default toJSON operation on new DOMPoint() 
 PASS DOMRectReadOnly interface: existence and properties of interface object 
 PASS DOMRectReadOnly interface object length 
 PASS DOMRectReadOnly interface object name 
@@ -84,7 +84,7 @@ PASS DOMRectReadOnly interface: new DOMRectReadOnly() must inherit property "rig
 PASS DOMRectReadOnly interface: new DOMRectReadOnly() must inherit property "bottom" with the proper type 
 PASS DOMRectReadOnly interface: new DOMRectReadOnly() must inherit property "left" with the proper type 
 PASS DOMRectReadOnly interface: new DOMRectReadOnly() must inherit property "toJSON()" with the proper type 
-PASS Test default toJSON operation of DOMRectReadOnly 
+PASS DOMRectReadOnly interface: default toJSON operation on new DOMRectReadOnly() 
 PASS DOMRect interface: existence and properties of interface object 
 PASS DOMRect interface object length 
 PASS DOMRect interface object name 
@@ -116,7 +116,7 @@ PASS DOMRectReadOnly interface: new DOMRect() must inherit property "right" with
 PASS DOMRectReadOnly interface: new DOMRect() must inherit property "bottom" with the proper type 
 PASS DOMRectReadOnly interface: new DOMRect() must inherit property "left" with the proper type 
 PASS DOMRectReadOnly interface: new DOMRect() must inherit property "toJSON()" with the proper type 
-PASS Test default toJSON operation of DOMRect 
+PASS DOMRectReadOnly interface: default toJSON operation on new DOMRect() 
 PASS DOMRectList interface: existence and properties of interface object 
 PASS DOMQuad interface: existence and properties of interface object 
 PASS DOMQuad interface object length 
@@ -144,7 +144,7 @@ PASS DOMQuad interface: new DOMQuad() must inherit property "p3" with the proper
 PASS DOMQuad interface: new DOMQuad() must inherit property "p4" with the proper type 
 PASS DOMQuad interface: new DOMQuad() must inherit property "getBounds()" with the proper type 
 PASS DOMQuad interface: new DOMQuad() must inherit property "toJSON()" with the proper type 
-FAIL Test default toJSON operation of DOMQuad assert_true: instanceof DOMPoint expected true got false
+FAIL DOMQuad interface: default toJSON operation on new DOMQuad() assert_true: instanceof DOMPoint expected true got false
 PASS DOMMatrixReadOnly interface: existence and properties of interface object 
 PASS DOMMatrixReadOnly interface object length 
 PASS DOMMatrixReadOnly interface object name 
@@ -193,7 +193,7 @@ PASS DOMMatrixReadOnly interface: operation inverse()
 PASS DOMMatrixReadOnly interface: operation transformPoint(DOMPointInit) 
 PASS DOMMatrixReadOnly interface: operation toFloat32Array() 
 PASS DOMMatrixReadOnly interface: operation toFloat64Array() 
-PASS DOMMatrixReadOnly interface: member undefined 
+PASS DOMMatrixReadOnly interface: member  
 PASS DOMMatrixReadOnly interface: operation toJSON() 
 PASS DOMMatrixReadOnly must be primary interface of new DOMMatrixReadOnly() 
 PASS Stringification of new DOMMatrixReadOnly() 
@@ -252,9 +252,9 @@ PASS DOMMatrixReadOnly interface: new DOMMatrixReadOnly() must inherit property
 PASS DOMMatrixReadOnly interface: calling transformPoint(DOMPointInit) on new DOMMatrixReadOnly() with too few arguments must throw TypeError 
 PASS DOMMatrixReadOnly interface: new DOMMatrixReadOnly() must inherit property "toFloat32Array()" with the proper type 
 PASS DOMMatrixReadOnly interface: new DOMMatrixReadOnly() must inherit property "toFloat64Array()" with the proper type 
-PASS DOMMatrixReadOnly interface: new DOMMatrixReadOnly() must not have property "undefined
+PASS DOMMatrixReadOnly interface: new DOMMatrixReadOnly() must not have property "" 
 PASS DOMMatrixReadOnly interface: new DOMMatrixReadOnly() must inherit property "toJSON()" with the proper type 
-PASS Test default toJSON operation of DOMMatrixReadOnly 
+PASS DOMMatrixReadOnly interface: default toJSON operation on new DOMMatrixReadOnly() 
 PASS DOMMatrixReadOnly must be primary interface of DOMMatrixReadOnly.fromMatrix({is2D: false}) 
 PASS Stringification of DOMMatrixReadOnly.fromMatrix({is2D: false}) 
 PASS DOMMatrix interface: existence and properties of interface object 
index 1f3f13b..a98e085 100644 (file)
@@ -1,8 +1,8 @@
-CONSOLE MESSAGE: line 482: callback not yet supported
 DOM IDL tests
 
 
 PASS Test driver 
+PASS Partial interface Window: original interface defined 
 PASS Event interface: existence and properties of interface object 
 PASS Event interface object length 
 PASS Event interface object name 
@@ -13,6 +13,7 @@ PASS Event interface: attribute type
 PASS Event interface: attribute target 
 PASS Event interface: attribute srcElement 
 PASS Event interface: attribute currentTarget 
+PASS Event interface: operation composedPath() 
 PASS Event interface: constant NONE on interface object 
 PASS Event interface: constant NONE on interface prototype object 
 PASS Event interface: constant CAPTURING_PHASE on interface object 
@@ -23,12 +24,14 @@ PASS Event interface: constant BUBBLING_PHASE on interface object
 PASS Event interface: constant BUBBLING_PHASE on interface prototype object 
 PASS Event interface: attribute eventPhase 
 PASS Event interface: operation stopPropagation() 
+PASS Event interface: attribute cancelBubble 
 PASS Event interface: operation stopImmediatePropagation() 
 PASS Event interface: attribute bubbles 
 PASS Event interface: attribute cancelable 
 PASS Event interface: attribute returnValue 
 PASS Event interface: operation preventDefault() 
 PASS Event interface: attribute defaultPrevented 
+PASS Event interface: attribute composed 
 PASS Event interface: attribute timeStamp 
 PASS Event interface: operation initEvent(DOMString, boolean, boolean) 
 PASS Event must be primary interface of document.createEvent("Event") 
@@ -37,18 +40,21 @@ PASS Event interface: document.createEvent("Event") must inherit property "type"
 PASS Event interface: document.createEvent("Event") must inherit property "target" with the proper type 
 PASS Event interface: document.createEvent("Event") must inherit property "srcElement" with the proper type 
 PASS Event interface: document.createEvent("Event") must inherit property "currentTarget" with the proper type 
+PASS Event interface: document.createEvent("Event") must inherit property "composedPath()" with the proper type 
 PASS Event interface: document.createEvent("Event") must inherit property "NONE" with the proper type 
 PASS Event interface: document.createEvent("Event") must inherit property "CAPTURING_PHASE" with the proper type 
 PASS Event interface: document.createEvent("Event") must inherit property "AT_TARGET" with the proper type 
 PASS Event interface: document.createEvent("Event") must inherit property "BUBBLING_PHASE" with the proper type 
 PASS Event interface: document.createEvent("Event") must inherit property "eventPhase" with the proper type 
 PASS Event interface: document.createEvent("Event") must inherit property "stopPropagation()" with the proper type 
+PASS Event interface: document.createEvent("Event") must inherit property "cancelBubble" with the proper type 
 PASS Event interface: document.createEvent("Event") must inherit property "stopImmediatePropagation()" with the proper type 
 PASS Event interface: document.createEvent("Event") must inherit property "bubbles" with the proper type 
 PASS Event interface: document.createEvent("Event") must inherit property "cancelable" with the proper type 
 PASS Event interface: document.createEvent("Event") must inherit property "returnValue" with the proper type 
 PASS Event interface: document.createEvent("Event") must inherit property "preventDefault()" with the proper type 
 PASS Event interface: document.createEvent("Event") must inherit property "defaultPrevented" with the proper type 
+PASS Event interface: document.createEvent("Event") must inherit property "composed" with the proper type 
 PASS Event interface: document.createEvent("Event") must have own property "isTrusted" 
 PASS Event interface: document.createEvent("Event") must inherit property "timeStamp" with the proper type 
 PASS Event interface: document.createEvent("Event") must inherit property "initEvent(DOMString, boolean, boolean)" with the proper type 
@@ -59,18 +65,21 @@ PASS Event interface: new Event("foo") must inherit property "type" with the pro
 PASS Event interface: new Event("foo") must inherit property "target" with the proper type 
 PASS Event interface: new Event("foo") must inherit property "srcElement" with the proper type 
 PASS Event interface: new Event("foo") must inherit property "currentTarget" with the proper type 
+PASS Event interface: new Event("foo") must inherit property "composedPath()" with the proper type 
 PASS Event interface: new Event("foo") must inherit property "NONE" with the proper type 
 PASS Event interface: new Event("foo") must inherit property "CAPTURING_PHASE" with the proper type 
 PASS Event interface: new Event("foo") must inherit property "AT_TARGET" with the proper type 
 PASS Event interface: new Event("foo") must inherit property "BUBBLING_PHASE" with the proper type 
 PASS Event interface: new Event("foo") must inherit property "eventPhase" with the proper type 
 PASS Event interface: new Event("foo") must inherit property "stopPropagation()" with the proper type 
+PASS Event interface: new Event("foo") must inherit property "cancelBubble" with the proper type 
 PASS Event interface: new Event("foo") must inherit property "stopImmediatePropagation()" with the proper type 
 PASS Event interface: new Event("foo") must inherit property "bubbles" with the proper type 
 PASS Event interface: new Event("foo") must inherit property "cancelable" with the proper type 
 PASS Event interface: new Event("foo") must inherit property "returnValue" with the proper type 
 PASS Event interface: new Event("foo") must inherit property "preventDefault()" with the proper type 
 PASS Event interface: new Event("foo") must inherit property "defaultPrevented" with the proper type 
+PASS Event interface: new Event("foo") must inherit property "composed" with the proper type 
 PASS Event interface: new Event("foo") must have own property "isTrusted" 
 PASS Event interface: new Event("foo") must inherit property "timeStamp" with the proper type 
 PASS Event interface: new Event("foo") must inherit property "initEvent(DOMString, boolean, boolean)" with the proper type 
@@ -92,18 +101,21 @@ PASS Event interface: new CustomEvent("foo") must inherit property "type" with t
 PASS Event interface: new CustomEvent("foo") must inherit property "target" with the proper type 
 PASS Event interface: new CustomEvent("foo") must inherit property "srcElement" with the proper type 
 PASS Event interface: new CustomEvent("foo") must inherit property "currentTarget" with the proper type 
+PASS Event interface: new CustomEvent("foo") must inherit property "composedPath()" with the proper type 
 PASS Event interface: new CustomEvent("foo") must inherit property "NONE" with the proper type 
 PASS Event interface: new CustomEvent("foo") must inherit property "CAPTURING_PHASE" with the proper type 
 PASS Event interface: new CustomEvent("foo") must inherit property "AT_TARGET" with the proper type 
 PASS Event interface: new CustomEvent("foo") must inherit property "BUBBLING_PHASE" with the proper type 
 PASS Event interface: new CustomEvent("foo") must inherit property "eventPhase" with the proper type 
 PASS Event interface: new CustomEvent("foo") must inherit property "stopPropagation()" with the proper type 
+PASS Event interface: new CustomEvent("foo") must inherit property "cancelBubble" with the proper type 
 PASS Event interface: new CustomEvent("foo") must inherit property "stopImmediatePropagation()" with the proper type 
 PASS Event interface: new CustomEvent("foo") must inherit property "bubbles" with the proper type 
 PASS Event interface: new CustomEvent("foo") must inherit property "cancelable" with the proper type 
 PASS Event interface: new CustomEvent("foo") must inherit property "returnValue" with the proper type 
 PASS Event interface: new CustomEvent("foo") must inherit property "preventDefault()" with the proper type 
 PASS Event interface: new CustomEvent("foo") must inherit property "defaultPrevented" with the proper type 
+PASS Event interface: new CustomEvent("foo") must inherit property "composed" with the proper type 
 PASS Event interface: new CustomEvent("foo") must have own property "isTrusted" 
 PASS Event interface: new CustomEvent("foo") must inherit property "timeStamp" with the proper type 
 PASS Event interface: new CustomEvent("foo") must inherit property "initEvent(DOMString, boolean, boolean)" with the proper type 
@@ -168,6 +180,7 @@ PASS NodeList interface: existence and properties of interface prototype object'
 PASS NodeList interface: existence and properties of interface prototype object's @@unscopables property 
 PASS NodeList interface: operation item(unsigned long) 
 PASS NodeList interface: attribute length 
+PASS NodeList interface: iterable<Node> 
 PASS NodeList must be primary interface of document.querySelectorAll("script") 
 PASS Stringification of document.querySelectorAll("script") 
 PASS NodeList interface: document.querySelectorAll("script") must inherit property "item(unsigned long)" with the proper type 
@@ -328,6 +341,9 @@ PASS Document interface: operation prepend([object Object],[object Object])
 PASS Document interface: operation append([object Object],[object Object]) 
 PASS Document interface: operation querySelector(DOMString) 
 PASS Document interface: operation querySelectorAll(DOMString) 
+FAIL Document interface: operation createExpression(DOMString, XPathNSResolver) assert_equals: property has wrong .length expected 1 but got 0
+PASS Document interface: operation createNSResolver(Node) 
+FAIL Document interface: operation evaluate(DOMString, Node, XPathNSResolver, unsigned short, XPathResult) assert_equals: property has wrong .length expected 2 but got 0
 PASS Document must be primary interface of new Document() 
 PASS Stringification of new Document() 
 PASS Document interface: new Document() must inherit property "implementation" with the proper type 
@@ -389,6 +405,16 @@ PASS Document interface: new Document() must inherit property "querySelector(DOM
 PASS Document interface: calling querySelector(DOMString) on new Document() with too few arguments must throw TypeError 
 PASS Document interface: new Document() must inherit property "querySelectorAll(DOMString)" with the proper type 
 PASS Document interface: calling querySelectorAll(DOMString) on new Document() with too few arguments must throw TypeError 
+PASS Document interface: new Document() must inherit property "createExpression(DOMString, XPathNSResolver)" with the proper type 
+FAIL Document interface: calling createExpression(DOMString, XPathNSResolver) on new Document() with too few arguments must throw TypeError assert_throws: Called with 0 arguments function "function () {
+            fn.apply(obj, args);
+        }" did not throw
+PASS Document interface: new Document() must inherit property "createNSResolver(Node)" with the proper type 
+PASS Document interface: calling createNSResolver(Node) on new Document() with too few arguments must throw TypeError 
+PASS Document interface: new Document() must inherit property "evaluate(DOMString, Node, XPathNSResolver, unsigned short, XPathResult)" with the proper type 
+FAIL Document interface: calling evaluate(DOMString, Node, XPathNSResolver, unsigned short, XPathResult) on new Document() with too few arguments must throw TypeError assert_throws: Called with 0 arguments function "function () {
+            fn.apply(obj, args);
+        }" threw object "NotSupportedError: The operation is not supported." ("NotSupportedError") expected object "TypeError" ("TypeError")
 PASS Node interface: new Document() must inherit property "ELEMENT_NODE" with the proper type 
 PASS Node interface: new Document() must inherit property "ATTRIBUTE_NODE" with the proper type 
 PASS Node interface: new Document() must inherit property "TEXT_NODE" with the proper type 
@@ -522,6 +548,16 @@ PASS Document interface: xmlDoc must inherit property "querySelector(DOMString)"
 PASS Document interface: calling querySelector(DOMString) on xmlDoc with too few arguments must throw TypeError 
 PASS Document interface: xmlDoc must inherit property "querySelectorAll(DOMString)" with the proper type 
 PASS Document interface: calling querySelectorAll(DOMString) on xmlDoc with too few arguments must throw TypeError 
+PASS Document interface: xmlDoc must inherit property "createExpression(DOMString, XPathNSResolver)" with the proper type 
+FAIL Document interface: calling createExpression(DOMString, XPathNSResolver) on xmlDoc with too few arguments must throw TypeError assert_throws: Called with 0 arguments function "function () {
+            fn.apply(obj, args);
+        }" did not throw
+PASS Document interface: xmlDoc must inherit property "createNSResolver(Node)" with the proper type 
+PASS Document interface: calling createNSResolver(Node) on xmlDoc with too few arguments must throw TypeError 
+PASS Document interface: xmlDoc must inherit property "evaluate(DOMString, Node, XPathNSResolver, unsigned short, XPathResult)" with the proper type 
+FAIL Document interface: calling evaluate(DOMString, Node, XPathNSResolver, unsigned short, XPathResult) on xmlDoc with too few arguments must throw TypeError assert_throws: Called with 0 arguments function "function () {
+            fn.apply(obj, args);
+        }" threw object "NotSupportedError: The operation is not supported." ("NotSupportedError") expected object "TypeError" ("TypeError")
 PASS Node interface: xmlDoc must inherit property "ELEMENT_NODE" with the proper type 
 PASS Node interface: xmlDoc must inherit property "ATTRIBUTE_NODE" with the proper type 
 PASS Node interface: xmlDoc must inherit property "TEXT_NODE" with the proper type 
@@ -826,6 +862,7 @@ PASS Element interface: operation setAttribute(DOMString, DOMString)
 PASS Element interface: operation setAttributeNS(DOMString, DOMString, DOMString) 
 PASS Element interface: operation removeAttribute(DOMString) 
 PASS Element interface: operation removeAttributeNS(DOMString, DOMString) 
+PASS Element interface: operation toggleAttribute(DOMString, boolean) 
 PASS Element interface: operation hasAttribute(DOMString) 
 PASS Element interface: operation hasAttributeNS(DOMString, DOMString) 
 PASS Element interface: operation getAttributeNode(DOMString) 
@@ -883,6 +920,8 @@ PASS Element interface: element must inherit property "removeAttribute(DOMString
 PASS Element interface: calling removeAttribute(DOMString) on element with too few arguments must throw TypeError 
 PASS Element interface: element must inherit property "removeAttributeNS(DOMString, DOMString)" with the proper type 
 PASS Element interface: calling removeAttributeNS(DOMString, DOMString) on element with too few arguments must throw TypeError 
+PASS Element interface: element must inherit property "toggleAttribute(DOMString, boolean)" with the proper type 
+PASS Element interface: calling toggleAttribute(DOMString, boolean) on element with too few arguments must throw TypeError 
 PASS Element interface: element must inherit property "hasAttribute(DOMString)" with the proper type 
 PASS Element interface: calling hasAttribute(DOMString) on element with too few arguments must throw TypeError 
 PASS Element interface: element must inherit property "hasAttributeNS(DOMString, DOMString)" with the proper type 
@@ -1436,16 +1475,16 @@ FAIL AbstractRange interface: attribute startOffset assert_own_property: self do
 FAIL AbstractRange interface: attribute endContainer assert_own_property: self does not have own property "AbstractRange" expected property "AbstractRange" missing
 FAIL AbstractRange interface: attribute endOffset assert_own_property: self does not have own property "AbstractRange" expected property "AbstractRange" missing
 FAIL AbstractRange interface: attribute collapsed assert_own_property: self does not have own property "AbstractRange" expected property "AbstractRange" missing
-FAIL StaticRange interface: existence and properties of interface object assert_own_property: should inherit from AbstractRange, but self has no such property expected property "AbstractRange" missing
-FAIL StaticRange interface object length assert_equals: wrong value for StaticRange.length expected 0 but got 1
+FAIL StaticRange interface: existence and properties of interface object assert_own_property: self does not have own property "AbstractRange" expected property "AbstractRange" missing
+PASS StaticRange interface object length 
 PASS StaticRange interface object name 
-FAIL StaticRange interface: existence and properties of interface prototype object assert_own_property: should inherit from AbstractRange, but self has no such property expected property "AbstractRange" missing
+FAIL StaticRange interface: existence and properties of interface prototype object assert_own_property: self does not have own property "AbstractRange" expected property "AbstractRange" missing
 PASS StaticRange interface: existence and properties of interface prototype object's "constructor" property 
 PASS StaticRange interface: existence and properties of interface prototype object's @@unscopables property 
-FAIL Range interface: existence and properties of interface object assert_own_property: should inherit from AbstractRange, but self has no such property expected property "AbstractRange" missing
+FAIL Range interface: existence and properties of interface object assert_own_property: self does not have own property "AbstractRange" expected property "AbstractRange" missing
 PASS Range interface object length 
 PASS Range interface object name 
-FAIL Range interface: existence and properties of interface prototype object assert_own_property: should inherit from AbstractRange, but self has no such property expected property "AbstractRange" missing
+FAIL Range interface: existence and properties of interface prototype object assert_own_property: self does not have own property "AbstractRange" expected property "AbstractRange" missing
 PASS Range interface: existence and properties of interface prototype object's "constructor" property 
 PASS Range interface: existence and properties of interface prototype object's @@unscopables property 
 PASS Range interface: attribute commonAncestorContainer 
@@ -1680,6 +1719,7 @@ PASS DOMTokenList interface: operation replace(DOMString, DOMString)
 PASS DOMTokenList interface: operation supports(DOMString) 
 PASS DOMTokenList interface: attribute value 
 PASS DOMTokenList interface: stringifier 
+PASS DOMTokenList interface: iterable<DOMString> 
 PASS DOMTokenList must be primary interface of document.body.classList 
 PASS Stringification of document.body.classList 
 PASS DOMTokenList interface: document.body.classList must inherit property "length" with the proper type 
@@ -1698,5 +1738,61 @@ PASS DOMTokenList interface: calling replace(DOMString, DOMString) on document.b
 PASS DOMTokenList interface: document.body.classList must inherit property "supports(DOMString)" with the proper type 
 PASS DOMTokenList interface: calling supports(DOMString) on document.body.classList with too few arguments must throw TypeError 
 PASS DOMTokenList interface: document.body.classList must inherit property "value" with the proper type 
-PASS WorkerGlobalScope interface: existence and properties of interface object 
+PASS XPathResult interface: existence and properties of interface object 
+PASS XPathResult interface object length 
+PASS XPathResult interface object name 
+PASS XPathResult interface: existence and properties of interface prototype object 
+PASS XPathResult interface: existence and properties of interface prototype object's "constructor" property 
+PASS XPathResult interface: existence and properties of interface prototype object's @@unscopables property 
+PASS XPathResult interface: constant ANY_TYPE on interface object 
+PASS XPathResult interface: constant ANY_TYPE on interface prototype object 
+PASS XPathResult interface: constant NUMBER_TYPE on interface object 
+PASS XPathResult interface: constant NUMBER_TYPE on interface prototype object 
+PASS XPathResult interface: constant STRING_TYPE on interface object 
+PASS XPathResult interface: constant STRING_TYPE on interface prototype object 
+PASS XPathResult interface: constant BOOLEAN_TYPE on interface object 
+PASS XPathResult interface: constant BOOLEAN_TYPE on interface prototype object 
+PASS XPathResult interface: constant UNORDERED_NODE_ITERATOR_TYPE on interface object 
+PASS XPathResult interface: constant UNORDERED_NODE_ITERATOR_TYPE on interface prototype object 
+PASS XPathResult interface: constant ORDERED_NODE_ITERATOR_TYPE on interface object 
+PASS XPathResult interface: constant ORDERED_NODE_ITERATOR_TYPE on interface prototype object 
+PASS XPathResult interface: constant UNORDERED_NODE_SNAPSHOT_TYPE on interface object 
+PASS XPathResult interface: constant UNORDERED_NODE_SNAPSHOT_TYPE on interface prototype object 
+PASS XPathResult interface: constant ORDERED_NODE_SNAPSHOT_TYPE on interface object 
+PASS XPathResult interface: constant ORDERED_NODE_SNAPSHOT_TYPE on interface prototype object 
+PASS XPathResult interface: constant ANY_UNORDERED_NODE_TYPE on interface object 
+PASS XPathResult interface: constant ANY_UNORDERED_NODE_TYPE on interface prototype object 
+PASS XPathResult interface: constant FIRST_ORDERED_NODE_TYPE on interface object 
+PASS XPathResult interface: constant FIRST_ORDERED_NODE_TYPE on interface prototype object 
+PASS XPathResult interface: attribute resultType 
+PASS XPathResult interface: attribute numberValue 
+PASS XPathResult interface: attribute stringValue 
+PASS XPathResult interface: attribute booleanValue 
+PASS XPathResult interface: attribute singleNodeValue 
+PASS XPathResult interface: attribute invalidIteratorState 
+PASS XPathResult interface: attribute snapshotLength 
+PASS XPathResult interface: operation iterateNext() 
+FAIL XPathResult interface: operation snapshotItem(unsigned long) assert_equals: property has wrong .length expected 1 but got 0
+PASS XPathExpression interface: existence and properties of interface object 
+PASS XPathExpression interface object length 
+PASS XPathExpression interface object name 
+PASS XPathExpression interface: existence and properties of interface prototype object 
+PASS XPathExpression interface: existence and properties of interface prototype object's "constructor" property 
+PASS XPathExpression interface: existence and properties of interface prototype object's @@unscopables property 
+FAIL XPathExpression interface: operation evaluate(Node, unsigned short, XPathResult) assert_equals: property has wrong .length expected 1 but got 0
+PASS XPathNSResolver interface: existence and properties of interface object 
+PASS XPathNSResolver interface: existence and properties of interface prototype object 
+PASS XPathNSResolver interface: existence and properties of interface prototype object's "constructor" property 
+PASS XPathNSResolver interface: existence and properties of interface prototype object's @@unscopables property 
+PASS XPathNSResolver interface: operation lookupNamespaceURI(DOMString) 
+PASS XPathEvaluator interface: existence and properties of interface object 
+PASS XPathEvaluator interface object length 
+PASS XPathEvaluator interface object name 
+PASS XPathEvaluator interface: existence and properties of interface prototype object 
+PASS XPathEvaluator interface: existence and properties of interface prototype object's "constructor" property 
+PASS XPathEvaluator interface: existence and properties of interface prototype object's @@unscopables property 
+FAIL XPathEvaluator interface: operation createExpression(DOMString, XPathNSResolver) assert_equals: property has wrong .length expected 1 but got 0
+FAIL XPathEvaluator interface: operation createNSResolver(Node) assert_equals: property has wrong .length expected 1 but got 0
+FAIL XPathEvaluator interface: operation evaluate(DOMString, Node, XPathNSResolver, unsigned short, XPathResult) assert_equals: property has wrong .length expected 2 but got 0
+PASS Window interface: attribute event 
 
index 14c2ed9..8eff994 100644 (file)
@@ -11,16 +11,12 @@ FAIL XMLSerializer must be primary interface of new XMLSerializer() assert_equal
 FAIL Stringification of new XMLSerializer() assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: XMLSerializer"
 FAIL XMLSerializer interface: new XMLSerializer() must not have property "serializeToString" assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: XMLSerializer"
 PASS Node interface: existence and properties of interface object 
-PASS Document interface: existence and properties of interface object 
-PASS DocumentType interface: existence and properties of interface object 
 PASS DocumentFragment interface: existence and properties of interface object 
 PASS ShadowRoot interface: existence and properties of interface object 
 PASS Element interface: existence and properties of interface object 
 FAIL Element interface: document.createElement("div") must not have property "outerHTML" assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: document"
 FAIL Element interface: document.createElement("div") must not have property "insertAdjacentHTML" assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: document"
 FAIL Element interface: document.createElement("div") must not have property "innerHTML" assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: document"
-PASS CharacterData interface: existence and properties of interface object 
-PASS Text interface: existence and properties of interface object 
 PASS AbstractRange interface: existence and properties of interface object 
 PASS Range interface: existence and properties of interface object 
 FAIL Range interface: new Range() must not have property "createContextualFragment" assert_equals: Unexpected exception when evaluating object expected null but got object "ReferenceError: Can't find variable: Range"
index bad30ad..036eedd 100644 (file)
@@ -1,4 +1,3 @@
-CONSOLE MESSAGE: line 482: callback not yet supported
 Blocked access to external URL http://foo/
 CONSOLE MESSAGE: EventSource cannot load http://foo/ due to access control checks.
 EventSource IDL tests
index 1ddfa5f..72e77d0 100644 (file)
@@ -12,12 +12,7 @@ PASS Headers interface: operation delete(ByteString)
 PASS Headers interface: operation get(ByteString) 
 PASS Headers interface: operation has(ByteString) 
 PASS Headers interface: operation set(ByteString, ByteString) 
-PASS Testing Symbol.iterator property of iterable interface Headers 
-PASS Testing pair iterable interface Headers 
-PASS Headers interface: operation entries() 
-PASS Headers interface: operation keys() 
-PASS Headers interface: operation values() 
-PASS Headers interface: operation forEach(function, any) 
+PASS Headers interface: iterable<ByteString, ByteString> 
 PASS Headers must be primary interface of new Headers() 
 PASS Stringification of new Headers() 
 PASS Headers interface: new Headers() must inherit property "append(ByteString, ByteString)" with the proper type 
@@ -30,11 +25,6 @@ PASS Headers interface: new Headers() must inherit property "has(ByteString)" wi
 PASS Headers interface: calling has(ByteString) on new Headers() with too few arguments must throw TypeError 
 PASS Headers interface: new Headers() must inherit property "set(ByteString, ByteString)" with the proper type 
 PASS Headers interface: calling set(ByteString, ByteString) on new Headers() with too few arguments must throw TypeError 
-PASS Headers interface: new Headers() must inherit property "entries()" with the proper type 
-PASS Headers interface: new Headers() must inherit property "keys()" with the proper type 
-PASS Headers interface: new Headers() must inherit property "values()" with the proper type 
-PASS Headers interface: new Headers() must inherit property "forEach(function, any)" with the proper type 
-PASS Headers interface: calling forEach(function, any) on new Headers() with too few arguments must throw TypeError 
 PASS Request interface: existence and properties of interface object 
 PASS Request interface object length 
 PASS Request interface object name 
index a444cf7..7a449ac 100644 (file)
@@ -12,12 +12,7 @@ PASS Headers interface: operation delete(ByteString)
 PASS Headers interface: operation get(ByteString) 
 PASS Headers interface: operation has(ByteString) 
 PASS Headers interface: operation set(ByteString, ByteString) 
-PASS Testing Symbol.iterator property of iterable interface Headers 
-PASS Testing pair iterable interface Headers 
-PASS Headers interface: operation entries() 
-PASS Headers interface: operation keys() 
-PASS Headers interface: operation values() 
-PASS Headers interface: operation forEach(function, any) 
+PASS Headers interface: iterable<ByteString, ByteString> 
 PASS Headers must be primary interface of new Headers() 
 PASS Stringification of new Headers() 
 PASS Headers interface: new Headers() must inherit property "append(ByteString, ByteString)" with the proper type 
@@ -30,11 +25,6 @@ PASS Headers interface: new Headers() must inherit property "has(ByteString)" wi
 PASS Headers interface: calling has(ByteString) on new Headers() with too few arguments must throw TypeError 
 PASS Headers interface: new Headers() must inherit property "set(ByteString, ByteString)" with the proper type 
 PASS Headers interface: calling set(ByteString, ByteString) on new Headers() with too few arguments must throw TypeError 
-PASS Headers interface: new Headers() must inherit property "entries()" with the proper type 
-PASS Headers interface: new Headers() must inherit property "keys()" with the proper type 
-PASS Headers interface: new Headers() must inherit property "values()" with the proper type 
-PASS Headers interface: new Headers() must inherit property "forEach(function, any)" with the proper type 
-PASS Headers interface: calling forEach(function, any) on new Headers() with too few arguments must throw TypeError 
 PASS Request interface: existence and properties of interface object 
 PASS Request interface object length 
 PASS Request interface object name 
@@ -134,19 +124,8 @@ PASS Response interface: new Response() must inherit property "blob()" with the
 PASS Response interface: new Response() must inherit property "formData()" with the proper type 
 PASS Response interface: new Response() must inherit property "json()" with the proper type 
 PASS Response interface: new Response() must inherit property "text()" with the proper type 
-PASS HTMLElement interface: existence and properties of interface object 
-PASS HTMLBodyElement interface: existence and properties of interface object 
 PASS Window interface: existence and properties of interface object 
 PASS WorkerGlobalScope interface: operation fetch(RequestInfo, RequestInit) 
 PASS WorkerGlobalScope interface: self must inherit property "fetch(RequestInfo, RequestInit)" with the proper type 
 PASS WorkerGlobalScope interface: calling fetch(RequestInfo, RequestInit) on self with too few arguments must throw TypeError 
-PASS HTMLFrameSetElement interface: existence and properties of interface object 
-PASS Node interface: existence and properties of interface object 
-PASS Document interface: existence and properties of interface object 
-PASS DocumentType interface: existence and properties of interface object 
-PASS DocumentFragment interface: existence and properties of interface object 
-PASS ShadowRoot interface: existence and properties of interface object 
-PASS Element interface: existence and properties of interface object 
-PASS CharacterData interface: existence and properties of interface object 
-PASS Text interface: existence and properties of interface object 
 
index a7ea327..d2f3021 100644 (file)
@@ -1,30 +1,3 @@
 
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "Got an error before parsing any named definition: Unrecognised tokens, line 1 (tokens: "{\"error\": {\"message\"")
-[
-    {
-        "type": "{",
-        "value": "{",
-        "trivia": ""
-    },
-    {
-        "type": "string",
-        "value": "\"error\"",
-        "trivia": ""
-    },
-    {
-        "type": ":",
-        "value": ":",
-        "trivia": ""
-    },
-    {
-        "type": "{",
-        "value": "{",
-        "trivia": " "
-    },
-    {
-        "type": "string",
-        "value": "\"message\"",
-        "trivia": ""
-    }
-]"
+FAIL idl_test setup promise_test: Unhandled rejection with value: object "Error fetching /interfaces/cors-rfc1918.idl."
 
index a7ea327..d2f3021 100644 (file)
@@ -1,30 +1,3 @@
 
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "Got an error before parsing any named definition: Unrecognised tokens, line 1 (tokens: "{\"error\": {\"message\"")
-[
-    {
-        "type": "{",
-        "value": "{",
-        "trivia": ""
-    },
-    {
-        "type": "string",
-        "value": "\"error\"",
-        "trivia": ""
-    },
-    {
-        "type": ":",
-        "value": ":",
-        "trivia": ""
-    },
-    {
-        "type": "{",
-        "value": "{",
-        "trivia": " "
-    },
-    {
-        "type": "string",
-        "value": "\"message\"",
-        "trivia": ""
-    }
-]"
+FAIL idl_test setup promise_test: Unhandled rejection with value: object "Error fetching /interfaces/cors-rfc1918.idl."
 
index 42b5abd..c490d05 100644 (file)
@@ -17,7 +17,7 @@ PASS Stringification of window.performance
 PASS Performance interface: window.performance must inherit property "now()" with the proper type 
 FAIL Performance interface: window.performance must inherit property "timeOrigin" with the proper type assert_inherits: property "timeOrigin" not found in prototype chain
 FAIL Performance interface: window.performance must inherit property "toJSON()" with the proper type assert_inherits: property "toJSON" not found in prototype chain
-FAIL Test default toJSON operation of Performance memberHolderObject.toJSON is not a function. (In 'memberHolderObject.toJSON()', 'memberHolderObject.toJSON' is undefined)
+FAIL Performance interface: default toJSON operation on window.performance memberHolderObject.toJSON is not a function. (In 'memberHolderObject.toJSON()', 'memberHolderObject.toJSON' is undefined)
 PASS Window interface: attribute performance 
 PASS Window interface: window must inherit property "performance" with the proper type 
 PASS WorkerGlobalScope interface: existence and properties of interface object 
index 00b17fe..6681c28 100644 (file)
@@ -119,6 +119,11 @@ PASS onfocus: the default value must be null
 PASS onfocus: the content attribute must be compiled into a function as the corresponding property 
 PASS onfocus: the content attribute must execute when an event is dispatched 
 PASS onfocus: dispatching an Event at a <meta> element must trigger element.onfocus 
+FAIL onformdata: must be on the appropriate locations for GlobalEventHandlers assert_true: Window has an own property named "onformdata" expected true got false
+FAIL onformdata: the default value must be null assert_equals: The default value of the property is null for a Window instance expected (object) null but got (undefined) undefined
+FAIL onformdata: the content attribute must be compiled into a function as the corresponding property assert_equals: The onformdata property must be a function expected "function" but got "undefined"
+FAIL onformdata: the content attribute must execute when an event is dispatched assert_true: Dispatching an event must run the code expected true got undefined
+PASS onformdata: dispatching an Event at a <meta> element must trigger element.onformdata 
 PASS oninput: must be on the appropriate locations for GlobalEventHandlers 
 PASS oninput: the default value must be null 
 PASS oninput: the content attribute must be compiled into a function as the corresponding property 
@@ -159,11 +164,6 @@ PASS onloadedmetadata: the default value must be null
 PASS onloadedmetadata: the content attribute must be compiled into a function as the corresponding property 
 PASS onloadedmetadata: the content attribute must execute when an event is dispatched 
 PASS onloadedmetadata: dispatching an Event at a <meta> element must trigger element.onloadedmetadata 
-FAIL onloadend: must be on the appropriate locations for GlobalEventHandlers assert_true: Window has an own property named "onloadend" expected true got false
-FAIL onloadend: the default value must be null assert_equals: The default value of the property is null for a Window instance expected (object) null but got (undefined) undefined
-FAIL onloadend: the content attribute must be compiled into a function as the corresponding property assert_equals: The onloadend property must be a function expected "function" but got "undefined"
-FAIL onloadend: the content attribute must execute when an event is dispatched assert_true: Dispatching an event must run the code expected true got undefined
-PASS onloadend: dispatching an Event at a <meta> element must trigger element.onloadend 
 PASS onloadstart: must be on the appropriate locations for GlobalEventHandlers 
 PASS onloadstart: the default value must be null 
 PASS onloadstart: the content attribute must be compiled into a function as the corresponding property 
diff --git a/LayoutTests/imported/w3c/web-platform-tests/interfaces/SVG.idl b/LayoutTests/imported/w3c/web-platform-tests/interfaces/SVG.idl
new file mode 100644 (file)
index 0000000..97871c2
--- /dev/null
@@ -0,0 +1,679 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content was automatically extracted by Reffy into reffy-reports
+// (https://github.com/tidoust/reffy-reports)
+// Source: Scalable Vector Graphics (SVG) 2 (https://svgwg.org/svg2-draft/)
+
+[Exposed=Window]
+interface SVGElement : Element {
+
+  [SameObject] readonly attribute SVGAnimatedString className;
+
+  readonly attribute SVGSVGElement? ownerSVGElement;
+  readonly attribute SVGElement? viewportElement;
+};
+
+SVGElement includes GlobalEventHandlers;
+SVGElement includes DocumentAndElementEventHandlers;
+SVGElement includes SVGElementInstance;
+SVGElement includes HTMLOrSVGElement;
+
+dictionary SVGBoundingBoxOptions {
+  boolean fill = true;
+  boolean stroke = false;
+  boolean markers = false;
+  boolean clipped = false;
+};
+
+interface SVGGraphicsElement : SVGElement {
+  [SameObject] readonly attribute SVGAnimatedTransformList transform;
+
+  DOMRect getBBox(optional SVGBoundingBoxOptions options);
+  DOMMatrix? getCTM();
+  DOMMatrix? getScreenCTM();
+};
+
+SVGGraphicsElement includes SVGTests;
+
+[Exposed=Window]
+interface SVGGeometryElement : SVGGraphicsElement {
+  [SameObject] readonly attribute SVGAnimatedNumber pathLength;
+
+  boolean isPointInFill(optional DOMPointInit point);
+  boolean isPointInStroke(optional DOMPointInit point);
+  float getTotalLength();
+  DOMPoint getPointAtLength(float distance);
+};
+
+[Exposed=Window]
+interface SVGNumber {
+  attribute float value;
+};
+
+[Exposed=Window]
+interface SVGLength {
+
+  // Length Unit Types
+  const unsigned short SVG_LENGTHTYPE_UNKNOWN = 0;
+  const unsigned short SVG_LENGTHTYPE_NUMBER = 1;
+  const unsigned short SVG_LENGTHTYPE_PERCENTAGE = 2;
+  const unsigned short SVG_LENGTHTYPE_EMS = 3;
+  const unsigned short SVG_LENGTHTYPE_EXS = 4;
+  const unsigned short SVG_LENGTHTYPE_PX = 5;
+  const unsigned short SVG_LENGTHTYPE_CM = 6;
+  const unsigned short SVG_LENGTHTYPE_MM = 7;
+  const unsigned short SVG_LENGTHTYPE_IN = 8;
+  const unsigned short SVG_LENGTHTYPE_PT = 9;
+  const unsigned short SVG_LENGTHTYPE_PC = 10;
+
+  readonly attribute unsigned short unitType;
+           attribute float value;
+           attribute float valueInSpecifiedUnits;
+           attribute DOMString valueAsString;
+
+  void newValueSpecifiedUnits(unsigned short unitType, float valueInSpecifiedUnits);
+  void convertToSpecifiedUnits(unsigned short unitType);
+};
+
+[Exposed=Window]
+interface SVGAngle {
+
+  // Angle Unit Types
+  const unsigned short SVG_ANGLETYPE_UNKNOWN = 0;
+  const unsigned short SVG_ANGLETYPE_UNSPECIFIED = 1;
+  const unsigned short SVG_ANGLETYPE_DEG = 2;
+  const unsigned short SVG_ANGLETYPE_RAD = 3;
+  const unsigned short SVG_ANGLETYPE_GRAD = 4;
+
+  readonly attribute unsigned short unitType;
+           attribute float value;
+           attribute float valueInSpecifiedUnits;
+           attribute DOMString valueAsString;
+
+  void newValueSpecifiedUnits(unsigned short unitType, float valueInSpecifiedUnits);
+  void convertToSpecifiedUnits(unsigned short unitType);
+};
+
+[Exposed=Window]
+interface SVGNumberList {
+
+  readonly attribute unsigned long length;
+  readonly attribute unsigned long numberOfItems;
+
+  void clear();
+  SVGNumber initialize(SVGNumber newItem);
+  getter SVGNumber getItem(unsigned long index);
+  SVGNumber insertItemBefore(SVGNumber newItem, unsigned long index);
+  SVGNumber replaceItem(SVGNumber newItem, unsigned long index);
+  SVGNumber removeItem(unsigned long index);
+  SVGNumber appendItem(SVGNumber newItem);
+  setter void (unsigned long index, SVGNumber newItem);
+};
+
+[Exposed=Window]
+interface SVGLengthList {
+
+  readonly attribute unsigned long length;
+  readonly attribute unsigned long numberOfItems;
+
+  void clear();
+  SVGLength initialize(SVGLength newItem);
+  getter SVGLength getItem(unsigned long index);
+  SVGLength insertItemBefore(SVGLength newItem, unsigned long index);
+  SVGLength replaceItem(SVGLength newItem, unsigned long index);
+  SVGLength removeItem(unsigned long index);
+  SVGLength appendItem(SVGLength newItem);
+  setter void (unsigned long index, SVGLength newItem);
+};
+
+[Exposed=Window]
+interface SVGStringList {
+
+  readonly attribute unsigned long length;
+  readonly attribute unsigned long numberOfItems;
+
+  void clear();
+  DOMString initialize(DOMString newItem);
+  getter DOMString getItem(unsigned long index);
+  DOMString insertItemBefore(DOMString newItem, unsigned long index);
+  DOMString replaceItem(DOMString newItem, unsigned long index);
+  DOMString removeItem(unsigned long index);
+  DOMString appendItem(DOMString newItem);
+  setter void (unsigned long index, DOMString newItem);
+};
+
+[Exposed=Window]
+interface SVGAnimatedBoolean {
+           attribute boolean baseVal;
+  readonly attribute boolean animVal;
+};
+
+[Exposed=Window]
+interface SVGAnimatedEnumeration {
+           attribute unsigned short baseVal;
+  readonly attribute unsigned short animVal;
+};
+
+[Exposed=Window]
+interface SVGAnimatedInteger {
+           attribute long baseVal;
+  readonly attribute long animVal;
+};
+
+[Exposed=Window]
+interface SVGAnimatedNumber {
+           attribute float baseVal;
+  readonly attribute float animVal;
+};
+
+[Exposed=Window]
+interface SVGAnimatedLength {
+  [SameObject] readonly attribute SVGLength baseVal;
+  [SameObject] readonly attribute SVGLength animVal;
+};
+
+[Exposed=Window]
+interface SVGAnimatedAngle {
+  [SameObject] readonly attribute SVGAngle baseVal;
+  [SameObject] readonly attribute SVGAngle animVal;
+};
+
+[Exposed=Window]
+interface SVGAnimatedString {
+           attribute DOMString baseVal;
+  readonly attribute DOMString animVal;
+};
+
+[Exposed=Window]
+interface SVGAnimatedRect {
+  [SameObject] readonly attribute DOMRect baseVal;
+  [SameObject] readonly attribute DOMRectReadOnly animVal;
+};
+
+[Exposed=Window]
+interface SVGAnimatedNumberList {
+  [SameObject] readonly attribute SVGNumberList baseVal;
+  [SameObject] readonly attribute SVGNumberList animVal;
+};
+
+[Exposed=Window]
+interface SVGAnimatedLengthList {
+  [SameObject] readonly attribute SVGLengthList baseVal;
+  [SameObject] readonly attribute SVGLengthList animVal;
+};
+
+[Exposed=Window]
+interface SVGUnitTypes {
+  // Unit Types
+  const unsigned short SVG_UNIT_TYPE_UNKNOWN = 0;
+  const unsigned short SVG_UNIT_TYPE_USERSPACEONUSE = 1;
+  const unsigned short SVG_UNIT_TYPE_OBJECTBOUNDINGBOX = 2;
+};
+
+interface mixin SVGTests {
+  [SameObject] readonly attribute SVGStringList requiredExtensions;
+  [SameObject] readonly attribute SVGStringList systemLanguage;
+};
+
+interface mixin SVGFitToViewBox {
+  [SameObject] readonly attribute SVGAnimatedRect viewBox;
+  [SameObject] readonly attribute SVGAnimatedPreserveAspectRatio preserveAspectRatio;
+};
+
+interface mixin SVGURIReference {
+  [SameObject] readonly attribute SVGAnimatedString href;
+};
+
+partial interface Document {
+  readonly attribute SVGSVGElement? rootElement;
+};
+
+[Exposed=Window]
+interface SVGSVGElement : SVGGraphicsElement {
+
+  [SameObject] readonly attribute SVGAnimatedLength x;
+  [SameObject] readonly attribute SVGAnimatedLength y;
+  [SameObject] readonly attribute SVGAnimatedLength width;
+  [SameObject] readonly attribute SVGAnimatedLength height;
+
+  attribute float currentScale;
+  [SameObject] readonly attribute DOMPointReadOnly currentTranslate;
+
+  NodeList getIntersectionList(DOMRectReadOnly rect, SVGElement? referenceElement);
+  NodeList getEnclosureList(DOMRectReadOnly rect, SVGElement? referenceElement);
+  boolean checkIntersection(SVGElement element, DOMRectReadOnly rect);
+  boolean checkEnclosure(SVGElement element, DOMRectReadOnly rect);
+
+  void deselectAll();
+
+  SVGNumber createSVGNumber();
+  SVGLength createSVGLength();
+  SVGAngle createSVGAngle();
+  DOMPoint createSVGPoint();
+  DOMMatrix createSVGMatrix();
+  DOMRect createSVGRect();
+  SVGTransform createSVGTransform();
+  SVGTransform createSVGTransformFromMatrix(optional DOMMatrix2DInit matrix);
+
+  Element getElementById(DOMString elementId);
+
+  // Deprecated methods that have no effect when called,
+  // but which are kept for compatibility reasons.
+  unsigned long suspendRedraw(unsigned long maxWaitMilliseconds);
+  void unsuspendRedraw(unsigned long suspendHandleID);
+  void unsuspendRedrawAll();
+  void forceRedraw();
+};
+
+SVGSVGElement includes SVGFitToViewBox;
+SVGSVGElement includes WindowEventHandlers;
+
+[Exposed=Window]
+interface SVGGElement : SVGGraphicsElement {
+};
+
+[Exposed=Window]
+interface SVGDefsElement : SVGGraphicsElement {
+};
+
+[Exposed=Window]
+interface SVGDescElement : SVGElement {
+};
+
+[Exposed=Window]
+interface SVGMetadataElement : SVGElement {
+};
+
+[Exposed=Window]
+interface SVGTitleElement : SVGElement {
+};
+
+[Exposed=Window]
+interface SVGSymbolElement : SVGGraphicsElement {
+};
+
+SVGSymbolElement includes SVGFitToViewBox;
+
+[Exposed=Window]
+interface SVGUseElement : SVGGraphicsElement {
+  [SameObject] readonly attribute SVGAnimatedLength x;
+  [SameObject] readonly attribute SVGAnimatedLength y;
+  [SameObject] readonly attribute SVGAnimatedLength width;
+  [SameObject] readonly attribute SVGAnimatedLength height;
+  [SameObject] readonly attribute SVGElement? instanceRoot;
+  [SameObject] readonly attribute SVGElement? animatedInstanceRoot;
+};
+
+SVGUseElement includes SVGURIReference;
+
+[Exposed=Window]
+interface SVGUseElementShadowRoot : ShadowRoot {
+};
+
+interface mixin SVGElementInstance {
+  [SameObject] readonly attribute SVGElement? correspondingElement;
+  [SameObject] readonly attribute SVGUseElement? correspondingUseElement;
+};
+
+[Constructor(Animation source, Animatable newTarget), Exposed=Window]
+interface ShadowAnimation : Animation {
+  [SameObject] readonly attribute Animation sourceAnimation;
+};
+
+[Exposed=Window]
+interface SVGSwitchElement : SVGGraphicsElement {
+};
+
+interface mixin GetSVGDocument {
+  Document getSVGDocument();
+};
+
+[Exposed=Window]
+interface SVGStyleElement : SVGElement {
+  attribute DOMString type;
+  attribute DOMString media;
+  attribute DOMString title;
+};
+
+SVGStyleElement includes LinkStyle;
+
+[Exposed=Window]
+interface SVGTransform {
+
+  // Transform Types
+  const unsigned short SVG_TRANSFORM_UNKNOWN = 0;
+  const unsigned short SVG_TRANSFORM_MATRIX = 1;
+  const unsigned short SVG_TRANSFORM_TRANSLATE = 2;
+  const unsigned short SVG_TRANSFORM_SCALE = 3;
+  const unsigned short SVG_TRANSFORM_ROTATE = 4;
+  const unsigned short SVG_TRANSFORM_SKEWX = 5;
+  const unsigned short SVG_TRANSFORM_SKEWY = 6;
+
+  readonly attribute unsigned short type;
+  [SameObject] readonly attribute DOMMatrix matrix;
+  readonly attribute float angle;
+
+  void setMatrix(optional DOMMatrix2DInit matrix);
+  void setTranslate(float tx, float ty);
+  void setScale(float sx, float sy);
+  void setRotate(float angle, float cx, float cy);
+  void setSkewX(float angle);
+  void setSkewY(float angle);
+};
+
+[Exposed=Window]
+interface SVGTransformList {
+
+  readonly attribute unsigned long length;
+  readonly attribute unsigned long numberOfItems;
+
+  void clear();
+  SVGTransform initialize(SVGTransform newItem);
+  getter SVGTransform getItem(unsigned long index);
+  SVGTransform insertItemBefore(SVGTransform newItem, unsigned long index);
+  SVGTransform replaceItem(SVGTransform newItem, unsigned long index);
+  SVGTransform removeItem(unsigned long index);
+  SVGTransform appendItem(SVGTransform newItem);
+  setter void (unsigned long index, SVGTransform newItem);
+
+  // Additional methods not common to other list interfaces.
+  SVGTransform createSVGTransformFromMatrix(optional DOMMatrix2DInit matrix);
+  SVGTransform? consolidate();
+};
+
+[Exposed=Window]
+interface SVGAnimatedTransformList {
+  [SameObject] readonly attribute SVGTransformList baseVal;
+  [SameObject] readonly attribute SVGTransformList animVal;
+};
+
+[Exposed=Window]
+interface SVGPreserveAspectRatio {
+
+  // Alignment Types
+  const unsigned short SVG_PRESERVEASPECTRATIO_UNKNOWN = 0;
+  const unsigned short SVG_PRESERVEASPECTRATIO_NONE = 1;
+  const unsigned short SVG_PRESERVEASPECTRATIO_XMINYMIN = 2;
+  const unsigned short SVG_PRESERVEASPECTRATIO_XMIDYMIN = 3;
+  const unsigned short SVG_PRESERVEASPECTRATIO_XMAXYMIN = 4;
+  const unsigned short SVG_PRESERVEASPECTRATIO_XMINYMID = 5;
+  const unsigned short SVG_PRESERVEASPECTRATIO_XMIDYMID = 6;
+  const unsigned short SVG_PRESERVEASPECTRATIO_XMAXYMID = 7;
+  const unsigned short SVG_PRESERVEASPECTRATIO_XMINYMAX = 8;
+  const unsigned short SVG_PRESERVEASPECTRATIO_XMIDYMAX = 9;
+  const unsigned short SVG_PRESERVEASPECTRATIO_XMAXYMAX = 10;
+
+  // Meet-or-slice Types
+  const unsigned short SVG_MEETORSLICE_UNKNOWN = 0;
+  const unsigned short SVG_MEETORSLICE_MEET = 1;
+  const unsigned short SVG_MEETORSLICE_SLICE = 2;
+
+  attribute unsigned short align;
+  attribute unsigned short meetOrSlice;
+};
+
+[Exposed=Window]
+interface SVGAnimatedPreserveAspectRatio {
+  [SameObject] readonly attribute SVGPreserveAspectRatio baseVal;
+  [SameObject] readonly attribute SVGPreserveAspectRatio animVal;
+};
+
+[Exposed=Window]
+interface SVGPathElement : SVGGeometryElement {
+};
+
+[Exposed=Window]
+interface SVGRectElement : SVGGeometryElement {
+  [SameObject] readonly attribute SVGAnimatedLength x;
+  [SameObject] readonly attribute SVGAnimatedLength y;
+  [SameObject] readonly attribute SVGAnimatedLength width;
+  [SameObject] readonly attribute SVGAnimatedLength height;
+  [SameObject] readonly attribute SVGAnimatedLength rx;
+  [SameObject] readonly attribute SVGAnimatedLength ry;
+};
+
+[Exposed=Window]
+interface SVGCircleElement : SVGGeometryElement {
+  [SameObject] readonly attribute SVGAnimatedLength cx;
+  [SameObject] readonly attribute SVGAnimatedLength cy;
+  [SameObject] readonly attribute SVGAnimatedLength r;
+};
+
+[Exposed=Window]
+interface SVGEllipseElement : SVGGeometryElement {
+  [SameObject] readonly attribute SVGAnimatedLength cx;
+  [SameObject] readonly attribute SVGAnimatedLength cy;
+  [SameObject] readonly attribute SVGAnimatedLength rx;
+  [SameObject] readonly attribute SVGAnimatedLength ry;
+};
+
+[Exposed=Window]
+interface SVGLineElement : SVGGeometryElement {
+  [SameObject] readonly attribute SVGAnimatedLength x1;
+  [SameObject] readonly attribute SVGAnimatedLength y1;
+  [SameObject] readonly attribute SVGAnimatedLength x2;
+  [SameObject] readonly attribute SVGAnimatedLength y2;
+};
+
+interface mixin SVGAnimatedPoints {
+  [SameObject] readonly attribute SVGPointList points;
+  [SameObject] readonly attribute SVGPointList animatedPoints;
+};
+
+[Exposed=Window]
+interface SVGPointList {
+
+  readonly attribute unsigned long length;
+  readonly attribute unsigned long numberOfItems;
+
+  void clear();
+  DOMPoint initialize(DOMPoint newItem);
+  getter DOMPoint getItem(unsigned long index);
+  DOMPoint insertItemBefore(DOMPoint newItem, unsigned long index);
+  DOMPoint replaceItem(DOMPoint newItem, unsigned long index);
+  DOMPoint removeItem(unsigned long index);
+  DOMPoint appendItem(DOMPoint newItem);
+  setter void (unsigned long index, DOMPoint newItem);
+};
+
+[Exposed=Window]
+interface SVGPolylineElement : SVGGeometryElement {
+};
+
+SVGPolylineElement includes SVGAnimatedPoints;
+
+[Exposed=Window]
+interface SVGPolygonElement : SVGGeometryElement {
+};
+
+SVGPolygonElement includes SVGAnimatedPoints;
+
+[Exposed=Window]
+interface SVGTextContentElement : SVGGraphicsElement {
+
+  // lengthAdjust Types
+  const unsigned short LENGTHADJUST_UNKNOWN = 0;
+  const unsigned short LENGTHADJUST_SPACING = 1;
+  const unsigned short LENGTHADJUST_SPACINGANDGLYPHS = 2;
+
+  [SameObject] readonly attribute SVGAnimatedLength textLength;
+  [SameObject] readonly attribute SVGAnimatedEnumeration lengthAdjust;
+
+  long getNumberOfChars();
+  float getComputedTextLength();
+  float getSubStringLength(unsigned long charnum, unsigned long nchars);
+  DOMPoint getStartPositionOfChar(unsigned long charnum);
+  DOMPoint getEndPositionOfChar(unsigned long charnum);
+  DOMRect getExtentOfChar(unsigned long charnum);
+  float getRotationOfChar(unsigned long charnum);
+  long getCharNumAtPosition(optional DOMPointInit point);
+  void selectSubString(unsigned long charnum, unsigned long nchars);
+};
+
+[Exposed=Window]
+interface SVGTextPositioningElement : SVGTextContentElement {
+  [SameObject] readonly attribute SVGAnimatedLengthList x;
+  [SameObject] readonly attribute SVGAnimatedLengthList y;
+  [SameObject] readonly attribute SVGAnimatedLengthList dx;
+  [SameObject] readonly attribute SVGAnimatedLengthList dy;
+  [SameObject] readonly attribute SVGAnimatedNumberList rotate;
+};
+
+[Exposed=Window]
+interface SVGTextElement : SVGTextPositioningElement {
+};
+
+[Exposed=Window]
+interface SVGTSpanElement : SVGTextPositioningElement {
+};
+
+[Exposed=Window]
+interface SVGTextPathElement : SVGTextContentElement {
+
+  // textPath Method Types
+  const unsigned short TEXTPATH_METHODTYPE_UNKNOWN = 0;
+  const unsigned short TEXTPATH_METHODTYPE_ALIGN = 1;
+  const unsigned short TEXTPATH_METHODTYPE_STRETCH = 2;
+
+  // textPath Spacing Types
+  const unsigned short TEXTPATH_SPACINGTYPE_UNKNOWN = 0;
+  const unsigned short TEXTPATH_SPACINGTYPE_AUTO = 1;
+  const unsigned short TEXTPATH_SPACINGTYPE_EXACT = 2;
+
+  [SameObject] readonly attribute SVGAnimatedLength startOffset;
+  [SameObject] readonly attribute SVGAnimatedEnumeration method;
+  [SameObject] readonly attribute SVGAnimatedEnumeration spacing;
+};
+
+SVGTextPathElement includes SVGURIReference;
+
+[Exposed=Window]
+interface SVGImageElement : SVGGraphicsElement {
+  [SameObject] readonly attribute SVGAnimatedLength x;
+  [SameObject] readonly attribute SVGAnimatedLength y;
+  [SameObject] readonly attribute SVGAnimatedLength width;
+  [SameObject] readonly attribute SVGAnimatedLength height;
+  [SameObject] readonly attribute SVGAnimatedPreserveAspectRatio preserveAspectRatio;
+  attribute DOMString? crossOrigin;
+};
+
+SVGImageElement includes SVGURIReference;
+
+[Exposed=Window]
+interface SVGForeignObjectElement : SVGGraphicsElement {
+  [SameObject] readonly attribute SVGAnimatedLength x;
+  [SameObject] readonly attribute SVGAnimatedLength y;
+  [SameObject] readonly attribute SVGAnimatedLength width;
+  [SameObject] readonly attribute SVGAnimatedLength height;
+};
+
+[Exposed=Window]
+interface SVGMarkerElement : SVGElement {
+
+  // Marker Unit Types
+  const unsigned short SVG_MARKERUNITS_UNKNOWN = 0;
+  const unsigned short SVG_MARKERUNITS_USERSPACEONUSE = 1;
+  const unsigned short SVG_MARKERUNITS_STROKEWIDTH = 2;
+
+  // Marker Orientation Types
+  const unsigned short SVG_MARKER_ORIENT_UNKNOWN = 0;
+  const unsigned short SVG_MARKER_ORIENT_AUTO = 1;
+  const unsigned short SVG_MARKER_ORIENT_ANGLE = 2;
+
+  [SameObject] readonly attribute SVGAnimatedLength refX;
+  [SameObject] readonly attribute SVGAnimatedLength refY;
+  [SameObject] readonly attribute SVGAnimatedEnumeration markerUnits;
+  [SameObject] readonly attribute SVGAnimatedLength markerWidth;
+  [SameObject] readonly attribute SVGAnimatedLength markerHeight;
+  [SameObject] readonly attribute SVGAnimatedEnumeration orientType;
+  [SameObject] readonly attribute SVGAnimatedAngle orientAngle;
+  attribute DOMString orient;
+
+  void setOrientToAuto();
+  void setOrientToAngle(SVGAngle angle);
+};
+
+SVGMarkerElement includes SVGFitToViewBox;
+
+[Exposed=Window]
+interface SVGGradientElement : SVGElement {
+
+  // Spread Method Types
+  const unsigned short SVG_SPREADMETHOD_UNKNOWN = 0;
+  const unsigned short SVG_SPREADMETHOD_PAD = 1;
+  const unsigned short SVG_SPREADMETHOD_REFLECT = 2;
+  const unsigned short SVG_SPREADMETHOD_REPEAT = 3;
+
+  [SameObject] readonly attribute SVGAnimatedEnumeration gradientUnits;
+  [SameObject] readonly attribute SVGAnimatedTransformList gradientTransform;
+  [SameObject] readonly attribute SVGAnimatedEnumeration spreadMethod;
+};
+
+SVGGradientElement includes SVGURIReference;
+
+[Exposed=Window]
+interface SVGLinearGradientElement : SVGGradientElement {
+  [SameObject] readonly attribute SVGAnimatedLength x1;
+  [SameObject] readonly attribute SVGAnimatedLength y1;
+  [SameObject] readonly attribute SVGAnimatedLength x2;
+  [SameObject] readonly attribute SVGAnimatedLength y2;
+};
+
+[Exposed=Window]
+interface SVGRadialGradientElement : SVGGradientElement {
+  [SameObject] readonly attribute SVGAnimatedLength cx;
+  [SameObject] readonly attribute SVGAnimatedLength cy;
+  [SameObject] readonly attribute SVGAnimatedLength r;
+  [SameObject] readonly attribute SVGAnimatedLength fx;
+  [SameObject] readonly attribute SVGAnimatedLength fy;
+  [SameObject] readonly attribute SVGAnimatedLength fr;
+};
+
+[Exposed=Window]
+interface SVGStopElement : SVGElement {
+  [SameObject] readonly attribute SVGAnimatedNumber offset;
+};
+
+[Exposed=Window]
+interface SVGPatternElement : SVGElement {
+  [SameObject] readonly attribute SVGAnimatedEnumeration patternUnits;
+  [SameObject] readonly attribute SVGAnimatedEnumeration patternContentUnits;
+  [SameObject] readonly attribute SVGAnimatedTransformList patternTransform;
+  [SameObject] readonly attribute SVGAnimatedLength x;
+  [SameObject] readonly attribute SVGAnimatedLength y;
+  [SameObject] readonly attribute SVGAnimatedLength width;
+  [SameObject] readonly attribute SVGAnimatedLength height;
+};
+
+SVGPatternElement includes SVGFitToViewBox;
+SVGPatternElement includes SVGURIReference;
+
+[Exposed=Window]
+interface SVGScriptElement : SVGElement {
+  attribute DOMString type;
+  attribute DOMString? crossOrigin;
+};
+
+SVGScriptElement includes SVGURIReference;
+
+[Exposed=Window]
+interface SVGAElement : SVGGraphicsElement {
+  [SameObject] readonly attribute SVGAnimatedString target;
+  attribute DOMString download;
+  attribute USVString ping;
+  attribute DOMString rel;
+  [SameObject, PutForwards=value] readonly attribute DOMTokenList relList;
+  attribute DOMString hreflang;
+  attribute DOMString type;
+
+  attribute DOMString text;
+
+  attribute DOMString referrerPolicy;
+};
+
+SVGAElement includes SVGURIReference;
+SVGAElement includes HTMLHyperlinkElementUtils;
+
+[Exposed=Window]
+interface SVGViewElement : SVGElement {};
+
+SVGViewElement includes SVGFitToViewBox;
diff --git a/LayoutTests/imported/w3c/web-platform-tests/interfaces/credential-management.idl b/LayoutTests/imported/w3c/web-platform-tests/interfaces/credential-management.idl
new file mode 100644 (file)
index 0000000..da1b9df
--- /dev/null
@@ -0,0 +1,103 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content was automatically extracted by Reffy into reffy-reports
+// (https://github.com/tidoust/reffy-reports)
+// Source: Credential Management Level 1 (https://w3c.github.io/webappsec-credential-management/)
+
+[Exposed=Window, SecureContext]
+interface Credential {
+  readonly attribute USVString id;
+  readonly attribute DOMString type;
+};
+
+[SecureContext]
+interface mixin CredentialUserData {
+  readonly attribute USVString name;
+  readonly attribute USVString iconURL;
+};
+
+partial interface Navigator {
+  [SecureContext, SameObject] readonly attribute CredentialsContainer credentials;
+};
+
+[Exposed=Window, SecureContext]
+interface CredentialsContainer {
+  Promise<Credential?> get(optional CredentialRequestOptions options);
+  Promise<Credential> store(Credential credential);
+  Promise<Credential?> create(optional CredentialCreationOptions options);
+  Promise<void> preventSilentAccess();
+};
+
+dictionary CredentialData {
+  required USVString id;
+};
+
+dictionary CredentialRequestOptions {
+  CredentialMediationRequirement mediation = "optional";
+  AbortSignal signal;
+};
+
+enum CredentialMediationRequirement {
+  "silent",
+  "optional",
+  "required"
+};
+
+dictionary CredentialCreationOptions {
+  AbortSignal signal;
+};
+
+[Constructor(HTMLFormElement form),
+ Constructor(PasswordCredentialData data),
+ Exposed=Window,
+ SecureContext]
+interface PasswordCredential : Credential {
+  readonly attribute USVString password;
+};
+PasswordCredential includes CredentialUserData;
+
+partial dictionary CredentialRequestOptions {
+  boolean password = false;
+};
+
+dictionary PasswordCredentialData : CredentialData {
+  USVString name;
+  USVString iconURL;
+  required USVString origin;
+  required USVString password;
+};
+
+typedef (PasswordCredentialData or HTMLFormElement) PasswordCredentialInit;
+
+partial dictionary CredentialCreationOptions {
+  PasswordCredentialInit password;
+};
+
+[Constructor(FederatedCredentialInit data),
+ Exposed=Window,
+ SecureContext]
+interface FederatedCredential : Credential {
+  readonly attribute USVString provider;
+  readonly attribute DOMString? protocol;
+};
+FederatedCredential includes CredentialUserData;
+
+dictionary FederatedCredentialRequestOptions {
+  sequence<USVString> providers;
+  sequence<DOMString> protocols;
+};
+
+partial dictionary CredentialRequestOptions {
+  FederatedCredentialRequestOptions federated;
+};
+
+dictionary FederatedCredentialInit : CredentialData {
+  USVString name;
+  USVString iconURL;
+  required USVString origin;
+  required USVString provider;
+  DOMString protocol;
+};
+
+partial dictionary CredentialCreationOptions {
+  FederatedCredentialInit federated;
+};
diff --git a/LayoutTests/imported/w3c/web-platform-tests/interfaces/css-properties-values-api.idl b/LayoutTests/imported/w3c/web-platform-tests/interfaces/css-properties-values-api.idl
new file mode 100644 (file)
index 0000000..d8f54b1
--- /dev/null
@@ -0,0 +1,23 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content was automatically extracted by Reffy into reffy-reports
+// (https://github.com/tidoust/reffy-reports)
+// Source: CSS Properties and Values API Level 1 (https://drafts.css-houdini.org/css-properties-values-api-1/)
+
+dictionary PropertyDefinition {
+  required DOMString name;
+           DOMString syntax       = "*";
+  required boolean   inherits;
+           DOMString initialValue;
+};
+
+partial namespace CSS {
+  void registerProperty(PropertyDefinition definition);
+};
+
+[Exposed=Window]
+interface CSSPropertyRule : CSSRule {
+    readonly attribute CSSOMString name;
+    readonly attribute CSSOMString syntax;
+    readonly attribute boolean inherits;
+    readonly attribute CSSOMString? initialValue;
+};
diff --git a/LayoutTests/imported/w3c/web-platform-tests/interfaces/css-pseudo.idl b/LayoutTests/imported/w3c/web-platform-tests/interfaces/css-pseudo.idl
new file mode 100644 (file)
index 0000000..2b557e6
--- /dev/null
@@ -0,0 +1,14 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content was automatically extracted by Reffy into reffy-reports
+// (https://github.com/tidoust/reffy-reports)
+// Source: CSS Pseudo-Elements Module Level 4 (https://drafts.csswg.org/css-pseudo-4/)
+
+[Exposed=Window]
+interface CSSPseudoElement : EventTarget {
+    readonly attribute CSSOMString type;
+    readonly attribute Element element;
+};
+
+partial interface Element {
+  CSSPseudoElement? pseudo(CSSOMString type);
+};
index 4a70cb9..5d30ede 100644 (file)
@@ -1,4 +1,9 @@
-enum ScrollBehavior { "auto", "instant", "smooth" };
+// GENERATED CONTENT - DO NOT EDIT
+// Content was automatically extracted by Reffy into reffy-reports
+// (https://github.com/tidoust/reffy-reports)
+// Source: CSSOM View Module (https://drafts.csswg.org/cssom-view/)
+
+enum ScrollBehavior { "auto", "smooth" };
 
 dictionary ScrollOptions {
     ScrollBehavior behavior = "auto";
@@ -27,16 +32,18 @@ partial interface Window {
     [Replaceable] readonly attribute double pageXOffset;
     [Replaceable] readonly attribute double scrollY;
     [Replaceable] readonly attribute double pageYOffset;
-    void scroll(optional ScrollToOptions options);
+    void scroll(optional ScrollToOptions options = {});
     void scroll(unrestricted double x, unrestricted double y);
-    void scrollTo(optional ScrollToOptions options);
+    void scrollTo(optional ScrollToOptions options = {});
     void scrollTo(unrestricted double x, unrestricted double y);
-    void scrollBy(optional ScrollToOptions options);
+    void scrollBy(optional ScrollToOptions options = {});
     void scrollBy(unrestricted double x, unrestricted double y);
 
     // client
     [Replaceable] readonly attribute long screenX;
+    [Replaceable] readonly attribute long screenLeft;
     [Replaceable] readonly attribute long screenY;
+    [Replaceable] readonly attribute long screenTop;
     [Replaceable] readonly attribute long outerWidth;
     [Replaceable] readonly attribute long outerHeight;
     [Replaceable] readonly attribute double devicePixelRatio;
@@ -52,7 +59,7 @@ interface MediaQueryList : EventTarget {
 };
 
 [Exposed=Window,
- Constructor(CSSOMString type, optional MediaQueryListEventInit eventInitDict)]
+ Constructor(CSSOMString type, optional MediaQueryListEventInit eventInitDict = {})]
 interface MediaQueryListEvent : Event {
   readonly attribute CSSOMString media;
   readonly attribute boolean matches;
@@ -96,12 +103,12 @@ dictionary ScrollIntoViewOptions : ScrollOptions {
 partial interface Element {
   DOMRectList getClientRects();
   [NewObject] DOMRect getBoundingClientRect();
-  void scrollIntoView(optional (boolean or ScrollIntoViewOptions) arg);
-  void scroll(optional ScrollToOptions options);
+  void scrollIntoView(optional (boolean or ScrollIntoViewOptions) arg = {});
+  void scroll(optional ScrollToOptions options = {});
   void scroll(unrestricted double x, unrestricted double y);
-  void scrollTo(optional ScrollToOptions options);
+  void scrollTo(optional ScrollToOptions options = {});
   void scrollTo(unrestricted double x, unrestricted double y);
-  void scrollBy(optional ScrollToOptions options);
+  void scrollBy(optional ScrollToOptions options = {});
   void scrollBy(unrestricted double x, unrestricted double y);
   attribute unrestricted double scrollTop;
   attribute unrestricted double scrollLeft;
@@ -131,7 +138,6 @@ partial interface Range {
   [NewObject] DOMRect getBoundingClientRect();
 };
 
-/* TODO This is commented out because: "Partial interface MouseEvent with no original interface"
 partial interface MouseEvent {
   readonly attribute double screenX;
   readonly attribute double screenY;
@@ -151,7 +157,6 @@ partial dictionary MouseEventInit {
   double clientX = 0.0;
   double clientY = 0.0;
 };
-*/
 
 enum CSSBoxType { "margin", "border", "padding", "content" };
 dictionary BoxQuadOptions {
@@ -164,20 +169,16 @@ dictionary ConvertCoordinateOptions {
   CSSBoxType toBox = "border";
 };
 
-[Exposed=Window,
- NoInterfaceObject]
-interface GeometryUtils {
-  sequence<DOMQuad> getBoxQuads(optional BoxQuadOptions options);
-  DOMQuad convertQuadFromNode(DOMQuadInit quad, GeometryNode from, optional ConvertCoordinateOptions options);
-  DOMQuad convertRectFromNode(DOMRectReadOnly rect, GeometryNode from, optional ConvertCoordinateOptions options);
-  DOMPoint convertPointFromNode(DOMPointInit point, GeometryNode from, optional ConvertCoordinateOptions options); // XXX z,w turns into 0
-};
-
-Text implements GeometryUtils; // like Range
-Element implements GeometryUtils;
-/* TODO Commented out because: "CSSPseudoElement implements GeometryUtils, but CSSPseudoElement is undefined."
-CSSPseudoElement implements GeometryUtils;
-*/
-Document implements GeometryUtils;
+interface mixin GeometryUtils {
+  sequence<DOMQuad> getBoxQuads(optional BoxQuadOptions options = {});
+  DOMQuad convertQuadFromNode(DOMQuadInit quad, GeometryNode from, optional ConvertCoordinateOptions options = {});
+  DOMQuad convertRectFromNode(DOMRectReadOnly rect, GeometryNode from, optional ConvertCoordinateOptions options = {});
+  DOMPoint convertPointFromNode(DOMPointInit point, GeometryNode from, optional ConvertCoordinateOptions options = {}); // XXX z,w turns into 0
+};
+
+Text includes GeometryUtils; // like Range
+Element includes GeometryUtils;
+CSSPseudoElement includes GeometryUtils;
+Document includes GeometryUtils;
 
 typedef (Text or Element or CSSPseudoElement or Document) GeometryNode;
index b372ed6..dc9b78f 100644 (file)
@@ -1,7 +1,18 @@
-typedef USVString CSSOMString;
+// GENERATED PREAMBLE - DO NOT EDIT
+// This preamble was added by reffy-reports for web-platform-tests.
+// CSSOMString is an implementation-defined type of either DOMString or
+// USVString in CSSOM: https://drafts.csswg.org/cssom/#cssomstring-type
+// For web-platform-tests, use DOMString because USVString has additional
+// requirements in type conversion and could result in spurious failures for
+// implementations that use DOMString.
+typedef DOMString CSSOMString;
+
+// GENERATED CONTENT - DO NOT EDIT
+// Content was automatically extracted by Reffy into reffy-reports
+// (https://github.com/tidoust/reffy-reports)
+// Source: CSS Object Model (CSSOM) (https://drafts.csswg.org/cssom/)
 
-[Exposed=Window,
- LegacyArrayClass]
+[Exposed=Window]
 interface MediaList {
   stringifier attribute [TreatNullAs=EmptyString] CSSOMString mediaText;
   readonly attribute unsigned long length;
@@ -15,7 +26,7 @@ interface StyleSheet {
   readonly attribute CSSOMString type;
   readonly attribute USVString? href;
   readonly attribute (Element or ProcessingInstruction)? ownerNode;
-  readonly attribute StyleSheet? parentStyleSheet;
+  readonly attribute CSSStyleSheet? parentStyleSheet;
   readonly attribute DOMString? title;
   [SameObject, PutForwards=mediaText] readonly attribute MediaList media;
   attribute boolean disabled;
@@ -29,26 +40,28 @@ interface CSSStyleSheet : StyleSheet {
   void deleteRule(unsigned long index);
 };
 
-[Exposed=Window,
- LegacyArrayClass]
+partial interface CSSStyleSheet {
+  [SameObject] readonly attribute CSSRuleList rules;
+  long addRule(optional DOMString selector = "undefined", optional DOMString style = "undefined", optional unsigned long index);
+  void removeRule(optional unsigned long index = 0);
+};
+
+[Exposed=Window]
 interface StyleSheetList {
-  getter StyleSheet? item(unsigned long index);
+  getter CSSStyleSheet? item(unsigned long index);
   readonly attribute unsigned long length;
 };
 
-partial interface Document {
+partial interface mixin DocumentOrShadowRoot {
   [SameObject] readonly attribute StyleSheetList styleSheets;
 };
 
-[Exposed=Window,
- NoInterfaceObject]
-interface LinkStyle {
-  readonly attribute StyleSheet? sheet;
+interface mixin LinkStyle {
+  readonly attribute CSSStyleSheet? sheet;
 };
 
-ProcessingInstruction implements LinkStyle;
-[Exposed=Window,
- LegacyArrayClass]
+ProcessingInstruction includes LinkStyle;
+[Exposed=Window]
 interface CSSRuleList {
   getter CSSRule? item(unsigned long index);
   readonly attribute unsigned long length;
@@ -56,18 +69,20 @@ interface CSSRuleList {
 
 [Exposed=Window]
 interface CSSRule {
+  attribute CSSOMString cssText;
+  readonly attribute CSSRule? parentRule;
+  readonly attribute CSSStyleSheet? parentStyleSheet;
+
+  // the following attribute and constants are historial
+  readonly attribute unsigned short type;
   const unsigned short STYLE_RULE = 1;
-  const unsigned short CHARSET_RULE = 2; // historical
+  const unsigned short CHARSET_RULE = 2;
   const unsigned short IMPORT_RULE = 3;
   const unsigned short MEDIA_RULE = 4;
   const unsigned short FONT_FACE_RULE = 5;
   const unsigned short PAGE_RULE = 6;
   const unsigned short MARGIN_RULE = 9;
   const unsigned short NAMESPACE_RULE = 10;
-  readonly attribute unsigned short type;
-  attribute CSSOMString cssText;
-  readonly attribute CSSRule? parentRule;
-  readonly attribute CSSStyleSheet? parentStyleSheet;
 };
 
 [Exposed=Window]
@@ -115,29 +130,25 @@ interface CSSStyleDeclaration {
   getter CSSOMString item(unsigned long index);
   CSSOMString getPropertyValue(CSSOMString property);
   CSSOMString getPropertyPriority(CSSOMString property);
-  [CEReactions] void setProperty(CSSOMString property, [TreatNullAs=EmptyString] CSSOMString value, [TreatNullAs=EmptyString] optional CSSOMString priority = "");
-  [CEReactions] void setPropertyValue(CSSOMString property, [TreatNullAs=EmptyString] CSSOMString value);
-  [CEReactions] void setPropertyPriority(CSSOMString property, [TreatNullAs=EmptyString] CSSOMString priority);
+  [CEReactions] void setProperty(CSSOMString property, [TreatNullAs=EmptyString] CSSOMString value, optional [TreatNullAs=EmptyString] CSSOMString priority = "");
   [CEReactions] CSSOMString removeProperty(CSSOMString property);
   readonly attribute CSSRule? parentRule;
   [CEReactions] attribute [TreatNullAs=EmptyString] CSSOMString cssFloat;
 };
 
-[Exposed=Window,
- NoInterfaceObject]
-interface ElementCSSInlineStyle {
+interface mixin ElementCSSInlineStyle {
   [SameObject, PutForwards=cssText] readonly attribute CSSStyleDeclaration style;
 };
 
-HTMLElement implements ElementCSSInlineStyle;
+HTMLElement includes ElementCSSInlineStyle;
 
-SVGElement implements ElementCSSInlineStyle;
+SVGElement includes ElementCSSInlineStyle;
 
 partial interface Window {
   [NewObject] CSSStyleDeclaration getComputedStyle(Element elt, optional CSSOMString? pseudoElt);
 };
 
 [Exposed=Window]
-interface CSS {
-  static CSSOMString escape(CSSOMString ident);
+namespace CSS {
+  CSSOMString escape(CSSOMString ident);
 };
index 087fe4d..03a0201 100644 (file)
@@ -1,10 +1,16 @@
-[Constructor(DOMString type, optional EventInit eventInitDict),
- Exposed=(Window,Worker)]
+// GENERATED CONTENT - DO NOT EDIT
+// Content was automatically extracted by Reffy into reffy-reports
+// (https://github.com/tidoust/reffy-reports)
+// Source: DOM Standard (https://dom.spec.whatwg.org/)
+
+[Constructor(DOMString type, optional EventInit eventInitDict = {}),
+ Exposed=(Window,Worker,AudioWorklet)]
 interface Event {
   readonly attribute DOMString type;
   readonly attribute EventTarget? target;
-  readonly attribute EventTarget? srcElement;
+  readonly attribute EventTarget? srcElement; // historical
   readonly attribute EventTarget? currentTarget;
+  sequence<EventTarget> composedPath();
 
   const unsigned short NONE = 0;
   const unsigned short CAPTURING_PHASE = 1;
@@ -13,27 +19,33 @@ interface Event {
   readonly attribute unsigned short eventPhase;
 
   void stopPropagation();
+           attribute boolean cancelBubble; // historical alias of .stopPropagation
   void stopImmediatePropagation();
 
   readonly attribute boolean bubbles;
   readonly attribute boolean cancelable;
-           attribute boolean returnValue;
+           attribute boolean returnValue;  // historical
   void preventDefault();
   readonly attribute boolean defaultPrevented;
+  readonly attribute boolean composed;
 
   [Unforgeable] readonly attribute boolean isTrusted;
-  readonly attribute DOMTimeStamp timeStamp;
+  readonly attribute DOMHighResTimeStamp timeStamp;
 
-  void initEvent(DOMString type, optional boolean bubbles = false, optional boolean cancelable = false);
+  void initEvent(DOMString type, optional boolean bubbles = false, optional boolean cancelable = false); // historical
 };
 
 dictionary EventInit {
   boolean bubbles = false;
   boolean cancelable = false;
+  boolean composed = false;
 };
 
+partial interface Window {
+  [Replaceable] readonly attribute any event; // historical
+};
 
-[Constructor(DOMString type, optional CustomEventInit eventInitDict),
+[Constructor(DOMString type, optional CustomEventInit eventInitDict = {}),
  Exposed=(Window,Worker)]
 interface CustomEvent : Event {
   readonly attribute any detail;
@@ -45,12 +57,11 @@ dictionary CustomEventInit : EventInit {
   any detail = null;
 };
 
-
 [Constructor,
- Exposed=(Window,Worker)]
+ Exposed=(Window,Worker,AudioWorklet)]
 interface EventTarget {
-  void addEventListener(DOMString type, EventListener? callback, optional (EventListenerOptions or boolean) options);
-  void removeEventListener(DOMString type, EventListener? callback, optional (EventListenerOptions or boolean) options);
+  void addEventListener(DOMString type, EventListener? callback, optional (AddEventListenerOptions or boolean) options = {});
+  void removeEventListener(DOMString type, EventListener? callback, optional (EventListenerOptions or boolean) options = {});
   boolean dispatchEvent(Event event);
 };
 
@@ -59,10 +70,13 @@ callback interface EventListener {
 };
 
 dictionary EventListenerOptions {
-  boolean capture;
-  boolean passive;
+  boolean capture = false;
 };
 
+dictionary AddEventListenerOptions : EventListenerOptions {
+  boolean passive = false;
+  boolean once = false;
+};
 
 [Constructor,
  Exposed=(Window,Worker)]
@@ -71,37 +85,31 @@ interface AbortController {
 
   void abort();
 };
-
-
 [Exposed=(Window,Worker)]
 interface AbortSignal : EventTarget {
   readonly attribute boolean aborted;
 
   attribute EventHandler onabort;
 };
-
-
 interface mixin NonElementParentNode {
   Element? getElementById(DOMString elementId);
 };
 Document includes NonElementParentNode;
 DocumentFragment includes NonElementParentNode;
 
-
 interface mixin DocumentOrShadowRoot {
 };
 Document includes DocumentOrShadowRoot;
 ShadowRoot includes DocumentOrShadowRoot;
 
-
 interface mixin ParentNode {
   [SameObject] readonly attribute HTMLCollection children;
   readonly attribute Element? firstElementChild;
   readonly attribute Element? lastElementChild;
   readonly attribute unsigned long childElementCount;
 
-  [Unscopable] void prepend((Node or DOMString)... nodes);
-  [Unscopable] void append((Node or DOMString)... nodes);
+  [CEReactions, Unscopable] void prepend((Node or DOMString)... nodes);
+  [CEReactions, Unscopable] void append((Node or DOMString)... nodes);
 
   Element? querySelector(DOMString selectors);
   [NewObject] NodeList querySelectorAll(DOMString selectors);
@@ -110,7 +118,6 @@ Document includes ParentNode;
 DocumentFragment includes ParentNode;
 Element includes ParentNode;
 
-
 interface mixin NonDocumentTypeChildNode {
   readonly attribute Element? previousElementSibling;
   readonly attribute Element? nextElementSibling;
@@ -118,33 +125,29 @@ interface mixin NonDocumentTypeChildNode {
 Element includes NonDocumentTypeChildNode;
 CharacterData includes NonDocumentTypeChildNode;
 
-
 interface mixin ChildNode {
-  [Unscopable] void before((Node or DOMString)... nodes);
-  [Unscopable] void after((Node or DOMString)... nodes);
-  [Unscopable] void replaceWith((Node or DOMString)... nodes);
-  [Unscopable] void remove();
+  [CEReactions, Unscopable] void before((Node or DOMString)... nodes);
+  [CEReactions, Unscopable] void after((Node or DOMString)... nodes);
+  [CEReactions, Unscopable] void replaceWith((Node or DOMString)... nodes);
+  [CEReactions, Unscopable] void remove();
 };
 DocumentType includes ChildNode;
 Element includes ChildNode;
 CharacterData includes ChildNode;
 
-
 interface mixin Slotable {
   readonly attribute HTMLSlotElement? assignedSlot;
 };
 Element includes Slotable;
 Text includes Slotable;
 
-
 [Exposed=Window]
 interface NodeList {
   getter Node? item(unsigned long index);
   readonly attribute unsigned long length;
-//  iterable<Node>;
+  iterable<Node>;
 };
 
-
 [Exposed=Window, LegacyUnenumerableNamedProperties]
 interface HTMLCollection {
   readonly attribute unsigned long length;
@@ -152,10 +155,10 @@ interface HTMLCollection {
   getter Element? namedItem(DOMString name);
 };
 
-
-[Constructor(MutationCallback callback)]
+[Constructor(MutationCallback callback),
+ Exposed=Window]
 interface MutationObserver {
-  void observe(Node target, optional MutationObserverInit options);
+  void observe(Node target, optional MutationObserverInit options = {});
   void disconnect();
   sequence<MutationRecord> takeRecords();
 };
@@ -172,7 +175,6 @@ dictionary MutationObserverInit {
   sequence<DOMString> attributeFilter;
 };
 
-
 [Exposed=Window]
 interface MutationRecord {
   readonly attribute DOMString type;
@@ -186,11 +188,10 @@ interface MutationRecord {
   readonly attribute DOMString? oldValue;
 };
 
-
 [Exposed=Window]
 interface Node : EventTarget {
   const unsigned short ELEMENT_NODE = 1;
-  const unsigned short ATTRIBUTE_NODE = 2; // historical
+  const unsigned short ATTRIBUTE_NODE = 2;
   const unsigned short TEXT_NODE = 3;
   const unsigned short CDATA_SECTION_NODE = 4;
   const unsigned short ENTITY_REFERENCE_NODE = 5; // historical
@@ -204,11 +205,11 @@ interface Node : EventTarget {
   readonly attribute unsigned short nodeType;
   readonly attribute DOMString nodeName;
 
-  readonly attribute DOMString baseURI;
+  readonly attribute USVString baseURI;
 
   readonly attribute boolean isConnected;
   readonly attribute Document? ownerDocument;
-  Node getRootNode(optional GetRootNodeOptions options);
+  Node getRootNode(optional GetRootNodeOptions options = {});
   readonly attribute Node? parentNode;
   readonly attribute Element? parentElement;
   boolean hasChildNodes();
@@ -218,11 +219,11 @@ interface Node : EventTarget {
   readonly attribute Node? previousSibling;
   readonly attribute Node? nextSibling;
 
-           attribute DOMString? nodeValue;
-           attribute DOMString? textContent;
-  void normalize();
+  [CEReactions] attribute DOMString? nodeValue;
+  [CEReactions] attribute DOMString? textContent;
+  [CEReactions] void normalize();
 
-  [NewObject] Node cloneNode(optional boolean deep = false);
+  [CEReactions, NewObject] Node cloneNode(optional boolean deep = false);
   boolean isEqualNode(Node? otherNode);
   boolean isSameNode(Node? otherNode); // historical alias of ===
 
@@ -239,10 +240,10 @@ interface Node : EventTarget {
   DOMString? lookupNamespaceURI(DOMString? prefix);
   boolean isDefaultNamespace(DOMString? namespace);
 
-  Node insertBefore(Node node, Node? child);
-  Node appendChild(Node node);
-  Node replaceChild(Node node, Node child);
-  Node removeChild(Node child);
+  [CEReactions] Node insertBefore(Node node, Node? child);
+  [CEReactions] Node appendChild(Node node);
+  [CEReactions] Node replaceChild(Node node, Node child);
+  [CEReactions] Node removeChild(Node child);
 };
 
 dictionary GetRootNodeOptions {
@@ -253,9 +254,9 @@ dictionary GetRootNodeOptions {
  Exposed=Window]
 interface Document : Node {
   [SameObject] readonly attribute DOMImplementation implementation;
-  readonly attribute DOMString URL;
-  readonly attribute DOMString documentURI;
-  readonly attribute DOMString origin;
+  readonly attribute USVString URL;
+  readonly attribute USVString documentURI;
+  readonly attribute USVString origin;
   readonly attribute DOMString compatMode;
   readonly attribute DOMString characterSet;
   readonly attribute DOMString charset; // historical alias of .characterSet
@@ -268,16 +269,16 @@ interface Document : Node {
   HTMLCollection getElementsByTagNameNS(DOMString? namespace, DOMString localName);
   HTMLCollection getElementsByClassName(DOMString classNames);
 
-  [NewObject] Element createElement(DOMString localName, optional (DOMString or ElementCreationOptions) options);
-  [NewObject] Element createElementNS(DOMString? namespace, DOMString qualifiedName, optional (DOMString or ElementCreationOptions) options);
+  [CEReactions, NewObject] Element createElement(DOMString localName, optional (DOMString or ElementCreationOptions) options = {});
+  [CEReactions, NewObject] Element createElementNS(DOMString? namespace, DOMString qualifiedName, optional (DOMString or ElementCreationOptions) options = {});
   [NewObject] DocumentFragment createDocumentFragment();
   [NewObject] Text createTextNode(DOMString data);
   [NewObject] CDATASection createCDATASection(DOMString data);
   [NewObject] Comment createComment(DOMString data);
   [NewObject] ProcessingInstruction createProcessingInstruction(DOMString target, DOMString data);
 
-  [NewObject] Node importNode(Node node, optional boolean deep = false);
-  Node adoptNode(Node node);
+  [CEReactions, NewObject] Node importNode(Node node, optional boolean deep = false);
+  [CEReactions] Node adoptNode(Node node);
 
   [NewObject] Attr createAttribute(DOMString localName);
   [NewObject] Attr createAttributeNS(DOMString? namespace, DOMString qualifiedName);
@@ -298,7 +299,6 @@ dictionary ElementCreationOptions {
   DOMString is;
 };
 
-
 [Exposed=Window]
 interface DOMImplementation {
   [NewObject] DocumentType createDocumentType(DOMString qualifiedName, DOMString publicId, DOMString systemId);
@@ -308,7 +308,6 @@ interface DOMImplementation {
   boolean hasFeature(); // useless; always returns true
 };
 
-
 [Exposed=Window]
 interface DocumentType : Node {
   readonly attribute DOMString name;
@@ -316,13 +315,11 @@ interface DocumentType : Node {
   readonly attribute DOMString systemId;
 };
 
-
 [Constructor,
  Exposed=Window]
 interface DocumentFragment : Node {
 };
 
-
 [Exposed=Window]
 interface ShadowRoot : DocumentFragment {
   readonly attribute ShadowRootMode mode;
@@ -331,7 +328,6 @@ interface ShadowRoot : DocumentFragment {
 
 enum ShadowRootMode { "open", "closed" };
 
-
 [Exposed=Window]
 interface Element : Node {
   readonly attribute DOMString? namespaceURI;
@@ -339,28 +335,29 @@ interface Element : Node {
   readonly attribute DOMString localName;
   readonly attribute DOMString tagName;
 
-           attribute DOMString id;
-           attribute DOMString className;
+  [CEReactions] attribute DOMString id;
+  [CEReactions] attribute DOMString className;
   [SameObject, PutForwards=value] readonly attribute DOMTokenList classList;
-  [Unscopable] attribute DOMString slot;
+  [CEReactions, Unscopable] attribute DOMString slot;
 
   boolean hasAttributes();
   [SameObject] readonly attribute NamedNodeMap attributes;
   sequence<DOMString> getAttributeNames();
   DOMString? getAttribute(DOMString qualifiedName);
   DOMString? getAttributeNS(DOMString? namespace, DOMString localName);
-  void setAttribute(DOMString qualifiedName, DOMString value);
-  void setAttributeNS(DOMString? namespace, DOMString qualifiedName, DOMString value);
-  void removeAttribute(DOMString qualifiedName);
-  void removeAttributeNS(DOMString? namespace, DOMString localName);
+  [CEReactions] void setAttribute(DOMString qualifiedName, DOMString value);
+  [CEReactions] void setAttributeNS(DOMString? namespace, DOMString qualifiedName, DOMString value);
+  [CEReactions] void removeAttribute(DOMString qualifiedName);
+  [CEReactions] void removeAttributeNS(DOMString? namespace, DOMString localName);
+  [CEReactions] boolean toggleAttribute(DOMString qualifiedName, optional boolean force);
   boolean hasAttribute(DOMString qualifiedName);
   boolean hasAttributeNS(DOMString? namespace, DOMString localName);
 
   Attr? getAttributeNode(DOMString qualifiedName);
   Attr? getAttributeNodeNS(DOMString? namespace, DOMString localName);
-  Attr? setAttributeNode(Attr attr);
-  Attr? setAttributeNodeNS(Attr attr);
-  Attr removeAttributeNode(Attr attr);
+  [CEReactions] Attr? setAttributeNode(Attr attr);
+  [CEReactions] Attr? setAttributeNodeNS(Attr attr);
+  [CEReactions] Attr removeAttributeNode(Attr attr);
 
   ShadowRoot attachShadow(ShadowRootInit init);
   readonly attribute ShadowRoot? shadowRoot;
@@ -373,41 +370,39 @@ interface Element : Node {
   HTMLCollection getElementsByTagNameNS(DOMString? namespace, DOMString localName);
   HTMLCollection getElementsByClassName(DOMString classNames);
 
-  Element? insertAdjacentElement(DOMString where, Element element); // historical
+  [CEReactions] Element? insertAdjacentElement(DOMString where, Element element); // historical
   void insertAdjacentText(DOMString where, DOMString data); // historical
 };
 
 dictionary ShadowRootInit {
-//  required ShadowRootMode mode;
+  required ShadowRootMode mode;
 };
 
-
-[Exposed=Window, LegacyUnenumerableNamedProperties]
+[Exposed=Window,
+ LegacyUnenumerableNamedProperties]
 interface NamedNodeMap {
   readonly attribute unsigned long length;
   getter Attr? item(unsigned long index);
   getter Attr? getNamedItem(DOMString qualifiedName);
   Attr? getNamedItemNS(DOMString? namespace, DOMString localName);
-  Attr? setNamedItem(Attr attr);
-  Attr? setNamedItemNS(Attr attr);
-  Attr removeNamedItem(DOMString qualifiedName);
-  Attr removeNamedItemNS(DOMString? namespace, DOMString localName);
+  [CEReactions] Attr? setNamedItem(Attr attr);
+  [CEReactions] Attr? setNamedItemNS(Attr attr);
+  [CEReactions] Attr removeNamedItem(DOMString qualifiedName);
+  [CEReactions] Attr removeNamedItemNS(DOMString? namespace, DOMString localName);
 };
 
-
 [Exposed=Window]
 interface Attr : Node {
   readonly attribute DOMString? namespaceURI;
   readonly attribute DOMString? prefix;
   readonly attribute DOMString localName;
   readonly attribute DOMString name;
-           attribute DOMString value;
+  [CEReactions] attribute DOMString value;
 
   readonly attribute Element? ownerElement;
 
   readonly attribute boolean specified; // useless; always returns true
 };
-
 [Exposed=Window]
 interface CharacterData : Node {
   attribute [TreatNullAs=EmptyString] DOMString data;
@@ -419,29 +414,24 @@ interface CharacterData : Node {
   void replaceData(unsigned long offset, unsigned long count, DOMString data);
 };
 
-
 [Constructor(optional DOMString data = ""),
  Exposed=Window]
 interface Text : CharacterData {
   [NewObject] Text splitText(unsigned long offset);
   readonly attribute DOMString wholeText;
 };
-
 [Exposed=Window]
 interface CDATASection : Text {
 };
-
 [Exposed=Window]
 interface ProcessingInstruction : CharacterData {
   readonly attribute DOMString target;
 };
-
 [Constructor(optional DOMString data = ""),
  Exposed=Window]
 interface Comment : CharacterData {
 };
 
-
 [Exposed=Window]
 interface AbstractRange {
   readonly attribute Node startContainer;
@@ -451,7 +441,15 @@ interface AbstractRange {
   readonly attribute boolean collapsed;
 };
 
-[Exposed=Window]
+dictionary StaticRangeInit {
+  required Node startContainer;
+  required unsigned long startOffset;
+  required Node endContainer;
+  required unsigned long endOffset;
+};
+
+[Constructor(StaticRangeInit init),
+ Exposed=Window]
 interface StaticRange : AbstractRange {
 };
 
@@ -476,11 +474,11 @@ interface Range : AbstractRange {
   const unsigned short END_TO_START = 3;
   short compareBoundaryPoints(unsigned short how, Range sourceRange);
 
-  void deleteContents();
-  [NewObject] DocumentFragment extractContents();
-  [NewObject] DocumentFragment cloneContents();
-  void insertNode(Node node);
-  void surroundContents(Node newParent);
+  [CEReactions] void deleteContents();
+  [CEReactions, NewObject] DocumentFragment extractContents();
+  [CEReactions, NewObject] DocumentFragment cloneContents();
+  [CEReactions] void insertNode(Node node);
+  [CEReactions] void surroundContents(Node newParent);
 
   [NewObject] Range cloneRange();
   void detach();
@@ -493,7 +491,6 @@ interface Range : AbstractRange {
   stringifier;
 };
 
-
 [Exposed=Window]
 interface NodeIterator {
   [SameObject] readonly attribute Node root;
@@ -508,7 +505,6 @@ interface NodeIterator {
   void detach();
 };
 
-
 [Exposed=Window]
 interface TreeWalker {
   [SameObject] readonly attribute Node root;
@@ -524,7 +520,6 @@ interface TreeWalker {
   Node? previousNode();
   Node? nextNode();
 };
-
 [Exposed=Window]
 callback interface NodeFilter {
   // Constants for acceptNode()
@@ -535,7 +530,7 @@ callback interface NodeFilter {
   // Constants for whatToShow
   const unsigned long SHOW_ALL = 0xFFFFFFFF;
   const unsigned long SHOW_ELEMENT = 0x1;
-  const unsigned long SHOW_ATTRIBUTE = 0x2; // historical
+  const unsigned long SHOW_ATTRIBUTE = 0x2;
   const unsigned long SHOW_TEXT = 0x4;
   const unsigned long SHOW_CDATA_SECTION = 0x8;
   const unsigned long SHOW_ENTITY_REFERENCE = 0x10; // historical
@@ -550,7 +545,7 @@ callback interface NodeFilter {
   unsigned short acceptNode(Node node);
 };
 
-
+[Exposed=Window]
 interface DOMTokenList {
   readonly attribute unsigned long length;
   getter DOMString? item(unsigned long index);
@@ -561,5 +556,53 @@ interface DOMTokenList {
   [CEReactions] boolean replace(DOMString token, DOMString newToken);
   boolean supports(DOMString token);
   [CEReactions] stringifier attribute DOMString value;
-  //  iterable<DOMString>;
+  iterable<DOMString>;
+};
+
+[Exposed=Window]
+interface XPathResult {
+  const unsigned short ANY_TYPE = 0;
+  const unsigned short NUMBER_TYPE = 1;
+  const unsigned short STRING_TYPE = 2;
+  const unsigned short BOOLEAN_TYPE = 3;
+  const unsigned short UNORDERED_NODE_ITERATOR_TYPE = 4;
+  const unsigned short ORDERED_NODE_ITERATOR_TYPE = 5;
+  const unsigned short UNORDERED_NODE_SNAPSHOT_TYPE = 6;
+  const unsigned short ORDERED_NODE_SNAPSHOT_TYPE = 7;
+  const unsigned short ANY_UNORDERED_NODE_TYPE = 8;
+  const unsigned short FIRST_ORDERED_NODE_TYPE = 9;
+
+  readonly attribute unsigned short resultType;
+  readonly attribute unrestricted double numberValue;
+  readonly attribute DOMString stringValue;
+  readonly attribute boolean booleanValue;
+  readonly attribute Node? singleNodeValue;
+  readonly attribute boolean invalidIteratorState;
+  readonly attribute unsigned long snapshotLength;
+
+  Node? iterateNext();
+  Node? snapshotItem(unsigned long index);
+};
+
+[Exposed=Window]
+interface XPathExpression {
+  // XPathResult.ANY_TYPE = 0
+  XPathResult evaluate(Node contextNode, optional unsigned short type = 0, optional XPathResult? result = null);
 };
+
+callback interface XPathNSResolver {
+  DOMString? lookupNamespaceURI(DOMString? prefix);
+};
+
+interface mixin XPathEvaluatorBase {
+  [NewObject] XPathExpression createExpression(DOMString expression, optional XPathNSResolver? resolver = null);
+  XPathNSResolver createNSResolver(Node nodeResolver);
+  // XPathResult.ANY_TYPE = 0
+  XPathResult evaluate(DOMString expression, Node contextNode, optional XPathNSResolver? resolver = null, optional unsigned short type = 0, optional XPathResult? result = null);
+};
+Document includes XPathEvaluatorBase;
+
+[Exposed=Window, Constructor]
+interface XPathEvaluator {};
+
+XPathEvaluator includes XPathEvaluatorBase;
index 49348a7..d856cd5 100644 (file)
@@ -1,8 +1,13 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content was automatically extracted by Reffy into reffy-reports
+// (https://github.com/tidoust/reffy-reports)
+// Source: HTML Standard (https://html.spec.whatwg.org/)
+
 [Exposed=Window,
  LegacyUnenumerableNamedProperties]
 interface HTMLAllCollection {
   readonly attribute unsigned long length;
-  getter Element? (unsigned long index);
+  getter Element (unsigned long index);
   getter (HTMLCollection or Element)? namedItem(DOMString name);
   (HTMLCollection or Element)? item(optional DOMString nameOrIndex);
 
@@ -15,6 +20,7 @@ interface HTMLFormControlsCollection : HTMLCollection {
   getter (RadioNodeList or Element)? namedItem(DOMString name); // shadows inherited namedItem()
 };
 
+[Exposed=Window]
 interface RadioNodeList : NodeList {
   attribute DOMString value;
 };
@@ -65,15 +71,14 @@ partial interface Document {
   readonly attribute HTMLOrSVGScriptElement? currentScript; // classic scripts in a document tree only
 
   // dynamic markup insertion
-  [CEReactions] Document open(optional DOMString type = "text/html", optional DOMString replace = "");
-  WindowProxy open(USVString url, DOMString name, DOMString features);
+  [CEReactions] Document open(optional DOMString unused1, optional DOMString unused2); // both arguments are ignored
+  WindowProxy? open(USVString url, DOMString name, DOMString features);
   [CEReactions] void close();
   [CEReactions] void write(DOMString... text);
   [CEReactions] void writeln(DOMString... text);
 
   // user interaction
   readonly attribute WindowProxy? defaultView;
-  readonly attribute Element? activeElement;
   boolean hasFocus();
   [CEReactions] attribute DOMString designMode;
   [CEReactions] boolean execCommand(DOMString commandId, optional boolean showUI = false, optional DOMString value = "");
@@ -85,10 +90,16 @@ partial interface Document {
 
   // special event handler IDL attributes that only apply to Document objects
   [LenientThis] attribute EventHandler onreadystatechange;
+
+  // also has obsolete members
 };
 Document includes GlobalEventHandlers;
 Document includes DocumentAndElementEventHandlers;
 
+partial interface mixin DocumentOrShadowRoot {
+  readonly attribute Element? activeElement;
+};
+
 [Exposed=Window,
  HTMLConstructor]
 interface HTMLElement : Element {
@@ -97,33 +108,40 @@ interface HTMLElement : Element {
   [CEReactions] attribute DOMString lang;
   [CEReactions] attribute boolean translate;
   [CEReactions] attribute DOMString dir;
-  [SameObject] readonly attribute DOMStringMap dataset;
 
   // user interaction
   [CEReactions] attribute boolean hidden;
   void click();
-  [CEReactions] attribute long tabIndex;
-  void focus(optional FocusOptions options);
-  void blur();
   [CEReactions] attribute DOMString accessKey;
   readonly attribute DOMString accessKeyLabel;
   [CEReactions] attribute boolean draggable;
   [CEReactions] attribute boolean spellcheck;
+  [CEReactions] attribute DOMString autocapitalize;
 
   [CEReactions] attribute [TreatNullAs=EmptyString] DOMString innerText;
-};
 
-dictionary FocusOptions {
-  boolean preventScroll = false;
+  ElementInternals attachInternals();
 };
 
 HTMLElement includes GlobalEventHandlers;
 HTMLElement includes DocumentAndElementEventHandlers;
 HTMLElement includes ElementContentEditable;
+HTMLElement includes HTMLOrSVGElement;
 
 // Note: intentionally not [HTMLConstructor]
+[Exposed=Window]
 interface HTMLUnknownElement : HTMLElement { };
 
+interface mixin HTMLOrSVGElement {
+  [SameObject] readonly attribute DOMStringMap dataset;
+  attribute DOMString nonce; // intentionally no [CEReactions]
+
+  [CEReactions] attribute boolean autofocus;
+  [CEReactions] attribute long tabIndex;
+  void focus(optional FocusOptions options = {});
+  void blur();
+};
+
 [Exposed=Window,
  OverrideBuiltins]
 interface DOMStringMap {
@@ -164,14 +182,13 @@ interface HTMLLinkElement : HTMLElement {
   [CEReactions] attribute DOMString as; // (default "")
   [SameObject, PutForwards=value] readonly attribute DOMTokenList relList;
   [CEReactions] attribute DOMString media;
-  [CEReactions] attribute DOMString nonce;
   [CEReactions] attribute DOMString integrity;
   [CEReactions] attribute DOMString hreflang;
   [CEReactions] attribute DOMString type;
   [SameObject, PutForwards=value] readonly attribute DOMTokenList sizes;
+  [CEReactions] attribute USVString imageSrcset;
+  [CEReactions] attribute DOMString imageSizes;
   [CEReactions] attribute DOMString referrerPolicy;
-  [CEReactions] attribute DOMString workerType;
-  [CEReactions] attribute DOMString updateViaCache;
 
   // also has obsolete members
 };
@@ -191,8 +208,8 @@ interface HTMLMetaElement : HTMLElement {
  HTMLConstructor]
 interface HTMLStyleElement : HTMLElement {
   [CEReactions] attribute DOMString media;
-  [CEReactions] attribute DOMString nonce;
-  [CEReactions] attribute DOMString type;
+
+  // also has obsolete members
 };
 HTMLStyleElement includes LinkStyle;
 
@@ -371,6 +388,7 @@ interface HTMLImageElement : HTMLElement {
   readonly attribute boolean complete;
   readonly attribute USVString currentSrc;
   [CEReactions] attribute DOMString referrerPolicy;
+  [CEReactions] attribute DOMString decoding;
 
   Promise<void> decode();
 
@@ -384,16 +402,15 @@ interface HTMLIFrameElement : HTMLElement {
   [CEReactions] attribute DOMString srcdoc;
   [CEReactions] attribute DOMString name;
   [SameObject, PutForwards=value] readonly attribute DOMTokenList sandbox;
+  [CEReactions] attribute DOMString allow;
   [CEReactions] attribute boolean allowFullscreen;
   [CEReactions] attribute boolean allowPaymentRequest;
-  [CEReactions] attribute boolean allowUserMedia;
   [CEReactions] attribute DOMString width;
   [CEReactions] attribute DOMString height;
   [CEReactions] attribute DOMString referrerPolicy;
   readonly attribute Document? contentDocument;
   readonly attribute WindowProxy? contentWindow;
   Document? getSVGDocument();
-  [SameObject, PutForwards=value] readonly attribute DOMTokenList delegateStickyUserActivation;
 
   // also has obsolete members
 };
@@ -415,7 +432,6 @@ interface HTMLEmbedElement : HTMLElement {
 interface HTMLObjectElement : HTMLElement {
   [CEReactions] attribute USVString data;
   [CEReactions] attribute DOMString type;
-  [CEReactions] attribute boolean typeMustMatch;
   [CEReactions] attribute DOMString name;
   [CEReactions] attribute DOMString useMap;
   readonly attribute HTMLFormElement? form;
@@ -654,7 +670,7 @@ interface TimeRanges {
 };
 
 [Exposed=Window,
- Constructor(DOMString type, optional TrackEventInit eventInitDict)]
+ Constructor(DOMString type, optional TrackEventInit eventInitDict = {})]
 interface TrackEvent : Event {
   readonly attribute (VideoTrack or AudioTrack or TextTrack)? track;
 };
@@ -730,7 +746,7 @@ interface HTMLTableColElement : HTMLElement {
  HTMLConstructor]
 interface HTMLTableSectionElement : HTMLElement {
   [SameObject] readonly attribute HTMLCollection rows;
-  HTMLElement insertRow(optional long index = -1);
+  HTMLTableRowElement insertRow(optional long index = -1);
   [CEReactions] void deleteRow(long index);
 
   // also has obsolete members
@@ -776,6 +792,8 @@ interface HTMLFormElement : HTMLElement {
   [CEReactions] attribute DOMString name;
   [CEReactions] attribute boolean noValidate;
   [CEReactions] attribute DOMString target;
+  [CEReactions] attribute DOMString rel;
+  [SameObject, PutForwards=value] readonly attribute DOMTokenList relList;
 
   [SameObject] readonly attribute HTMLFormControlsCollection elements;
   readonly attribute unsigned long length;
@@ -783,6 +801,7 @@ interface HTMLFormElement : HTMLElement {
   getter (RadioNodeList or Element) (DOMString name);
 
   void submit();
+  void requestSubmit(optional HTMLElement submitter);
   [CEReactions] void reset();
   boolean checkValidity();
   boolean reportValidity();
@@ -802,7 +821,6 @@ interface HTMLInputElement : HTMLElement {
   [CEReactions] attribute DOMString accept;
   [CEReactions] attribute DOMString alt;
   [CEReactions] attribute DOMString autocomplete;
-  [CEReactions] attribute boolean autofocus;
   [CEReactions] attribute boolean defaultChecked;
   attribute boolean checked;
   [CEReactions] attribute DOMString dirName;
@@ -863,7 +881,6 @@ interface HTMLInputElement : HTMLElement {
 [Exposed=Window,
  HTMLConstructor]
 interface HTMLButtonElement : HTMLElement {
-  [CEReactions] attribute boolean autofocus;
   [CEReactions] attribute boolean disabled;
   readonly attribute HTMLFormElement? form;
   [CEReactions] attribute USVString formAction;
@@ -889,7 +906,6 @@ interface HTMLButtonElement : HTMLElement {
  HTMLConstructor]
 interface HTMLSelectElement : HTMLElement {
   [CEReactions] attribute DOMString autocomplete;
-  [CEReactions] attribute boolean autofocus;
   [CEReactions] attribute boolean disabled;
   readonly attribute HTMLFormElement? form;
   [CEReactions] attribute boolean multiple;
@@ -954,7 +970,6 @@ interface HTMLOptionElement : HTMLElement {
  HTMLConstructor]
 interface HTMLTextAreaElement : HTMLElement {
   [CEReactions] attribute DOMString autocomplete;
-  [CEReactions] attribute boolean autofocus;
   [CEReactions] attribute unsigned long cols;
   [CEReactions] attribute DOMString dirName;
   [CEReactions] attribute boolean disabled;
@@ -970,7 +985,7 @@ interface HTMLTextAreaElement : HTMLElement {
 
   readonly attribute DOMString type;
   [CEReactions] attribute DOMString defaultValue;
-  [CEReactions] attribute [TreatNullAs=EmptyString] DOMString value;
+  attribute [TreatNullAs=EmptyString] DOMString value;
   readonly attribute unsigned long textLength;
 
   readonly attribute boolean willValidate;
@@ -1083,6 +1098,16 @@ interface ValidityState {
 };
 
 [Exposed=Window,
+ Constructor(DOMString type, optional FormDataEventInit eventInitDict = {})]
+interface FormDataEvent : Event {
+  readonly attribute FormData formData;
+};
+
+dictionary FormDataEventInit : EventInit {
+  required FormData formData;
+};
+
+[Exposed=Window,
  HTMLConstructor]
 interface HTMLDetailsElement : HTMLElement {
   [CEReactions] attribute boolean open;
@@ -1108,9 +1133,8 @@ interface HTMLScriptElement : HTMLElement {
   [CEReactions] attribute boolean defer;
   [CEReactions] attribute DOMString? crossOrigin;
   [CEReactions] attribute DOMString text;
-  [CEReactions] attribute DOMString nonce;
   [CEReactions] attribute DOMString integrity;
-
+  [CEReactions] attribute DOMString referrerPolicy;
 
   // also has obsolete members
 };
@@ -1125,15 +1149,15 @@ interface HTMLTemplateElement : HTMLElement {
  HTMLConstructor]
 interface HTMLSlotElement : HTMLElement {
   [CEReactions] attribute DOMString name;
-  sequence<Node> assignedNodes(optional AssignedNodesOptions options);
-  sequence<Element> assignedElements(optional AssignedNodesOptions options);
+  sequence<Node> assignedNodes(optional AssignedNodesOptions options = {});
+  sequence<Element> assignedElements(optional AssignedNodesOptions options = {});
 };
 
 dictionary AssignedNodesOptions {
   boolean flatten = false;
 };
 
-typedef (CanvasRenderingContext2D or ImageBitmapRenderingContext or WebGLRenderingContext) RenderingContext;
+typedef (CanvasRenderingContext2D or ImageBitmapRenderingContext or WebGLRenderingContext or WebGL2RenderingContext) RenderingContext;
 
 [Exposed=Window,
  HTMLConstructor]
@@ -1143,8 +1167,8 @@ interface HTMLCanvasElement : HTMLElement {
 
   RenderingContext? getContext(DOMString contextId, optional any options = null);
 
-  USVString toDataURL(optional DOMString type, optional any quality);
-  void toBlob(BlobCallback _callback, optional DOMString type, optional any quality);
+  USVString toDataURL(optional DOMString type = "image/png", optional any quality);
+  void toBlob(BlobCallback _callback, optional DOMString type = "image/png", optional any quality);
   OffscreenCanvas transferControlToOffscreen();
 };
 
@@ -1163,6 +1187,7 @@ enum CanvasFillRule { "nonzero", "evenodd" };
 
 dictionary CanvasRenderingContext2DSettings {
   boolean alpha = true;
+  boolean desynchronized = false;
 };
 
 enum ImageSmoothingQuality { "low", "medium", "high" };
@@ -1171,6 +1196,8 @@ enum ImageSmoothingQuality { "low", "medium", "high" };
 interface CanvasRenderingContext2D {
   // back-reference to the canvas
   readonly attribute HTMLCanvasElement canvas;
+
+  CanvasRenderingContext2DSettings getContextAttributes();
 };
 CanvasRenderingContext2D includes CanvasState;
 CanvasRenderingContext2D includes CanvasTransform;
@@ -1204,8 +1231,9 @@ interface mixin CanvasTransform {
 
   [NewObject] DOMMatrix getTransform();
   void setTransform(unrestricted double a, unrestricted double b, unrestricted double c, unrestricted double d, unrestricted double e, unrestricted double f);
-  void setTransform(optional DOMMatrix2DInit transform);
+  void setTransform(optional DOMMatrix2DInit transform = {});
   void resetTransform();
+
 };
 
 interface mixin CanvasCompositing {
@@ -1218,6 +1246,7 @@ interface mixin CanvasImageSmoothing {
   // image smoothing
   attribute boolean imageSmoothingEnabled; // (default true)
   attribute ImageSmoothingQuality imageSmoothingQuality; // (default low)
+
 };
 
 interface mixin CanvasFillStrokeStyles {
@@ -1227,6 +1256,7 @@ interface mixin CanvasFillStrokeStyles {
   CanvasGradient createLinearGradient(double x0, double y0, double x1, double y1);
   CanvasGradient createRadialGradient(double x0, double y0, double r0, double x1, double y1, double r1);
   CanvasPattern? createPattern(CanvasImageSource image, [TreatNullAs=EmptyString] DOMString repetition);
+
 };
 
 interface mixin CanvasShadowStyles {
@@ -1258,7 +1288,6 @@ interface mixin CanvasDrawPath {
   void stroke(Path2D path);
   void clip(optional CanvasFillRule fillRule = "nonzero");
   void clip(Path2D path, optional CanvasFillRule fillRule = "nonzero");
-  void resetClip();
   boolean isPointInPath(unrestricted double x, unrestricted double y, optional CanvasFillRule fillRule = "nonzero");
   boolean isPointInPath(Path2D path, unrestricted double x, unrestricted double y, optional CanvasFillRule fillRule = "nonzero");
   boolean isPointInStroke(unrestricted double x, unrestricted double y);
@@ -1344,10 +1373,10 @@ interface CanvasGradient {
 [Exposed=(Window,Worker)]
 interface CanvasPattern {
   // opaque object
-  void setTransform(optional DOMMatrix2DInit transform);
+  void setTransform(optional DOMMatrix2DInit transform = {});
 };
 
-[Exposed=Window]
+[Exposed=(Window,Worker)]
 interface TextMetrics {
   // x-direction
   readonly attribute double width; // advance width
@@ -1379,13 +1408,13 @@ interface ImageData {
 [Constructor(optional (Path2D or DOMString) path),
  Exposed=(Window,Worker)]
 interface Path2D {
-  void addPath(Path2D path, optional DOMMatrix2DInit transform);
+  void addPath(Path2D path, optional DOMMatrix2DInit transform = {});
 };
 Path2D includes CanvasPath;
 
-[Exposed=Window]
+[Exposed=(Window,Worker)]
 interface ImageBitmapRenderingContext {
-  readonly attribute HTMLCanvasElement canvas;
+  readonly attribute (HTMLCanvasElement or OffscreenCanvas) canvas;
   void transferFromImageBitmap(ImageBitmap? bitmap);
 };
 
@@ -1393,27 +1422,25 @@ dictionary ImageBitmapRenderingContextSettings {
   boolean alpha = true;
 };
 
-typedef (OffscreenCanvasRenderingContext2D or
-        WebGLRenderingContext) OffscreenRenderingContext;
+typedef (OffscreenCanvasRenderingContext2D or ImageBitmapRenderingContext or WebGLRenderingContext or WebGL2RenderingContext) OffscreenRenderingContext;
 
 dictionary ImageEncodeOptions {
   DOMString type = "image/png";
-  unrestricted double quality = 1.0;
+  unrestricted double quality;
 };
 
-enum OffscreenRenderingContextId { "2d", "webgl" };
+enum OffscreenRenderingContextId { "2d", "bitmaprenderer", "webgl", "webgl2" };
 
 [Constructor([EnforceRange] unsigned long long width, [EnforceRange] unsigned long long height), Exposed=(Window,Worker), Transferable]
 interface OffscreenCanvas : EventTarget {
-  attribute unsigned long long width;
-  attribute unsigned long long height;
+  attribute [EnforceRange] unsigned long long width;
+  attribute [EnforceRange] unsigned long long height;
 
   OffscreenRenderingContext? getContext(OffscreenRenderingContextId contextId, optional any options = null);
   ImageBitmap transferToImageBitmap();
-  Promise<Blob> convertToBlob(optional ImageEncodeOptions options);
+  Promise<Blob> convertToBlob(optional ImageEncodeOptions options = {});
 };
 
-
 [Exposed=(Window,Worker)]
 interface OffscreenCanvasRenderingContext2D {
   void commit();
@@ -1429,32 +1456,75 @@ OffscreenCanvasRenderingContext2D includes CanvasShadowStyles;
 OffscreenCanvasRenderingContext2D includes CanvasFilters;
 OffscreenCanvasRenderingContext2D includes CanvasRect;
 OffscreenCanvasRenderingContext2D includes CanvasDrawPath;
+OffscreenCanvasRenderingContext2D includes CanvasText;
 OffscreenCanvasRenderingContext2D includes CanvasDrawImage;
 OffscreenCanvasRenderingContext2D includes CanvasImageData;
 OffscreenCanvasRenderingContext2D includes CanvasPathDrawingStyles;
+OffscreenCanvasRenderingContext2D includes CanvasTextDrawingStyles;
 OffscreenCanvasRenderingContext2D includes CanvasPath;
 
-
 [Exposed=Window]
 interface CustomElementRegistry {
-  [CEReactions] void define(DOMString name, Function constructor, optional ElementDefinitionOptions options);
+  [CEReactions] void define(DOMString name, CustomElementConstructor constructor, optional ElementDefinitionOptions options = {});
   any get(DOMString name);
   Promise<void> whenDefined(DOMString name);
+  [CEReactions] void upgrade(Node root);
 };
 
+callback CustomElementConstructor = HTMLElement ();
+
 dictionary ElementDefinitionOptions {
   DOMString extends;
 };
 
+[Exposed=Window]
+interface ElementInternals {
+  // Form-associated custom elements
+
+  void setFormValue((File or USVString or FormData)? value,
+                    optional (File or USVString or FormData)? state);
+
+  readonly attribute HTMLFormElement? form;
+
+  void setValidity(ValidityStateFlags flags,
+                   optional DOMString message,
+                   optional HTMLElement anchor);
+  readonly attribute boolean willValidate;
+  readonly attribute ValidityState validity;
+  readonly attribute DOMString validationMessage;
+  boolean checkValidity();
+  boolean reportValidity();
+
+  readonly attribute NodeList labels;
+};
+
+dictionary ValidityStateFlags {
+  boolean valueMissing = false;
+  boolean typeMismatch = false;
+  boolean patternMismatch = false;
+  boolean tooLong = false;
+  boolean tooShort = false;
+  boolean rangeUnderflow = false;
+  boolean rangeOverflow = false;
+  boolean stepMismatch = false;
+  boolean badInput = false;
+  boolean customError = false;
+};
+
+dictionary FocusOptions {
+  boolean preventScroll = false;
+};
+
 interface mixin ElementContentEditable {
   [CEReactions] attribute DOMString contentEditable;
+  [CEReactions] attribute DOMString enterKeyHint;
   readonly attribute boolean isContentEditable;
   [CEReactions] attribute DOMString inputMode;
 };
 
 [Exposed=Window,
  Constructor]
-  interface DataTransfer {
+interface DataTransfer {
   attribute DOMString dropEffect;
   attribute DOMString effectAllowed;
 
@@ -1491,7 +1561,7 @@ interface DataTransferItem {
 callback FunctionStringCallback = void (DOMString data);
 
 [Exposed=Window,
- Constructor(DOMString type, optional DragEventInit eventInitDict)]
+ Constructor(DOMString type, optional DragEventInit eventInitDict = {})]
 interface DragEvent : MouseEvent {
   readonly attribute DataTransfer? dataTransfer;
 };
@@ -1532,7 +1602,7 @@ interface Window : EventTarget {
   attribute any opener;
   [Replaceable] readonly attribute WindowProxy? parent;
   readonly attribute Element? frameElement;
-  WindowProxy? open(optional USVString url = "about:blank", optional DOMString target = "_blank", optional [TreatNullAs=EmptyString] DOMString features = "");
+  WindowProxy? open(optional USVString url = "", optional DOMString target = "_blank", optional [TreatNullAs=EmptyString] DOMString features = "");
   getter object (DOMString name);
   // Since this is the global object, the IDL named getter adds a NamedPropertiesObject exotic
   // object on the prototype chain. Indeed, this does not make the global object an exotic object.
@@ -1540,7 +1610,7 @@ interface Window : EventTarget {
 
   // the user agent
   readonly attribute Navigator navigator;
-  readonly attribute ApplicationCache applicationCache;
+  [SecureContext] readonly attribute ApplicationCache applicationCache;
 
   // user prompts
   void alert();
@@ -1549,17 +1619,15 @@ interface Window : EventTarget {
   DOMString? prompt(optional DOMString message = "", optional DOMString default = "");
   void print();
 
-  unsigned long requestAnimationFrame(FrameRequestCallback callback);
-  void cancelAnimationFrame(unsigned long handle);
-
   void postMessage(any message, USVString targetOrigin, optional sequence<object> transfer = []);
-
-  // also has obsolete members
+  void postMessage(any message, optional WindowPostMessageOptions options = {});
 };
 Window includes GlobalEventHandlers;
 Window includes WindowEventHandlers;
 
-callback FrameRequestCallback = void (DOMHighResTimeStamp time);
+dictionary WindowPostMessageOptions : PostMessageOptions {
+  USVString targetOrigin = "/";
+};
 
 [Exposed=Window]
 interface BarProp {
@@ -1570,7 +1638,6 @@ enum ScrollRestoration { "auto", "manual" };
 
 [Exposed=Window]
 interface History {
-  readonly attribute unsigned long index;
   readonly attribute unsigned long length;
   attribute ScrollRestoration scrollRestoration;
   readonly attribute any state;
@@ -1601,7 +1668,7 @@ interface Location { // but see also additional creation steps and overridden in
 };
 
 [Exposed=Window,
- Constructor(DOMString type, optional PopStateEventInit eventInitDict)]
+ Constructor(DOMString type, optional PopStateEventInit eventInitDict = {})]
 interface PopStateEvent : Event {
   readonly attribute any state;
 };
@@ -1611,7 +1678,7 @@ dictionary PopStateEventInit : EventInit {
 };
 
 [Exposed=Window,
- Constructor(DOMString type, optional HashChangeEventInit eventInitDict)]
+ Constructor(DOMString type, optional HashChangeEventInit eventInitDict = {})]
 interface HashChangeEvent : Event {
   readonly attribute USVString oldURL;
   readonly attribute USVString newURL;
@@ -1623,7 +1690,7 @@ dictionary HashChangeEventInit : EventInit {
 };
 
 [Exposed=Window,
- Constructor(DOMString type, optional PageTransitionEventInit eventInitDict)]
+ Constructor(DOMString type, optional PageTransitionEventInit eventInitDict = {})]
 interface PageTransitionEvent : Event {
   readonly attribute boolean persisted;
 };
@@ -1637,7 +1704,8 @@ interface BeforeUnloadEvent : Event {
   attribute DOMString returnValue;
 };
 
-[Exposed=Window]
+[SecureContext,
+ Exposed=Window]
 interface ApplicationCache : EventTarget {
 
   // update status
@@ -1669,7 +1737,8 @@ interface mixin NavigatorOnLine {
   readonly attribute boolean onLine;
 };
 
-[Constructor(DOMString type, optional ErrorEventInit eventInitDict), Exposed=(Window,Worker)]
+[Constructor(DOMString type, optional ErrorEventInit eventInitDict = {}),
+ Exposed=(Window,Worker)]
 interface ErrorEvent : Event {
   readonly attribute DOMString message;
   readonly attribute USVString filename;
@@ -1735,6 +1804,7 @@ interface mixin GlobalEventHandlers {
   attribute EventHandler onended;
   attribute OnErrorEventHandler onerror;
   attribute EventHandler onfocus;
+  attribute EventHandler onformdata;
   attribute EventHandler oninput;
   attribute EventHandler oninvalid;
   attribute EventHandler onkeydown;
@@ -1743,7 +1813,6 @@ interface mixin GlobalEventHandlers {
   attribute EventHandler onload;
   attribute EventHandler onloadeddata;
   attribute EventHandler onloadedmetadata;
-  attribute EventHandler onloadend;
   attribute EventHandler onloadstart;
   attribute EventHandler onmousedown;
   [LenientThis] attribute EventHandler onmouseenter;
@@ -1814,9 +1883,12 @@ interface mixin WindowOrWorkerGlobalScope {
   long setInterval(TimerHandler handler, optional long timeout = 0, any... arguments);
   void clearInterval(optional long handle = 0);
 
+  // microtask queuing
+  void queueMicrotask(VoidFunction callback);
+
   // ImageBitmap
-  Promise<ImageBitmap> createImageBitmap(ImageBitmapSource image, optional ImageBitmapOptions options);
-  Promise<ImageBitmap> createImageBitmap(ImageBitmapSource image, long sx, long sy, long sw, long sh, optional ImageBitmapOptions options);
+  Promise<ImageBitmap> createImageBitmap(ImageBitmapSource image, optional ImageBitmapOptions options = {});
+  Promise<ImageBitmap> createImageBitmap(ImageBitmapSource image, long sx, long sy, long sw, long sh, optional ImageBitmapOptions options = {});
 };
 Window includes WindowOrWorkerGlobalScope;
 WorkerGlobalScope includes WindowOrWorkerGlobalScope;
@@ -1843,11 +1915,9 @@ interface mixin NavigatorID {
   readonly attribute DOMString userAgent;
   [Exposed=Window] readonly attribute DOMString vendor;
   [Exposed=Window] readonly attribute DOMString vendorSub; // constant ""
-
-  // also has additional members in a partial interface
 };
 
-partial interface NavigatorID {
+partial interface mixin NavigatorID {
   [Exposed=Window] boolean taintEnabled(); // constant false
   [Exposed=Window] readonly attribute DOMString oscpu;
 };
@@ -1933,7 +2003,17 @@ dictionary ImageBitmapOptions {
   ResizeQuality resizeQuality = "low";
 };
 
-[Constructor(DOMString type, optional MessageEventInit eventInitDict), Exposed=(Window,Worker,AudioWorklet)]
+callback FrameRequestCallback = void (DOMHighResTimeStamp time);
+
+interface mixin AnimationFrameProvider {
+  unsigned long requestAnimationFrame(FrameRequestCallback callback);
+  void cancelAnimationFrame(unsigned long handle);
+};
+Window includes AnimationFrameProvider;
+DedicatedWorkerGlobalScope includes AnimationFrameProvider;
+
+[Constructor(DOMString type, optional MessageEventInit eventInitDict = {}),
+ Exposed=(Window,Worker,AudioWorklet)]
 interface MessageEvent : Event {
   readonly attribute any data;
   readonly attribute USVString origin;
@@ -1954,7 +2034,7 @@ dictionary MessageEventInit : EventInit {
 
 typedef (WindowProxy or MessagePort or ServiceWorker) MessageEventSource;
 
-[Constructor(USVString url, optional EventSourceInit eventSourceInitDict), Exposed=(Window,Worker)]
+[Constructor(USVString url, optional EventSourceInit eventSourceInitDict = {}), Exposed=(Window,Worker)]
 interface EventSource : EventTarget {
   readonly attribute USVString url;
   readonly attribute boolean withCredentials;
@@ -2006,7 +2086,8 @@ interface WebSocket : EventTarget {
   void send(ArrayBufferView data);
 };
 
-[Constructor(DOMString type, optional CloseEventInit eventInitDict), Exposed=(Window,Worker)]
+[Constructor(DOMString type, optional CloseEventInit eventInitDict = {}),
+ Exposed=(Window,Worker)]
 interface CloseEvent : Event {
   readonly attribute boolean wasClean;
   readonly attribute unsigned short code;
@@ -2027,7 +2108,8 @@ interface MessageChannel {
 
 [Exposed=(Window,Worker,AudioWorklet), Transferable]
 interface MessagePort : EventTarget {
-  void postMessage(any message, optional sequence<object> transfer = []);
+  void postMessage(any message, sequence<object> transfer);
+  void postMessage(any message, optional PostMessageOptions options = {});
   void start();
   void close();
 
@@ -2036,6 +2118,10 @@ interface MessagePort : EventTarget {
   attribute EventHandler onmessageerror;
 };
 
+dictionary PostMessageOptions {
+  sequence<object> transfer = [];
+};
+
 [Constructor(DOMString name), Exposed=(Window,Worker)]
 interface BroadcastChannel : EventTarget {
   readonly attribute DOMString name;
@@ -2064,7 +2150,8 @@ interface WorkerGlobalScope : EventTarget {
 interface DedicatedWorkerGlobalScope : WorkerGlobalScope {
   [Replaceable] readonly attribute DOMString name;
 
-  void postMessage(any message, optional sequence<object> transfer = []);
+  void postMessage(any message, sequence<object> transfer);
+  void postMessage(any message, optional PostMessageOptions options = {});
 
   void close();
 
@@ -2085,18 +2172,20 @@ interface mixin AbstractWorker {
   attribute EventHandler onerror;
 };
 
-[Constructor(USVString scriptURL, optional WorkerOptions options), Exposed=(Window,Worker)]
+[Constructor(USVString scriptURL, optional WorkerOptions options = {}),
+ Exposed=(Window,Worker)]
 interface Worker : EventTarget {
   void terminate();
 
-  void postMessage(any message, optional sequence<object> transfer = []);
+  void postMessage(any message, sequence<object> transfer);
+  void postMessage(any message, optional PostMessageOptions options = {});
   attribute EventHandler onmessage;
   attribute EventHandler onmessageerror;
 };
 
 dictionary WorkerOptions {
   WorkerType type = "classic";
-  RequestCredentials credentials = "omit"; // credentials is only used if type is "module"
+  RequestCredentials credentials = "same-origin"; // credentials is only used if type is "module"
   DOMString name = "";
 };
 
@@ -2104,7 +2193,7 @@ enum WorkerType { "classic", "module" };
 
 Worker includes AbstractWorker;
 
-[Constructor(USVString scriptURL, optional (DOMString or WorkerOptions) options),
+[Constructor(USVString scriptURL, optional (DOMString or WorkerOptions) options = {}),
  Exposed=(Window,Worker)]
 interface SharedWorker : EventTarget {
   readonly attribute MessagePort port;
@@ -2156,13 +2245,15 @@ interface mixin WindowLocalStorage {
 Window includes WindowLocalStorage;
 
 [Exposed=Window,
- Constructor(DOMString type, optional StorageEventInit eventInitDict)]
+ Constructor(DOMString type, optional StorageEventInit eventInitDict = {})]
 interface StorageEvent : Event {
   readonly attribute DOMString? key;
   readonly attribute DOMString? oldValue;
   readonly attribute DOMString? newValue;
   readonly attribute USVString url;
   readonly attribute Storage? storageArea;
+
+  void initStorageEvent(DOMString type, optional boolean bubbles = false, optional boolean cancelable = false, optional DOMString? key = null, optional DOMString? oldValue = null, optional DOMString? newValue = null, optional USVString url = "", optional Storage? storageArea = null);
 };
 
 dictionary StorageEventInit : EventInit {
@@ -2379,6 +2470,10 @@ partial interface HTMLPreElement {
   [CEReactions] attribute long width;
 };
 
+partial interface HTMLStyleElement {
+  [CEReactions] attribute DOMString type;
+};
+
 partial interface HTMLScriptElement {
   [CEReactions] attribute DOMString charset;
   [CEReactions] attribute DOMString event;
@@ -2457,8 +2552,7 @@ partial interface Window {
   [Replaceable, SameObject] readonly attribute External external;
 };
 
-[Exposed=Window,
- NoInterfaceObject]
+[Exposed=Window]
 interface External {
   void AddSearchProvider();
   void IsSearchProviderInstalled();
diff --git a/LayoutTests/imported/w3c/web-platform-tests/interfaces/mediacapture-streams.idl b/LayoutTests/imported/w3c/web-platform-tests/interfaces/mediacapture-streams.idl
new file mode 100644 (file)
index 0000000..d83777c
--- /dev/null
@@ -0,0 +1,245 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content was automatically extracted by Reffy into reffy-reports
+// (https://github.com/tidoust/reffy-reports)
+// Source: Media Capture and Streams (https://w3c.github.io/mediacapture-main/)
+
+[Exposed=Window,
+ Constructor,
+ Constructor(MediaStream stream),
+ Constructor(sequence<MediaStreamTrack> tracks)]
+interface MediaStream : EventTarget {
+  readonly attribute DOMString id;
+  sequence<MediaStreamTrack> getAudioTracks();
+  sequence<MediaStreamTrack> getVideoTracks();
+  sequence<MediaStreamTrack> getTracks();
+  MediaStreamTrack? getTrackById(DOMString trackId);
+  void addTrack(MediaStreamTrack track);
+  void removeTrack(MediaStreamTrack track);
+  MediaStream clone();
+  readonly attribute boolean active;
+  attribute EventHandler onaddtrack;
+  attribute EventHandler onremovetrack;
+};
+
+[Exposed=Window]
+interface MediaStreamTrack : EventTarget {
+  readonly attribute DOMString kind;
+  readonly attribute DOMString id;
+  readonly attribute DOMString label;
+  attribute boolean enabled;
+  readonly attribute boolean muted;
+  attribute EventHandler onmute;
+  attribute EventHandler onunmute;
+  readonly attribute MediaStreamTrackState readyState;
+  attribute EventHandler onended;
+  MediaStreamTrack clone();
+  void stop();
+  MediaTrackCapabilities getCapabilities();
+  MediaTrackConstraints getConstraints();
+  MediaTrackSettings getSettings();
+  Promise<void> applyConstraints(optional MediaTrackConstraints constraints);
+};
+
+enum MediaStreamTrackState {
+  "live",
+  "ended"
+};
+
+dictionary MediaTrackSupportedConstraints {
+  boolean width = true;
+  boolean height = true;
+  boolean aspectRatio = true;
+  boolean frameRate = true;
+  boolean facingMode = true;
+  boolean resizeMode = true;
+  boolean sampleRate = true;
+  boolean sampleSize = true;
+  boolean echoCancellation = true;
+  boolean autoGainControl = true;
+  boolean noiseSuppression = true;
+  boolean latency = true;
+  boolean channelCount = true;
+  boolean deviceId = true;
+  boolean groupId = true;
+};
+
+dictionary MediaTrackCapabilities {
+  ULongRange width;
+  ULongRange height;
+  DoubleRange aspectRatio;
+  DoubleRange frameRate;
+  sequence<DOMString> facingMode;
+  sequence<DOMString> resizeMode;
+  ULongRange sampleRate;
+  ULongRange sampleSize;
+  sequence<boolean> echoCancellation;
+  sequence<boolean> autoGainControl;
+  sequence<boolean> noiseSuppression;
+  DoubleRange latency;
+  ULongRange channelCount;
+  DOMString deviceId;
+  DOMString groupId;
+};
+
+dictionary MediaTrackConstraints : MediaTrackConstraintSet {
+  sequence<MediaTrackConstraintSet> advanced;
+};
+
+dictionary MediaTrackConstraintSet {
+  ConstrainULong width;
+  ConstrainULong height;
+  ConstrainDouble aspectRatio;
+  ConstrainDouble frameRate;
+  ConstrainDOMString facingMode;
+  ConstrainDOMString resizeMode;
+  ConstrainULong sampleRate;
+  ConstrainULong sampleSize;
+  ConstrainBoolean echoCancellation;
+  ConstrainBoolean autoGainControl;
+  ConstrainBoolean noiseSuppression;
+  ConstrainDouble latency;
+  ConstrainULong channelCount;
+  ConstrainDOMString deviceId;
+  ConstrainDOMString groupId;
+};
+
+dictionary MediaTrackSettings {
+  long width;
+  long height;
+  double aspectRatio;
+  double frameRate;
+  DOMString facingMode;
+  DOMString resizeMode;
+  long sampleRate;
+  long sampleSize;
+  boolean echoCancellation;
+  boolean autoGainControl;
+  boolean noiseSuppression;
+  double latency;
+  long channelCount;
+  DOMString deviceId;
+  DOMString groupId;
+};
+
+enum VideoFacingModeEnum {
+  "user",
+  "environment",
+  "left",
+  "right"
+};
+
+enum VideoResizeModeEnum {
+  "none",
+  "crop-and-scale"
+};
+
+[Exposed=Window, Constructor(DOMString type, MediaStreamTrackEventInit eventInitDict)]
+interface MediaStreamTrackEvent : Event {
+  [SameObject] readonly attribute MediaStreamTrack track;
+};
+
+dictionary MediaStreamTrackEventInit : EventInit {
+  required MediaStreamTrack track;
+};
+
+partial interface Navigator {
+  [SameObject, SecureContext] readonly attribute MediaDevices mediaDevices;
+};
+
+[Exposed=Window, SecureContext]
+interface MediaDevices : EventTarget {
+  attribute EventHandler ondevicechange;
+  Promise<sequence<MediaDeviceInfo>> enumerateDevices();
+};
+
+[Exposed=Window, SecureContext]
+interface MediaDeviceInfo {
+  readonly attribute DOMString deviceId;
+  readonly attribute MediaDeviceKind kind;
+  readonly attribute DOMString label;
+  readonly attribute DOMString groupId;
+  [Default] object toJSON();
+};
+
+enum MediaDeviceKind {
+  "audioinput",
+  "audiooutput",
+  "videoinput"
+};
+
+[Exposed=Window]
+interface InputDeviceInfo : MediaDeviceInfo {
+  MediaTrackCapabilities getCapabilities();
+};
+
+partial interface Navigator {
+  [SecureContext] void getUserMedia(MediaStreamConstraints constraints,
+                                    NavigatorUserMediaSuccessCallback successCallback,
+                                    NavigatorUserMediaErrorCallback errorCallback);
+};
+
+partial interface MediaDevices {
+  MediaTrackSupportedConstraints getSupportedConstraints();
+  Promise<MediaStream> getUserMedia(optional MediaStreamConstraints constraints);
+};
+
+dictionary MediaStreamConstraints {
+  (boolean or MediaTrackConstraints) video = false;
+  (boolean or MediaTrackConstraints) audio = false;
+};
+
+callback NavigatorUserMediaSuccessCallback = void (MediaStream stream);
+
+callback NavigatorUserMediaErrorCallback = void (MediaStreamError error);
+
+typedef object MediaStreamError;
+
+dictionary DoubleRange {
+  double max;
+  double min;
+};
+
+dictionary ConstrainDoubleRange : DoubleRange {
+  double exact;
+  double ideal;
+};
+
+dictionary ULongRange {
+  [Clamp] unsigned long max;
+  [Clamp] unsigned long min;
+};
+
+dictionary ConstrainULongRange : ULongRange {
+  [Clamp] unsigned long exact;
+  [Clamp] unsigned long ideal;
+};
+
+dictionary ConstrainBooleanParameters {
+  boolean exact;
+  boolean ideal;
+};
+
+dictionary ConstrainDOMStringParameters {
+  (DOMString or sequence<DOMString>) exact;
+  (DOMString or sequence<DOMString>) ideal;
+};
+
+typedef ([Clamp] unsigned long or ConstrainULongRange) ConstrainULong;
+
+typedef (double or ConstrainDoubleRange) ConstrainDouble;
+
+typedef (boolean or ConstrainBooleanParameters) ConstrainBoolean;
+
+typedef (DOMString or
+sequence<DOMString> or
+ConstrainDOMStringParameters) ConstrainDOMString;
+
+dictionary Capabilities {};
+
+dictionary Settings {};
+
+dictionary ConstraintSet {};
+
+dictionary Constraints : ConstraintSet {
+  sequence<ConstraintSet> advanced;
+};
diff --git a/LayoutTests/imported/w3c/web-platform-tests/interfaces/performance-timeline.idl b/LayoutTests/imported/w3c/web-platform-tests/interfaces/performance-timeline.idl
new file mode 100644 (file)
index 0000000..d9362ea
--- /dev/null
@@ -0,0 +1,43 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content was automatically extracted by Reffy into reffy-reports
+// (https://github.com/tidoust/reffy-reports)
+// Source: Performance Timeline Level 2 (https://w3c.github.io/performance-timeline/)
+
+partial interface Performance {
+  PerformanceEntryList getEntries();
+  PerformanceEntryList getEntriesByType(DOMString type);
+  PerformanceEntryList getEntriesByName(DOMString name, optional DOMString type);
+};
+typedef sequence<PerformanceEntry> PerformanceEntryList;
+
+[Exposed=(Window,Worker)]
+interface PerformanceEntry {
+  readonly    attribute DOMString name;
+  readonly    attribute DOMString entryType;
+  readonly    attribute DOMHighResTimeStamp startTime;
+  readonly    attribute DOMHighResTimeStamp duration;
+  [Default] object toJSON();
+};
+
+callback PerformanceObserverCallback = void (PerformanceObserverEntryList entries,
+                                             PerformanceObserver observer);
+[Constructor(PerformanceObserverCallback callback), Exposed=(Window,Worker)]
+interface PerformanceObserver {
+  void observe (optional PerformanceObserverInit options = {});
+  void disconnect ();
+  PerformanceEntryList takeRecords();
+  [SameObject] static readonly attribute FrozenArray<DOMString> supportedEntryTypes;
+};
+
+dictionary PerformanceObserverInit {
+  sequence<DOMString> entryTypes;
+  DOMString type;
+  boolean buffered;
+};
+
+[Exposed=(Window,Worker)]
+interface PerformanceObserverEntryList {
+  PerformanceEntryList getEntries();
+  PerformanceEntryList getEntriesByType(DOMString type);
+  PerformanceEntryList getEntriesByName(DOMString name, optional DOMString type);
+};
diff --git a/LayoutTests/imported/w3c/web-platform-tests/interfaces/resource-timing.idl b/LayoutTests/imported/w3c/web-platform-tests/interfaces/resource-timing.idl
new file mode 100644 (file)
index 0000000..fc14253
--- /dev/null
@@ -0,0 +1,32 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content was automatically extracted by Reffy into reffy-reports
+// (https://github.com/tidoust/reffy-reports)
+// Source: Resource Timing Level 2 (https://w3c.github.io/resource-timing/)
+
+[Exposed=(Window,Worker)]
+interface PerformanceResourceTiming : PerformanceEntry {
+    readonly        attribute DOMString initiatorType;
+    readonly        attribute DOMString nextHopProtocol;
+    readonly        attribute DOMHighResTimeStamp workerStart;
+    readonly        attribute DOMHighResTimeStamp redirectStart;
+    readonly        attribute DOMHighResTimeStamp redirectEnd;
+    readonly        attribute DOMHighResTimeStamp fetchStart;
+    readonly        attribute DOMHighResTimeStamp domainLookupStart;
+    readonly        attribute DOMHighResTimeStamp domainLookupEnd;
+    readonly        attribute DOMHighResTimeStamp connectStart;
+    readonly        attribute DOMHighResTimeStamp connectEnd;
+    readonly        attribute DOMHighResTimeStamp secureConnectionStart;
+    readonly        attribute DOMHighResTimeStamp requestStart;
+    readonly        attribute DOMHighResTimeStamp responseStart;
+    readonly        attribute DOMHighResTimeStamp responseEnd;
+    readonly        attribute unsigned long long transferSize;
+    readonly        attribute unsigned long long encodedBodySize;
+    readonly        attribute unsigned long long decodedBodySize;
+    [Default] object toJSON();
+};
+
+partial interface Performance {
+  void clearResourceTimings();
+  void setResourceTimingBufferSize(unsigned long maxSize);
+              attribute EventHandler onresourcetimingbufferfull;
+};
index fb2e033..0feabd3 100644 (file)
@@ -1,13 +1,14 @@
 // GENERATED CONTENT - DO NOT EDIT
 // Content was automatically extracted by Reffy into reffy-reports
 // (https://github.com/tidoust/reffy-reports)
-// Source: Service Workers 1 (https://w3c.github.io/ServiceWorker/v1/)
+// Source: Service Workers Nightly (https://w3c.github.io/ServiceWorker/)
 
 [SecureContext, Exposed=(Window,Worker)]
 interface ServiceWorker : EventTarget {
   readonly attribute USVString scriptURL;
   readonly attribute ServiceWorkerState state;
-  void postMessage(any message, optional sequence<object> transfer = []);
+  void postMessage(any message, sequence<object> transfer);
+  void postMessage(any message, optional PostMessageOptions options = {});
 
   // event
   attribute EventHandler onstatechange;
@@ -15,6 +16,7 @@ interface ServiceWorker : EventTarget {
 ServiceWorker includes AbstractWorker;
 
 enum ServiceWorkerState {
+  "parsed",
   "installing",
   "installed",
   "activating",
@@ -27,6 +29,7 @@ interface ServiceWorkerRegistration : EventTarget {
   readonly attribute ServiceWorker? installing;
   readonly attribute ServiceWorker? waiting;
   readonly attribute ServiceWorker? active;
+  [SameObject] readonly attribute NavigationPreloadManager navigationPreload;
 
   readonly attribute USVString scope;
   readonly attribute ServiceWorkerUpdateViaCache updateViaCache;
@@ -57,7 +60,7 @@ interface ServiceWorkerContainer : EventTarget {
   readonly attribute ServiceWorker? controller;
   readonly attribute Promise<ServiceWorkerRegistration> ready;
 
-  [NewObject] Promise<ServiceWorkerRegistration> register(USVString scriptURL, optional RegistrationOptions options);
+  [NewObject] Promise<ServiceWorkerRegistration> register(USVString scriptURL, optional RegistrationOptions options = {});
 
   [NewObject] Promise<any> getRegistration(optional USVString clientURL = "");
   [NewObject] Promise<FrozenArray<ServiceWorkerRegistration>> getRegistrations();
@@ -76,10 +79,24 @@ dictionary RegistrationOptions {
   ServiceWorkerUpdateViaCache updateViaCache = "imports";
 };
 
+[SecureContext, Exposed=(Window,Worker)]
+interface NavigationPreloadManager {
+  Promise<void> enable();
+  Promise<void> disable();
+  Promise<void> setHeaderValue(ByteString value);
+  Promise<NavigationPreloadState> getState();
+};
+
+dictionary NavigationPreloadState {
+  boolean enabled = false;
+  ByteString headerValue;
+};
+
 [Global=(Worker,ServiceWorker), Exposed=ServiceWorker]
 interface ServiceWorkerGlobalScope : WorkerGlobalScope {
   [SameObject] readonly attribute Clients clients;
   [SameObject] readonly attribute ServiceWorkerRegistration registration;
+  [SameObject] readonly attribute ServiceWorker serviceWorker;
 
   [NewObject] Promise<void> skipWaiting();
 
@@ -87,8 +104,7 @@ interface ServiceWorkerGlobalScope : WorkerGlobalScope {
   attribute EventHandler onactivate;
   attribute EventHandler onfetch;
 
-  // event
-  attribute EventHandler onmessage; // event.source of the message events is Client object
+  attribute EventHandler onmessage;
   attribute EventHandler onmessageerror;
 };
 
@@ -98,7 +114,8 @@ interface Client {
   readonly attribute FrameType frameType;
   readonly attribute DOMString id;
   readonly attribute ClientType type;
-  void postMessage(any message, optional sequence<object> transfer = []);
+  void postMessage(any message, sequence<object> transfer);
+  void postMessage(any message, optional PostMessageOptions options = {});
 };
 
 [Exposed=ServiceWorker]
@@ -121,7 +138,7 @@ enum FrameType {
 interface Clients {
   // The objects returned will be new instances every time
   [NewObject] Promise<any> get(DOMString id);
-  [NewObject] Promise<FrozenArray<Client>> matchAll(optional ClientQueryOptions options);
+  [NewObject] Promise<FrozenArray<Client>> matchAll(optional ClientQueryOptions options = {});
   [NewObject] Promise<WindowClient?> openWindow(USVString url);
   [NewObject] Promise<void> claim();
 };
@@ -138,7 +155,7 @@ enum ClientType {
   "all"
 };
 
-[Constructor(DOMString type, optional ExtendableEventInit eventInitDict), Exposed=ServiceWorker]
+[Constructor(DOMString type, optional ExtendableEventInit eventInitDict = {}), Exposed=ServiceWorker]
 interface ExtendableEvent : Event {
   void waitUntil(Promise<any> f);
 };
@@ -150,17 +167,23 @@ dictionary ExtendableEventInit : EventInit {
 [Constructor(DOMString type, FetchEventInit eventInitDict), Exposed=ServiceWorker]
 interface FetchEvent : ExtendableEvent {
   [SameObject] readonly attribute Request request;
+  readonly attribute Promise<any> preloadResponse;
   readonly attribute DOMString clientId;
+  readonly attribute DOMString resultingClientId;
+  readonly attribute DOMString replacesClientId;
 
   void respondWith(Promise<Response> r);
 };
 
 dictionary FetchEventInit : ExtendableEventInit {
   required Request request;
+  Promise<any> preloadResponse;
   DOMString clientId = "";
+  DOMString resultingClientId = "";
+  DOMString replacesClientId = "";
 };
 
-[Constructor(DOMString type, optional ExtendableMessageEventInit eventInitDict), Exposed=ServiceWorker]
+[Constructor(DOMString type, optional ExtendableMessageEventInit eventInitDict = {}), Exposed=ServiceWorker]
 interface ExtendableMessageEvent : ExtendableEvent {
   readonly attribute any data;
   readonly attribute USVString origin;
@@ -177,19 +200,19 @@ dictionary ExtendableMessageEventInit : ExtendableEventInit {
   sequence<MessagePort> ports = [];
 };
 
-partial interface WindowOrWorkerGlobalScope {
+partial interface mixin WindowOrWorkerGlobalScope {
   [SecureContext, SameObject] readonly attribute CacheStorage caches;
 };
 
 [SecureContext, Exposed=(Window,Worker)]
 interface Cache {
-  [NewObject] Promise<any> match(RequestInfo request, optional CacheQueryOptions options);
-  [NewObject] Promise<FrozenArray<Response>> matchAll(optional RequestInfo request, optional CacheQueryOptions options);
+  [NewObject] Promise<any> match(RequestInfo request, optional CacheQueryOptions options = {});
+  [NewObject] Promise<FrozenArray<Response>> matchAll(optional RequestInfo request, optional CacheQueryOptions options = {});
   [NewObject] Promise<void> add(RequestInfo request);
   [NewObject] Promise<void> addAll(sequence<RequestInfo> requests);
   [NewObject] Promise<void> put(RequestInfo request, Response response);
-  [NewObject] Promise<boolean> delete(RequestInfo request, optional CacheQueryOptions options);
-  [NewObject] Promise<FrozenArray<Request>> keys(optional RequestInfo request, optional CacheQueryOptions options);
+  [NewObject] Promise<boolean> delete(RequestInfo request, optional CacheQueryOptions options = {});
+  [NewObject] Promise<FrozenArray<Request>> keys(optional RequestInfo request, optional CacheQueryOptions options = {});
 };
 
 dictionary CacheQueryOptions {
@@ -200,7 +223,7 @@ dictionary CacheQueryOptions {
 
 [SecureContext, Exposed=(Window,Worker)]
 interface CacheStorage {
-  [NewObject] Promise<any> match(RequestInfo request, optional MultiCacheQueryOptions options);
+  [NewObject] Promise<any> match(RequestInfo request, optional MultiCacheQueryOptions options = {});
   [NewObject] Promise<boolean> has(DOMString cacheName);
   [NewObject] Promise<Cache> open(DOMString cacheName);
   [NewObject] Promise<boolean> delete(DOMString cacheName);
diff --git a/LayoutTests/imported/w3c/web-platform-tests/interfaces/webrtc.idl b/LayoutTests/imported/w3c/web-platform-tests/interfaces/webrtc.idl
new file mode 100644 (file)
index 0000000..f56ff80
--- /dev/null
@@ -0,0 +1,674 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content was automatically extracted by Reffy into reffy-reports
+// (https://github.com/tidoust/reffy-reports)
+// Source: WebRTC 1.0: Real-time Communication Between Browsers (https://w3c.github.io/webrtc-pc/)
+
+dictionary RTCConfiguration {
+  sequence<RTCIceServer> iceServers;
+  RTCIceTransportPolicy iceTransportPolicy;
+  RTCBundlePolicy bundlePolicy;
+  RTCRtcpMuxPolicy rtcpMuxPolicy;
+  DOMString peerIdentity;
+  sequence<RTCCertificate> certificates;
+  [EnforceRange] octet iceCandidatePoolSize = 0;
+};
+
+enum RTCIceCredentialType {
+  "password",
+  "oauth"
+};
+
+dictionary RTCOAuthCredential {
+  required DOMString macKey;
+  required DOMString accessToken;
+};
+
+dictionary RTCIceServer {
+  required (DOMString or sequence<DOMString>) urls;
+  DOMString username;
+  (DOMString or RTCOAuthCredential) credential;
+  RTCIceCredentialType credentialType = "password";
+};
+
+enum RTCIceTransportPolicy {
+  "relay",
+  "all"
+};
+
+enum RTCBundlePolicy {
+  "balanced",
+  "max-compat",
+  "max-bundle"
+};
+
+enum RTCRtcpMuxPolicy {
+  // At risk due to lack of implementers' interest.
+  "negotiate",
+  "require"
+};
+
+dictionary RTCOfferAnswerOptions {
+  boolean voiceActivityDetection = true;
+};
+
+dictionary RTCOfferOptions : RTCOfferAnswerOptions {
+  boolean iceRestart = false;
+};
+
+dictionary RTCAnswerOptions : RTCOfferAnswerOptions {};
+
+enum RTCSignalingState {
+  "stable",
+  "have-local-offer",
+  "have-remote-offer",
+  "have-local-pranswer",
+  "have-remote-pranswer",
+  "closed"
+};
+
+enum RTCIceGatheringState {
+  "new",
+  "gathering",
+  "complete"
+};
+
+enum RTCPeerConnectionState {
+  "closed",
+  "failed",
+  "disconnected",
+  "new",
+  "connecting",
+  "connected"
+};
+
+enum RTCIceConnectionState {
+  "closed",
+  "failed",
+  "disconnected",
+  "new",
+  "checking",
+  "completed",
+  "connected"
+};
+
+[Exposed=Window, Constructor(optional RTCConfiguration configuration)]
+interface RTCPeerConnection : EventTarget {
+  Promise<RTCSessionDescriptionInit> createOffer(optional RTCOfferOptions options);
+  Promise<RTCSessionDescriptionInit> createAnswer(optional RTCAnswerOptions options);
+  Promise<void> setLocalDescription(optional RTCSessionDescriptionInit description);
+  readonly attribute RTCSessionDescription? localDescription;
+  readonly attribute RTCSessionDescription? currentLocalDescription;
+  readonly attribute RTCSessionDescription? pendingLocalDescription;
+  Promise<void> setRemoteDescription(optional RTCSessionDescriptionInit description);
+  readonly attribute RTCSessionDescription? remoteDescription;
+  readonly attribute RTCSessionDescription? currentRemoteDescription;
+  readonly attribute RTCSessionDescription? pendingRemoteDescription;
+  Promise<void> addIceCandidate(optional RTCIceCandidateInit candidate);
+  readonly attribute RTCSignalingState signalingState;
+  readonly attribute RTCIceGatheringState iceGatheringState;
+  readonly attribute RTCIceConnectionState iceConnectionState;
+  readonly attribute RTCPeerConnectionState connectionState;
+  readonly attribute boolean? canTrickleIceCandidates;
+  void restartIce();
+  static sequence<RTCIceServer> getDefaultIceServers();
+  RTCConfiguration getConfiguration();
+  void setConfiguration(RTCConfiguration configuration);
+  void close();
+  attribute EventHandler onnegotiationneeded;
+  attribute EventHandler onicecandidate;
+  attribute EventHandler onicecandidateerror;
+  attribute EventHandler onsignalingstatechange;
+  attribute EventHandler oniceconnectionstatechange;
+  attribute EventHandler onicegatheringstatechange;
+  attribute EventHandler onconnectionstatechange;
+};
+
+partial interface RTCPeerConnection {
+  Promise<void> createOffer(RTCSessionDescriptionCallback successCallback,
+                            RTCPeerConnectionErrorCallback failureCallback,
+                            optional RTCOfferOptions options);
+  Promise<void> setLocalDescription(optional RTCSessionDescriptionInit description,
+                                    VoidFunction successCallback,
+                                    RTCPeerConnectionErrorCallback failureCallback);
+  Promise<void> createAnswer(RTCSessionDescriptionCallback successCallback,
+                             RTCPeerConnectionErrorCallback failureCallback);
+  Promise<void> setRemoteDescription(optional RTCSessionDescriptionInit description,
+                                     VoidFunction successCallback,
+                                     RTCPeerConnectionErrorCallback failureCallback);
+  Promise<void> addIceCandidate(RTCIceCandidateInit candidate,
+                                VoidFunction successCallback,
+                                RTCPeerConnectionErrorCallback failureCallback);
+};
+
+callback RTCPeerConnectionErrorCallback = void (DOMException error);
+
+callback RTCSessionDescriptionCallback = void (RTCSessionDescriptionInit description);
+
+partial dictionary RTCOfferOptions {
+  boolean offerToReceiveAudio;
+  boolean offerToReceiveVideo;
+};
+
+enum RTCSdpType {
+  "offer",
+  "pranswer",
+  "answer",
+  "rollback"
+};
+
+[Exposed=Window, Constructor(optional RTCSessionDescriptionInit descriptionInitDict)]
+interface RTCSessionDescription {
+  readonly attribute RTCSdpType type;
+  readonly attribute DOMString sdp;
+  [Default] object toJSON();
+};
+
+dictionary RTCSessionDescriptionInit {
+  RTCSdpType type;
+  DOMString sdp = "";
+};
+
+[Exposed=Window, Constructor(optional RTCIceCandidateInit candidateInitDict)]
+interface RTCIceCandidate {
+  readonly attribute DOMString candidate;
+  readonly attribute DOMString? sdpMid;
+  readonly attribute unsigned short? sdpMLineIndex;
+  readonly attribute DOMString? foundation;
+  readonly attribute RTCIceComponent? component;
+  readonly attribute unsigned long? priority;
+  readonly attribute DOMString? address;
+  readonly attribute RTCIceProtocol? protocol;
+  readonly attribute unsigned short? port;
+  readonly attribute RTCIceCandidateType? type;
+  readonly attribute RTCIceTcpCandidateType? tcpType;
+  readonly attribute DOMString? relatedAddress;
+  readonly attribute unsigned short? relatedPort;
+  readonly attribute DOMString? usernameFragment;
+  RTCIceCandidateInit toJSON();
+};
+
+dictionary RTCIceCandidateInit {
+  DOMString candidate = "";
+  DOMString? sdpMid = null;
+  unsigned short? sdpMLineIndex = null;
+  DOMString? usernameFragment = null;
+};
+
+enum RTCIceProtocol {
+  "udp",
+  "tcp"
+};
+
+enum RTCIceTcpCandidateType {
+  "active",
+  "passive",
+  "so"
+};
+
+enum RTCIceCandidateType {
+  "host",
+  "srflx",
+  "prflx",
+  "relay"
+};
+
+[Exposed=Window,
+ Constructor(DOMString type, optional RTCPeerConnectionIceEventInit eventInitDict)]
+interface RTCPeerConnectionIceEvent : Event {
+  readonly attribute RTCIceCandidate? candidate;
+  readonly attribute DOMString? url;
+};
+
+dictionary RTCPeerConnectionIceEventInit : EventInit {
+  RTCIceCandidate? candidate;
+  DOMString? url;
+};
+
+[Exposed=Window,
+ Constructor(DOMString type, RTCPeerConnectionIceErrorEventInit eventInitDict)]
+interface RTCPeerConnectionIceErrorEvent : Event {
+  readonly attribute DOMString hostCandidate;
+  readonly attribute DOMString url;
+  readonly attribute unsigned short errorCode;
+  readonly attribute USVString errorText;
+};
+
+dictionary RTCPeerConnectionIceErrorEventInit : EventInit {
+  DOMString hostCandidate;
+  DOMString url;
+  required unsigned short errorCode;
+  USVString statusText;
+};
+
+enum RTCPriorityType {
+  "very-low",
+  "low",
+  "medium",
+  "high"
+};
+
+partial interface RTCPeerConnection {
+  static Promise<RTCCertificate> generateCertificate(AlgorithmIdentifier keygenAlgorithm);
+};
+
+dictionary RTCCertificateExpiration {
+  [EnforceRange] DOMTimeStamp expires;
+};
+
+[Exposed=Window, Serializable]
+interface RTCCertificate {
+  readonly attribute DOMTimeStamp expires;
+  static sequence<AlgorithmIdentifier> getSupportedAlgorithms();
+  sequence<RTCDtlsFingerprint> getFingerprints();
+};
+
+partial interface RTCPeerConnection {
+  sequence<RTCRtpSender> getSenders();
+  sequence<RTCRtpReceiver> getReceivers();
+  sequence<RTCRtpTransceiver> getTransceivers();
+  RTCRtpSender addTrack(MediaStreamTrack track, MediaStream... streams);
+  void removeTrack(RTCRtpSender sender);
+  RTCRtpTransceiver addTransceiver((MediaStreamTrack or DOMString) trackOrKind,
+                                   optional RTCRtpTransceiverInit init);
+  attribute EventHandler ontrack;
+};
+
+dictionary RTCRtpTransceiverInit {
+  RTCRtpTransceiverDirection direction = "sendrecv";
+  sequence<MediaStream> streams = [];
+  sequence<RTCRtpEncodingParameters> sendEncodings = [];
+};
+
+enum RTCRtpTransceiverDirection {
+  "sendrecv",
+  "sendonly",
+  "recvonly",
+  "inactive",
+  "stopped"
+};
+
+[Exposed=Window]
+interface RTCRtpSender {
+  readonly attribute MediaStreamTrack? track;
+  readonly attribute RTCDtlsTransport? transport;
+  readonly attribute RTCDtlsTransport? rtcpTransport;
+  static RTCRtpCapabilities? getCapabilities(DOMString kind);
+  Promise<void> setParameters(RTCRtpSendParameters parameters);
+  RTCRtpSendParameters getParameters();
+  Promise<void> replaceTrack(MediaStreamTrack? withTrack);
+  void setStreams(MediaStream... streams);
+  Promise<RTCStatsReport> getStats();
+};
+
+dictionary RTCRtpParameters {
+  required sequence<RTCRtpHeaderExtensionParameters> headerExtensions;
+  required RTCRtcpParameters rtcp;
+  required sequence<RTCRtpCodecParameters> codecs;
+};
+
+dictionary RTCRtpSendParameters : RTCRtpParameters {
+  required DOMString transactionId;
+  required sequence<RTCRtpEncodingParameters> encodings;
+  RTCDegradationPreference degradationPreference = "balanced";
+  RTCPriorityType priority = "low";
+};
+
+dictionary RTCRtpReceiveParameters : RTCRtpParameters {
+  required sequence<RTCRtpDecodingParameters> encodings;
+};
+
+dictionary RTCRtpCodingParameters {
+  DOMString rid;
+};
+
+dictionary RTCRtpDecodingParameters : RTCRtpCodingParameters {};
+
+dictionary RTCRtpEncodingParameters : RTCRtpCodingParameters {
+  octet codecPayloadType;
+  RTCDtxStatus dtx;
+  boolean active = true;
+  unsigned long ptime;
+  unsigned long maxBitrate;
+  double maxFramerate;
+  double scaleResolutionDownBy;
+};
+
+enum RTCDtxStatus {
+  "disabled",
+  "enabled"
+};
+
+enum RTCDegradationPreference {
+  "maintain-framerate",
+  "maintain-resolution",
+  "balanced"
+};
+
+dictionary RTCRtcpParameters {
+  DOMString cname;
+  boolean reducedSize;
+};
+
+dictionary RTCRtpHeaderExtensionParameters {
+  required DOMString uri;
+  required unsigned short id;
+  boolean encrypted = false;
+};
+
+dictionary RTCRtpCodecParameters {
+  required octet payloadType;
+  required DOMString mimeType;
+  required unsigned long clockRate;
+  unsigned short channels;
+  DOMString sdpFmtpLine;
+};
+
+dictionary RTCRtpCapabilities {
+  required sequence<RTCRtpCodecCapability> codecs;
+  required sequence<RTCRtpHeaderExtensionCapability> headerExtensions;
+};
+
+dictionary RTCRtpCodecCapability {
+  required DOMString mimeType;
+  required unsigned long clockRate;
+  unsigned short channels;
+  DOMString sdpFmtpLine;
+};
+
+dictionary RTCRtpHeaderExtensionCapability {
+  DOMString uri;
+};
+
+[Exposed=Window]
+interface RTCRtpReceiver {
+  readonly attribute MediaStreamTrack track;
+  readonly attribute RTCDtlsTransport? transport;
+  readonly attribute RTCDtlsTransport? rtcpTransport;
+  static RTCRtpCapabilities? getCapabilities(DOMString kind);
+  RTCRtpReceiveParameters getParameters();
+  sequence<RTCRtpContributingSource> getContributingSources();
+  sequence<RTCRtpSynchronizationSource> getSynchronizationSources();
+  Promise<RTCStatsReport> getStats();
+};
+
+dictionary RTCRtpContributingSource {
+  required DOMHighResTimeStamp timestamp;
+  required unsigned long source;
+  double audioLevel;
+  required unsigned long rtpTimestamp;
+};
+
+dictionary RTCRtpSynchronizationSource : RTCRtpContributingSource {
+  boolean voiceActivityFlag;
+};
+
+[Exposed=Window]
+interface RTCRtpTransceiver {
+  readonly attribute DOMString? mid;
+  [SameObject] readonly attribute RTCRtpSender sender;
+  [SameObject] readonly attribute RTCRtpReceiver receiver;
+  attribute RTCRtpTransceiverDirection direction;
+  readonly attribute RTCRtpTransceiverDirection? currentDirection;
+  void stop();
+  void setCodecPreferences(sequence<RTCRtpCodecCapability> codecs);
+};
+
+[Exposed=Window]
+interface RTCDtlsTransport : EventTarget {
+  [SameObject] readonly attribute RTCIceTransport iceTransport;
+  readonly attribute RTCDtlsTransportState state;
+  sequence<ArrayBuffer> getRemoteCertificates();
+  attribute EventHandler onstatechange;
+  attribute EventHandler onerror;
+};
+
+enum RTCDtlsTransportState {
+  "new",
+  "connecting",
+  "connected",
+  "closed",
+  "failed"
+};
+
+dictionary RTCDtlsFingerprint {
+  DOMString algorithm;
+  DOMString value;
+};
+
+[Exposed=Window]
+interface RTCIceTransport : EventTarget {
+  readonly attribute RTCIceRole role;
+  readonly attribute RTCIceComponent component;
+  readonly attribute RTCIceTransportState state;
+  readonly attribute RTCIceGathererState gatheringState;
+  sequence<RTCIceCandidate> getLocalCandidates();
+  sequence<RTCIceCandidate> getRemoteCandidates();
+  RTCIceCandidatePair? getSelectedCandidatePair();
+  RTCIceParameters? getLocalParameters();
+  RTCIceParameters? getRemoteParameters();
+  attribute EventHandler onstatechange;
+  attribute EventHandler ongatheringstatechange;
+  attribute EventHandler onselectedcandidatepairchange;
+};
+
+dictionary RTCIceParameters {
+  DOMString usernameFragment;
+  DOMString password;
+};
+
+dictionary RTCIceCandidatePair {
+  RTCIceCandidate local;
+  RTCIceCandidate remote;
+};
+
+enum RTCIceGathererState {
+  "new",
+  "gathering",
+  "complete"
+};
+
+enum RTCIceTransportState {
+  "new",
+  "checking",
+  "connected",
+  "completed",
+  "disconnected",
+  "failed",
+  "closed"
+};
+
+enum RTCIceRole {
+  "unknown",
+  "controlling",
+  "controlled"
+};
+
+enum RTCIceComponent {
+  "rtp",
+  "rtcp"
+};
+
+[Exposed=Window, Constructor(DOMString type, RTCTrackEventInit eventInitDict)]
+interface RTCTrackEvent : Event {
+  readonly attribute RTCRtpReceiver receiver;
+  readonly attribute MediaStreamTrack track;
+  [SameObject] readonly attribute FrozenArray<MediaStream> streams;
+  readonly attribute RTCRtpTransceiver transceiver;
+};
+
+dictionary RTCTrackEventInit : EventInit {
+  required RTCRtpReceiver receiver;
+  required MediaStreamTrack track;
+  sequence<MediaStream> streams = [];
+  required RTCRtpTransceiver transceiver;
+};
+
+partial interface RTCPeerConnection {
+  readonly attribute RTCSctpTransport? sctp;
+  RTCDataChannel createDataChannel(USVString label,
+                                   optional RTCDataChannelInit dataChannelDict);
+  attribute EventHandler ondatachannel;
+};
+
+[Exposed=Window]
+interface RTCSctpTransport : EventTarget {
+  readonly attribute RTCDtlsTransport transport;
+  readonly attribute RTCSctpTransportState state;
+  readonly attribute unrestricted double maxMessageSize;
+  readonly attribute unsigned short? maxChannels;
+  attribute EventHandler onstatechange;
+};
+
+enum RTCSctpTransportState {
+  "connecting",
+  "connected",
+  "closed"
+};
+
+[Exposed=Window]
+interface RTCDataChannel : EventTarget {
+  readonly attribute USVString label;
+  readonly attribute boolean ordered;
+  readonly attribute unsigned short? maxPacketLifeTime;
+  readonly attribute unsigned short? maxRetransmits;
+  readonly attribute USVString protocol;
+  readonly attribute boolean negotiated;
+  readonly attribute unsigned short? id;
+  readonly attribute RTCPriorityType priority;
+  readonly attribute RTCDataChannelState readyState;
+  readonly attribute unsigned long bufferedAmount;
+  [EnforceRange] attribute unsigned long bufferedAmountLowThreshold;
+  attribute EventHandler onopen;
+  attribute EventHandler onbufferedamountlow;
+  attribute EventHandler onerror;
+  attribute EventHandler onclosing;
+  attribute EventHandler onclose;
+  void close();
+  attribute EventHandler onmessage;
+  attribute DOMString binaryType;
+  void send(USVString data);
+  void send(Blob data);
+  void send(ArrayBuffer data);
+  void send(ArrayBufferView data);
+};
+
+dictionary RTCDataChannelInit {
+  boolean ordered = true;
+  [EnforceRange] unsigned short maxPacketLifeTime;
+  [EnforceRange] unsigned short maxRetransmits;
+  USVString protocol = "";
+  boolean negotiated = false;
+  [EnforceRange] unsigned short id;
+  RTCPriorityType priority = "low";
+};
+
+enum RTCDataChannelState {
+  "connecting",
+  "open",
+  "closing",
+  "closed"
+};
+
+[Exposed=Window, Constructor(DOMString type, RTCDataChannelEventInit eventInitDict)]
+interface RTCDataChannelEvent : Event {
+  readonly attribute RTCDataChannel channel;
+};
+
+dictionary RTCDataChannelEventInit : EventInit {
+  required RTCDataChannel channel;
+};
+
+partial interface RTCRtpSender {
+  readonly attribute RTCDTMFSender? dtmf;
+};
+
+[Exposed=Window]
+interface RTCDTMFSender : EventTarget {
+  void insertDTMF(DOMString tones, optional unsigned long duration = 100, optional unsigned long interToneGap = 70);
+  attribute EventHandler ontonechange;
+  readonly attribute boolean canInsertDTMF;
+  readonly attribute DOMString toneBuffer;
+};
+
+[Exposed=Window,
+ Constructor(DOMString type, RTCDTMFToneChangeEventInit eventInitDict)]
+interface RTCDTMFToneChangeEvent : Event {
+  readonly attribute DOMString tone;
+};
+
+dictionary RTCDTMFToneChangeEventInit : EventInit {
+  required DOMString tone;
+};
+
+partial interface RTCPeerConnection {
+  Promise<RTCStatsReport> getStats(optional MediaStreamTrack? selector = null);
+  attribute EventHandler onstatsended;
+};
+
+[Exposed=Window]
+interface RTCStatsReport {
+  readonly maplike<DOMString, object>;
+};
+
+dictionary RTCStats {
+  required DOMHighResTimeStamp timestamp;
+  required RTCStatsType type;
+  required DOMString id;
+};
+
+[Exposed=Window,
+ Constructor(DOMString type, RTCStatsEventInit eventInitDict)]
+interface RTCStatsEvent : Event {
+  readonly attribute RTCStatsReport report;
+};
+
+dictionary RTCStatsEventInit : EventInit {
+  required RTCStatsReport report;
+};
+
+[Exposed=Window, Constructor(RTCErrorInit init, optional DOMString message = "")]
+interface RTCError : DOMException {
+  readonly attribute RTCErrorDetailType errorDetail;
+  readonly attribute long? sdpLineNumber;
+  readonly attribute long? httpRequestStatusCode;
+  readonly attribute long? sctpCauseCode;
+  readonly attribute unsigned long? receivedAlert;
+  readonly attribute unsigned long? sentAlert;
+};
+
+dictionary RTCErrorInit {
+  required RTCErrorDetailType errorDetail;
+  long sdpLineNumber;
+  long httpRequestStatusCode;
+  long sctpCauseCode;
+  unsigned long receivedAlert;
+  unsigned long sentAlert;
+};
+
+enum RTCErrorDetailType {
+  "data-channel-failure",
+  "dtls-failure",
+  "fingerprint-failure",
+  "idp-bad-script-failure",
+  "idp-execution-failure",
+  "idp-load-failure",
+  "idp-need-login",
+  "idp-timeout",
+  "idp-tls-failure",
+  "idp-token-expired",
+  "idp-token-invalid",
+  "sctp-failure",
+  "sdp-syntax-error",
+  "hardware-encoder-not-available",
+  "hardware-encoder-error"
+};
+
+[Exposed=Window,
+ Constructor(DOMString type, RTCErrorEventInit eventInitDict)]
+interface RTCErrorEvent : Event {
+  [SameObject] readonly attribute RTCError error;
+};
+
+dictionary RTCErrorEventInit : EventInit {
+  required RTCError error;
+};
index c4158ad..a51c2b1 100644 (file)
@@ -95,6 +95,10 @@ PASS onfocus: must be on the appropriate locations for GlobalEventHandlers
 PASS onfocus: the default value must be null 
 PASS onfocus: the content attribute must be compiled into a function as the corresponding property 
 PASS onfocus: dispatching an Event at a <math> element must trigger element.onfocus 
+FAIL onformdata: must be on the appropriate locations for GlobalEventHandlers assert_true: MathMLElement has an own property named "onformdata" expected true got false
+FAIL onformdata: the default value must be null assert_equals: The default value of the property is null for a MathMLMathElement instance expected (object) null but got (undefined) undefined
+FAIL onformdata: the content attribute must be compiled into a function as the corresponding property assert_equals: The onformdata property must be a function expected "function" but got "undefined"
+PASS onformdata: dispatching an Event at a <math> element must trigger element.onformdata 
 PASS oninput: must be on the appropriate locations for GlobalEventHandlers 
 PASS oninput: the default value must be null 
 PASS oninput: the content attribute must be compiled into a function as the corresponding property 
@@ -127,10 +131,6 @@ PASS onloadedmetadata: must be on the appropriate locations for GlobalEventHandl
 PASS onloadedmetadata: the default value must be null 
 PASS onloadedmetadata: the content attribute must be compiled into a function as the corresponding property 
 PASS onloadedmetadata: dispatching an Event at a <math> element must trigger element.onloadedmetadata 
-FAIL onloadend: must be on the appropriate locations for GlobalEventHandlers assert_true: MathMLElement has an own property named "onloadend" expected true got false
-FAIL onloadend: the default value must be null assert_equals: The default value of the property is null for a MathMLMathElement instance expected (object) null but got (undefined) undefined
-FAIL onloadend: the content attribute must be compiled into a function as the corresponding property assert_equals: The onloadend property must be a function expected "function" but got "undefined"
-PASS onloadend: dispatching an Event at a <math> element must trigger element.onloadend 
 PASS onloadstart: must be on the appropriate locations for GlobalEventHandlers 
 PASS onloadstart: the default value must be null 
 PASS onloadstart: the content attribute must be compiled into a function as the corresponding property 
index a7ea327..12d5c73 100644 (file)
@@ -1,30 +1,3 @@
 
-FAIL idl_test setup promise_test: Unhandled rejection with value: object "Got an error before parsing any named definition: Unrecognised tokens, line 1 (tokens: "{\"error\": {\"message\"")
-[
-    {
-        "type": "{",
-        "value": "{",
-        "trivia": ""
-    },
-    {
-        "type": "string",
-        "value": "\"error\"",
-        "trivia": ""
-    },
-    {
-        "type": ":",
-        "value": ":",
-        "trivia": ""
-    },
-    {
-        "type": "{",
-        "value": "{",
-        "trivia": " "
-    },
-    {
-        "type": "string",
-        "value": "\"message\"",
-        "trivia": ""
-    }
-]"
+FAIL idl_test setup promise_test: Unhandled rejection with value: object "Error fetching /interfaces/mediastream-recording.idl."
 
index 0a7cac6..351e345 100644 (file)
@@ -1,105 +1,9 @@
-CONSOLE MESSAGE: line 482: callback not yet supported
-CONSOLE MESSAGE: line 482: callback not yet supported
 Description
 
 This test checks for the presence of the navigator.mediaDevices.getUserMedia method.
 
 
-PASS idl_test setup 
-PASS Partial interface NavigatorUserMedia: original interface defined 
-PASS Partial interface MediaDevices: original interface defined 
-PASS MediaStream interface: existence and properties of interface object 
-PASS MediaStream interface object length 
-PASS MediaStream interface object name 
-PASS MediaStream interface: existence and properties of interface prototype object 
-PASS MediaStream interface: existence and properties of interface prototype object's "constructor" property 
-PASS MediaStream interface: existence and properties of interface prototype object's @@unscopables property 
-PASS MediaStream interface: attribute id 
-PASS MediaStream interface: operation getAudioTracks() 
-PASS MediaStream interface: operation getVideoTracks() 
-PASS MediaStream interface: operation getTracks() 
-PASS MediaStream interface: operation getTrackById(DOMString) 
-PASS MediaStream interface: operation addTrack(MediaStreamTrack) 
-PASS MediaStream interface: operation removeTrack(MediaStreamTrack) 
-PASS MediaStream interface: operation clone() 
-PASS MediaStream interface: attribute active 
-PASS MediaStream interface: attribute onaddtrack 
-PASS MediaStream interface: attribute onremovetrack 
-PASS MediaStreamTrack interface: existence and properties of interface object 
-PASS MediaStreamTrack interface object length 
-PASS MediaStreamTrack interface object name 
-PASS MediaStreamTrack interface: existence and properties of interface prototype object 
-PASS MediaStreamTrack interface: existence and properties of interface prototype object's "constructor" property 
-PASS MediaStreamTrack interface: existence and properties of interface prototype object's @@unscopables property 
-PASS MediaStreamTrack interface: attribute kind 
-PASS MediaStreamTrack interface: attribute id 
-PASS MediaStreamTrack interface: attribute label 
-PASS MediaStreamTrack interface: attribute enabled 
-PASS MediaStreamTrack interface: attribute muted 
-PASS MediaStreamTrack interface: attribute onmute 
-PASS MediaStreamTrack interface: attribute onunmute 
-PASS MediaStreamTrack interface: attribute readyState 
-PASS MediaStreamTrack interface: attribute onended 
-PASS MediaStreamTrack interface: operation clone() 
-PASS MediaStreamTrack interface: operation stop() 
-PASS MediaStreamTrack interface: operation getCapabilities() 
-PASS MediaStreamTrack interface: operation getConstraints() 
-PASS MediaStreamTrack interface: operation getSettings() 
-PASS MediaStreamTrack interface: operation applyConstraints(MediaTrackConstraints) 
-PASS MediaStreamTrack interface: attribute onoverconstrained 
-PASS MediaStreamTrackEvent interface: existence and properties of interface object 
-PASS MediaStreamTrackEvent interface object length 
-PASS MediaStreamTrackEvent interface object name 
-PASS MediaStreamTrackEvent interface: existence and properties of interface prototype object 
-PASS MediaStreamTrackEvent interface: existence and properties of interface prototype object's "constructor" property 
-PASS MediaStreamTrackEvent interface: existence and properties of interface prototype object's @@unscopables property 
-PASS MediaStreamTrackEvent interface: attribute track 
-PASS OverconstrainedErrorEvent interface: existence and properties of interface object 
-FAIL OverconstrainedErrorEvent interface object length assert_equals: wrong value for OverconstrainedErrorEvent.length expected 2 but got 1
-PASS OverconstrainedErrorEvent interface object name 
-PASS OverconstrainedErrorEvent interface: existence and properties of interface prototype object 
-PASS OverconstrainedErrorEvent interface: existence and properties of interface prototype object's "constructor" property 
-PASS OverconstrainedErrorEvent interface: existence and properties of interface prototype object's @@unscopables property 
-PASS OverconstrainedErrorEvent interface: attribute error 
-PASS MediaDevices interface: existence and properties of interface object 
-PASS MediaDevices interface object length 
-PASS MediaDevices interface object name 
-PASS MediaDevices interface: existence and properties of interface prototype object 
-PASS MediaDevices interface: existence and properties of interface prototype object's "constructor" property 
-PASS MediaDevices interface: existence and properties of interface prototype object's @@unscopables property 
-PASS MediaDevices interface: attribute ondevicechange 
-PASS MediaDevices interface: operation enumerateDevices() 
-PASS MediaDevices interface: operation getSupportedConstraints() 
-PASS MediaDevices interface: operation getUserMedia(MediaStreamConstraints) 
-PASS MediaDevices must be primary interface of navigator.mediaDevices 
-PASS Stringification of navigator.mediaDevices 
-PASS MediaDevices interface: navigator.mediaDevices must inherit property "ondevicechange" with the proper type 
-PASS MediaDevices interface: navigator.mediaDevices must inherit property "enumerateDevices()" with the proper type 
-PASS MediaDevices interface: navigator.mediaDevices must inherit property "getSupportedConstraints()" with the proper type 
-PASS MediaDevices interface: navigator.mediaDevices must inherit property "getUserMedia(MediaStreamConstraints)" with the proper type 
-PASS MediaDevices interface: calling getUserMedia(MediaStreamConstraints) on navigator.mediaDevices with too few arguments must throw TypeError 
-PASS MediaDeviceInfo interface: existence and properties of interface object 
-PASS MediaDeviceInfo interface object length 
-PASS MediaDeviceInfo interface object name 
-PASS MediaDeviceInfo interface: existence and properties of interface prototype object 
-PASS MediaDeviceInfo interface: existence and properties of interface prototype object's "constructor" property 
-PASS MediaDeviceInfo interface: existence and properties of interface prototype object's @@unscopables property 
-PASS MediaDeviceInfo interface: attribute deviceId 
-PASS MediaDeviceInfo interface: attribute kind 
-PASS MediaDeviceInfo interface: attribute label 
-PASS MediaDeviceInfo interface: attribute groupId 
-PASS MediaDeviceInfo interface: operation toJSON() 
-FAIL InputDeviceInfo interface: existence and properties of interface object assert_own_property: self does not have own property "InputDeviceInfo" expected property "InputDeviceInfo" missing
-FAIL InputDeviceInfo interface object length assert_own_property: self does not have own property "InputDeviceInfo" expected property "InputDeviceInfo" missing
-FAIL InputDeviceInfo interface object name assert_own_property: self does not have own property "InputDeviceInfo" expected property "InputDeviceInfo" missing
-FAIL InputDeviceInfo interface: existence and properties of interface prototype object assert_own_property: self does not have own property "InputDeviceInfo" expected property "InputDeviceInfo" missing
-FAIL InputDeviceInfo interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "InputDeviceInfo" expected property "InputDeviceInfo" missing
-FAIL InputDeviceInfo interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "InputDeviceInfo" expected property "InputDeviceInfo" missing
-FAIL InputDeviceInfo interface: operation getCapabilities() assert_own_property: self does not have own property "InputDeviceInfo" expected property "InputDeviceInfo" missing
-PASS Navigator interface: attribute mediaDevices 
-FAIL Navigator interface: operation getUserMedia(MediaStreamConstraints, NavigatorUserMediaSuccessCallback, NavigatorUserMediaErrorCallback) assert_own_property: interface prototype object missing non-static operation expected property "getUserMedia" missing
-PASS Navigator interface: navigator must inherit property "mediaDevices" with the proper type 
-FAIL Navigator interface: navigator must inherit property "getUserMedia(MediaStreamConstraints, NavigatorUserMediaSuccessCallback, NavigatorUserMediaErrorCallback)" with the proper type assert_inherits: property "getUserMedia" not found in prototype chain
-FAIL Navigator interface: calling getUserMedia(MediaStreamConstraints, NavigatorUserMediaSuccessCallback, NavigatorUserMediaErrorCallback) on navigator with too few arguments must throw TypeError assert_inherits: property "getUserMedia" not found in prototype chain
-PASS WorkerNavigator in