LayoutTests/imported/w3c:
authorachristensen@apple.com <achristensen@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 17 Jan 2017 20:04:38 +0000 (20:04 +0000)
committerachristensen@apple.com <achristensen@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 17 Jan 2017 20:04:38 +0000 (20:04 +0000)
 Refresh WPT tests up to 73f4ad361ca56d890b5f46d62c3bc84371a77e10
https://bugs.webkit.org/show_bug.cgi?id=167105

Patch by Youenn Fablet <youennf@gmail.com> on 2017-01-17
Reviewed by Alex Christensen.

Refreshing tests but not WPT dependencies.

* resources/ImportExpectations:
* resources/TestRepositories:
* resources/resource-files.json:
* web-platform-tests/IndexedDB/idbindex-rename-abort.html:
* web-platform-tests/IndexedDB/idbindex-rename-errors.html:
* web-platform-tests/IndexedDB/idbindex-rename.html:
* web-platform-tests/IndexedDB/idbkeyrange-expected.txt:
* web-platform-tests/IndexedDB/idbkeyrange.htm:
* web-platform-tests/IndexedDB/idbobjectstore-rename-abort.html:
* web-platform-tests/IndexedDB/idbobjectstore-rename-errors.html:
* web-platform-tests/IndexedDB/idbobjectstore-rename-store.html:
* web-platform-tests/IndexedDB/idbrequest_error-expected.txt: Added.
* web-platform-tests/IndexedDB/idbrequest_error.html: Added.
* web-platform-tests/IndexedDB/idbrequest_result-expected.txt: Added.
* web-platform-tests/IndexedDB/idbrequest_result.html: Added.
* web-platform-tests/IndexedDB/name-scopes.html:
* web-platform-tests/IndexedDB/support-promises.js:
(databaseName):
(requestWatcher):
(migrateDatabase):
(migrateNamedDatabase):
(createNamedDatabase):
(openNamedDatabase):
(const.createBooksStore):
(createNotBooksStore):
(checkStoreIndexes):
(checkStoreGenerator):
* web-platform-tests/IndexedDB/transaction-abort-generator-revert.html:
* web-platform-tests/IndexedDB/transaction-abort-index-metadata-revert.html:
* web-platform-tests/IndexedDB/transaction-abort-multiple-metadata-revert.html:
* web-platform-tests/IndexedDB/transaction-abort-object-store-metadata-revert.html:
* web-platform-tests/IndexedDB/upgrade-transaction-lifecycle-backend-aborted-expected.txt: Added.
* web-platform-tests/IndexedDB/upgrade-transaction-lifecycle-backend-aborted.html: Added.
* web-platform-tests/IndexedDB/upgrade-transaction-lifecycle-committed-expected.txt: Added.
* web-platform-tests/IndexedDB/upgrade-transaction-lifecycle-committed.html: Added.
* web-platform-tests/IndexedDB/upgrade-transaction-lifecycle-user-aborted-expected.txt: Added.
* web-platform-tests/IndexedDB/upgrade-transaction-lifecycle-user-aborted.html: Added.
* web-platform-tests/IndexedDB/w3c-import.log:
* web-platform-tests/LICENSE.md: Added.
* web-platform-tests/README.md:
* web-platform-tests/XMLHttpRequest/OWNERS:
* web-platform-tests/XMLHttpRequest/open-url-multi-window-6.htm:
* web-platform-tests/XMLHttpRequest/resources/xmlhttprequest-event-order.js:
(getNextEvent):
(global.assert_xhr_event_order_matches):
* web-platform-tests/check_stability.py:
(GitHub.__init__):
(GitHub.patch):
(GitHub.post_comment):
(Firefox.install):
(Firefox._latest_geckodriver_version):
(call):
(setup_github_logging):
(get_sha1):
(get_affected_testfiles):
(write_inconsistent):
(write_results):
(main):
* web-platform-tests/ci_built_diff.sh: Added.
* web-platform-tests/common/redirect-opt-in.py: Added.
(main):
* web-platform-tests/common/w3c-import.log:
* web-platform-tests/custom-elements/parser/parser-uses-constructed-element-expected.txt:
* web-platform-tests/custom-elements/parser/parser-uses-constructed-element.html:
* web-platform-tests/dom/OWNERS:
* web-platform-tests/dom/events/w3c-import.log:
* web-platform-tests/dom/historical-expected.txt:
* web-platform-tests/dom/historical.html:
* web-platform-tests/dom/nodes/Node-cloneNode-expected.txt:
* web-platform-tests/dom/nodes/Node-cloneNode.html:
* web-platform-tests/domparsing/w3c-import.log:
* web-platform-tests/encrypted-media/clearkey-mp4-setmediakeys.html:
* web-platform-tests/encrypted-media/clearkey-not-callable-after-createsession.html:
* web-platform-tests/encrypted-media/content/video_512x288_h264-360k_multikey_key1_dashinit.mp4: Added.
* web-platform-tests/encrypted-media/drm-events.html:
* web-platform-tests/encrypted-media/drm-expiration.html:
* web-platform-tests/encrypted-media/drm-keystatuses-multiple-sessions.html:
* web-platform-tests/encrypted-media/drm-keystatuses.html:
* web-platform-tests/encrypted-media/drm-mp4-playback-destroy-persistent-license.html:
* web-platform-tests/encrypted-media/drm-mp4-playback-persistent-license-events.html:
* web-platform-tests/encrypted-media/drm-mp4-playback-persistent-license.html:
* web-platform-tests/encrypted-media/drm-mp4-playback-persistent-usage-record-events.html:
* web-platform-tests/encrypted-media/drm-mp4-playback-retrieve-persistent-usage-record.html:
* web-platform-tests/encrypted-media/drm-mp4-playback-temporary-clear-encrypted.html:
* web-platform-tests/encrypted-media/drm-mp4-playback-temporary-encrypted-clear.html:
* web-platform-tests/encrypted-media/drm-mp4-playback-temporary-multikey.html:
* web-platform-tests/encrypted-media/drm-mp4-playback-temporary-multisession.html:
* web-platform-tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-after-src.html:
* web-platform-tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-after-update.html:
* web-platform-tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-immediately.html:
* web-platform-tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-onencrypted.html:
* web-platform-tests/encrypted-media/drm-mp4-playback-temporary-two-videos.html:
* web-platform-tests/encrypted-media/drm-mp4-playback-temporary-waitingforkey.html:
* web-platform-tests/encrypted-media/drm-mp4-playback-temporary.html:
* web-platform-tests/encrypted-media/drm-mp4-requestmediakeysystemaccess.html:
* web-platform-tests/encrypted-media/drm-mp4-setmediakeys-again-after-playback.html:
* web-platform-tests/encrypted-media/drm-mp4-setmediakeys-again-after-resetting-src.html:
* web-platform-tests/encrypted-media/drm-mp4-setmediakeys-at-same-time.html:
* web-platform-tests/encrypted-media/drm-mp4-setmediakeys-multiple-times-with-different-mediakeys.html:
* web-platform-tests/encrypted-media/drm-mp4-setmediakeys-multiple-times-with-the-same-mediakeys.html:
* web-platform-tests/encrypted-media/drm-mp4-setmediakeys-to-multiple-video-elements.html:
* web-platform-tests/encrypted-media/drm-mp4-setmediakeys.html:
* web-platform-tests/encrypted-media/drm-mp4-waiting-for-a-key.html:
* web-platform-tests/encrypted-media/drm-not-callable-after-createsession.html:
* web-platform-tests/encrypted-media/drm-temporary-license-type.html:
* web-platform-tests/fetch/api/basic/request-headers-expected.txt:
* web-platform-tests/fetch/api/basic/request-headers-worker-expected.txt:
* web-platform-tests/fetch/api/basic/request-headers.js:
(checkContentType):
(requestOriginHeader):
* web-platform-tests/fetch/api/basic/request-upload-expected.txt:
* web-platform-tests/fetch/api/basic/request-upload-worker-expected.txt:
* web-platform-tests/fetch/api/basic/request-upload.js:
* web-platform-tests/fetch/api/headers/headers-basic-expected.txt:
* web-platform-tests/fetch/api/headers/headers-basic.html:
* web-platform-tests/fetch/api/headers/headers-idl.html:
* web-platform-tests/fetch/api/redirect/redirect-count-worker.html:
* web-platform-tests/fetch/api/redirect/redirect-count.html:
* web-platform-tests/fetch/api/redirect/redirect-count.js:
(redirectCount):
* web-platform-tests/fetch/api/redirect/redirect-referrer-expected.txt: Added.
* web-platform-tests/fetch/api/redirect/redirect-referrer-worker-expected.txt: Added.
* web-platform-tests/fetch/api/redirect/redirect-referrer-worker.html: Copied from LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-count-worker.html.
* web-platform-tests/fetch/api/redirect/redirect-referrer.html: Copied from LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-count.html.
* web-platform-tests/fetch/api/redirect/redirect-referrer.js: Added.
(testReferrerAfterRedirection):
* web-platform-tests/fetch/api/redirect/w3c-import.log:
* web-platform-tests/fetch/api/request/multi-globals/current/current.html:
* web-platform-tests/fetch/api/request/multi-globals/incumbent/incumbent.html:
* web-platform-tests/fetch/api/request/multi-globals/url-parsing.html:
* web-platform-tests/fetch/api/request/request-bad-port-expected.txt: Added.
* web-platform-tests/fetch/api/request/request-bad-port.html: Added.
* web-platform-tests/fetch/api/request/request-idl.html:
* web-platform-tests/fetch/api/request/request-init-001.sub-expected.txt:
* web-platform-tests/fetch/api/request/request-init-001.sub.html:
* web-platform-tests/fetch/api/request/w3c-import.log:
* web-platform-tests/fetch/api/resources/redirect.py:
(main):
* web-platform-tests/fetch/api/response/multi-globals/current/current.html:
* web-platform-tests/fetch/api/response/multi-globals/incumbent/incumbent.html:
* web-platform-tests/fetch/api/response/multi-globals/url-parsing.html:
* web-platform-tests/fetch/api/response/response-consume-expected.txt:
* web-platform-tests/fetch/api/response/response-consume.html:
* web-platform-tests/fetch/nosniff/image-expected.txt:
* web-platform-tests/fetch/nosniff/image.html:
* web-platform-tests/html/OWNERS:
* web-platform-tests/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/resources/post_name_on_load.html: Added.
* web-platform-tests/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/resources/w3c-import.log:
* web-platform-tests/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/resume-timer-on-history-back-expected.txt: Added.
* web-platform-tests/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/resume-timer-on-history-back.html: Added.
* web-platform-tests/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/w3c-import.log:
* web-platform-tests/html/browsers/browsing-the-web/history-traversal/resources/a.html: Added.
* web-platform-tests/html/browsers/browsing-the-web/history-traversal/resources/b.html: Added.
* web-platform-tests/html/browsers/browsing-the-web/history-traversal/resources/c.html: Added.
* web-platform-tests/html/browsers/browsing-the-web/history-traversal/resources/w3c-import.log: Copied from LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/resources/w3c-import.log.
* web-platform-tests/html/browsers/browsing-the-web/history-traversal/w3c-import.log:
* web-platform-tests/html/browsers/history/the-location-interface/location-pathname-setter-question-mark-expected.txt: Added.
* web-platform-tests/html/browsers/history/the-location-interface/location-pathname-setter-question-mark.html: Added.
* web-platform-tests/html/browsers/history/the-location-interface/location-protocol-setter-expected.txt: Added.
* web-platform-tests/html/browsers/history/the-location-interface/location-protocol-setter-non-broken-expected.txt: Added.
* web-platform-tests/html/browsers/history/the-location-interface/location-protocol-setter-non-broken-weird-expected.txt: Added.
* web-platform-tests/html/browsers/history/the-location-interface/location-protocol-setter-non-broken-weird.html: Added.
* web-platform-tests/html/browsers/history/the-location-interface/location-protocol-setter-non-broken.html: Added.
* web-platform-tests/html/browsers/history/the-location-interface/location-protocol-setter.html: Added.
* web-platform-tests/html/browsers/history/the-location-interface/w3c-import.log:
* web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects-exceptions-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects-expected.txt.
* web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects-exceptions.html: Copied from LayoutTests/imported/w3c/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html.
* web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects-expected.txt:
* web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window-expected.txt:
* web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html:
* web-platform-tests/html/browsers/origin/cross-origin-objects/frame.html:
* web-platform-tests/html/browsers/origin/cross-origin-objects/w3c-import.log:
* web-platform-tests/html/browsers/origin/cross-origin-objects/win-documentdomain.sub.html:
* web-platform-tests/html/dom/elements-embedded.js:
* web-platform-tests/html/dom/elements-metadata.js:
* web-platform-tests/html/dom/elements-misc.js:
* web-platform-tests/html/dom/elements-text.js:
* web-platform-tests/html/dom/elements/elements-in-the-dom/historical-expected.txt: Added.
* web-platform-tests/html/dom/elements/elements-in-the-dom/historical.html: Added.
* web-platform-tests/html/dom/elements/elements-in-the-dom/w3c-import.log:
* web-platform-tests/html/dom/interfaces.html:
* web-platform-tests/html/dom/reflection-embedded-expected.txt:
* web-platform-tests/html/dom/reflection-metadata-expected.txt:
* web-platform-tests/html/dom/reflection-misc-expected.txt:
* web-platform-tests/html/dom/reflection-text-expected.txt:
* web-platform-tests/html/resources/common.js:
* web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/allow-scripts-flag-changing-1-expected.txt: Added.
* web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/allow-scripts-flag-changing-1.html: Added.
* web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/allow-scripts-flag-changing-2-expected.txt: Added.
* web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/allow-scripts-flag-changing-2.html: Added.
* web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/dynamic-append-expected.txt: Added.
* web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/dynamic-append.html: Added.
* web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/moving-documents-expected.txt: Added.
* web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/moving-documents.html: Added.
* web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/not-in-shadow-tree-expected.txt: Added.
* web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/not-in-shadow-tree.html: Added.
* web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/w3c-import.log:
* web-platform-tests/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.whitespace.html:
* web-platform-tests/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.whitespace.html:
* web-platform-tests/html/semantics/embedded-content/the-canvas-element/toDataURL.nocontext.html:
* web-platform-tests/html/semantics/embedded-content/the-canvas-element/toDataURL.png.complexcolours.png:
* web-platform-tests/html/semantics/embedded-content/the-img-element/image.png: Added.
* web-platform-tests/html/semantics/embedded-content/the-img-element/update-src-complete-expected.txt: Added.
* web-platform-tests/html/semantics/embedded-content/the-img-element/update-src-complete.html: Added.
* web-platform-tests/html/semantics/embedded-content/the-img-element/w3c-import.log:
* web-platform-tests/html/semantics/forms/constraints/form-validation-willValidate-expected.txt:
* web-platform-tests/html/semantics/forms/constraints/form-validation-willValidate.html:
* web-platform-tests/html/semantics/forms/form-control-infrastructure/form-expected.txt:
* web-platform-tests/html/semantics/forms/form-control-infrastructure/form.html:
* web-platform-tests/html/semantics/forms/form-submission-0/submit-entity-body.html:
* web-platform-tests/html/semantics/forms/form-submission-0/url-encoded-expected.txt:
* web-platform-tests/html/semantics/forms/form-submission-0/url-encoded.html:
* web-platform-tests/html/semantics/forms/resetting-a-form/reset-form.html:
* web-platform-tests/html/semantics/forms/the-form-element/form-nameditem-expected.txt:
* web-platform-tests/html/semantics/forms/the-form-element/form-nameditem.html:
* web-platform-tests/html/semantics/forms/the-input-element/clone-expected.txt: Added.
* web-platform-tests/html/semantics/forms/the-input-element/clone.html: Added.
* web-platform-tests/html/semantics/forms/the-input-element/radio-expected.txt:
* web-platform-tests/html/semantics/forms/the-input-element/radio.html:
* web-platform-tests/html/semantics/forms/the-input-element/w3c-import.log:
* web-platform-tests/html/semantics/forms/the-label-element/labelable-elements-expected.txt:
* web-platform-tests/html/semantics/forms/the-label-element/labelable-elements.html:
* web-platform-tests/html/semantics/forms/the-select-element/select-validity-expected.txt: Added.
* web-platform-tests/html/semantics/forms/the-select-element/select-validity.html: Added.
* web-platform-tests/html/semantics/forms/the-select-element/select-value-expected.txt: Added.
* web-platform-tests/html/semantics/forms/the-select-element/select-value.html: Added.
* web-platform-tests/html/semantics/forms/the-select-element/w3c-import.log:
* web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html:
* web-platform-tests/html/semantics/interfaces-expected.txt:
* web-platform-tests/html/semantics/interfaces.js:
* web-platform-tests/html/semantics/scripting-1/the-template-element/template-element/template-as-a-descendant-expected.txt:
* web-platform-tests/html/semantics/scripting-1/the-template-element/template-element/template-as-a-descendant.html:
* web-platform-tests/html/syntax/parsing/html5lib_entities01-expected.txt:
* web-platform-tests/html/syntax/parsing/html5lib_entities01.html:
* web-platform-tests/html/syntax/parsing/html5lib_entities02-expected.txt:
* web-platform-tests/html/syntax/parsing/html5lib_entities02.html:
* web-platform-tests/html/syntax/parsing/html5lib_innerHTML_adoption01-expected.txt: Added.
* web-platform-tests/html/syntax/parsing/html5lib_innerHTML_adoption01.html: Added.
* web-platform-tests/html/syntax/parsing/html5lib_innerHTML_foreign-fragment-expected.txt: Added.
* web-platform-tests/html/syntax/parsing/html5lib_innerHTML_foreign-fragment.html: Added.
* web-platform-tests/html/syntax/parsing/html5lib_innerHTML_math-expected.txt: Added.
* web-platform-tests/html/syntax/parsing/html5lib_innerHTML_math.html: Added.
* web-platform-tests/html/syntax/parsing/html5lib_innerHTML_webkit02-expected.txt: Added.
* web-platform-tests/html/syntax/parsing/html5lib_innerHTML_webkit02.html: Added.
* web-platform-tests/html/syntax/parsing/html5lib_isindex-expected.txt:
* web-platform-tests/html/syntax/parsing/html5lib_isindex.html:
* web-platform-tests/html/syntax/parsing/html5lib_menuitem-element-expected.txt: Added.
* web-platform-tests/html/syntax/parsing/html5lib_menuitem-element.html: Added.
* web-platform-tests/html/syntax/parsing/html5lib_namespace-sensitivity-expected.txt: Added.
* web-platform-tests/html/syntax/parsing/html5lib_namespace-sensitivity.html: Added.
* web-platform-tests/html/syntax/parsing/html5lib_ruby-expected.txt: Added.
* web-platform-tests/html/syntax/parsing/html5lib_ruby.html: Added.
* web-platform-tests/html/syntax/parsing/html5lib_template-expected.txt:
* web-platform-tests/html/syntax/parsing/html5lib_template.html:
* web-platform-tests/html/syntax/parsing/html5lib_tests11-expected.txt:
* web-platform-tests/html/syntax/parsing/html5lib_tests11.html:
* web-platform-tests/html/syntax/parsing/html5lib_tests19-expected.txt:
* web-platform-tests/html/syntax/parsing/html5lib_tests19.html:
* web-platform-tests/html/syntax/parsing/html5lib_tests2-expected.txt:
* web-platform-tests/html/syntax/parsing/html5lib_tests2.html:
* web-platform-tests/html/syntax/parsing/html5lib_tests20-expected.txt:
* web-platform-tests/html/syntax/parsing/html5lib_tests20.html:
* web-platform-tests/html/syntax/parsing/html5lib_tests25-expected.txt:
* web-platform-tests/html/syntax/parsing/html5lib_tests25.html:
* web-platform-tests/html/syntax/parsing/html5lib_tests7-expected.txt:
* web-platform-tests/html/syntax/parsing/html5lib_tests7.html:
* web-platform-tests/html/syntax/parsing/html5lib_webkit01-expected.txt:
* web-platform-tests/html/syntax/parsing/html5lib_webkit01.html:
* web-platform-tests/html/syntax/parsing/html5lib_webkit02-expected.txt:
* web-platform-tests/html/syntax/parsing/html5lib_webkit02.html:
* web-platform-tests/html/syntax/parsing/test.js:
(test_serializer):
* web-platform-tests/html/syntax/parsing/w3c-import.log:
* web-platform-tests/html/webappapis/scripting/events/event-handler-onauxclick-expected.txt: Added.
* web-platform-tests/html/webappapis/scripting/events/event-handler-onauxclick.html: Added.
* web-platform-tests/html/webappapis/scripting/events/w3c-import.log:
* web-platform-tests/html/webappapis/scripting/processing-model-2/compile-error-same-origin-with-hash-expected.txt: Added.
* web-platform-tests/html/webappapis/scripting/processing-model-2/compile-error-same-origin-with-hash.html: Added.
* web-platform-tests/html/webappapis/scripting/processing-model-2/runtime-error-same-origin-with-hash-expected.txt: Added.
* web-platform-tests/html/webappapis/scripting/processing-model-2/runtime-error-same-origin-with-hash.html: Added.
* web-platform-tests/html/webappapis/scripting/processing-model-2/w3c-import.log:
* web-platform-tests/media-source/mediasource-errors.html:
* web-platform-tests/resource-timing/resource_cached-expected.txt: Added.
* web-platform-tests/resource-timing/resource_cached.htm: Added.
* web-platform-tests/resource-timing/resource_connection_reuse-expected.txt: Added.
* web-platform-tests/resource-timing/resource_connection_reuse.html: Added.
* web-platform-tests/resource-timing/resource_dynamic_insertion-expected.txt: Added.
* web-platform-tests/resource-timing/resource_dynamic_insertion.html: Added.
* web-platform-tests/resource-timing/resources/fake_responses.html: Added.
* web-platform-tests/resource-timing/resources/fake_responses.py: Added.
(main):
* web-platform-tests/resource-timing/resources/inject_resource_test.html: Added.
* web-platform-tests/resource-timing/resources/w3c-import.log:
* web-platform-tests/resource-timing/resources/webperftestharnessextension.js: Added.
(test_method_exists):
(test_noless_than):
(test_resource_entries):
(performance_entrylist_checker.entry_check):
(performance_entrylist_checker.entrylist_order_check):
(performance_entrylist_checker.entrylist_check):
(performance_entrylist_checker):
(PerformanceContext):
(PerformanceContext.prototype.initialMeasures):
(PerformanceContext.prototype.mark):
(PerformanceContext.prototype.measure):
(PerformanceContext.prototype.clearMarks):
(PerformanceContext.prototype.clearMeasures):
(PerformanceContext.prototype.getEntries):
(PerformanceContext.prototype.getEntriesByType):
(PerformanceContext.prototype.getEntriesByName):
(PerformanceContext.prototype.setResourceTimingBufferSize):
(PerformanceContext.prototype.registerResourceTimingBufferFullCallback):
(PerformanceContext.prototype.clearResourceTimings):
* web-platform-tests/resource-timing/w3c-import.log:
* web-platform-tests/shadow-dom/slotchange-event-expected.txt:
* web-platform-tests/shadow-dom/slotchange-event.html:
* web-platform-tests/update-built-tests.sh: Added.
* web-platform-tests/url/OWNERS:
* web-platform-tests/url/a-element-expected.txt:
* web-platform-tests/url/a-element-origin-expected.txt:
* web-platform-tests/url/a-element-origin-xhtml-expected.txt:
* web-platform-tests/url/a-element-origin-xhtml.xhtml:
* web-platform-tests/url/a-element-origin.html:
* web-platform-tests/url/a-element-xhtml-expected.txt:
* web-platform-tests/url/a-element-xhtml.xhtml:
* web-platform-tests/url/a-element.html:
* web-platform-tests/url/setters_tests.json:
* web-platform-tests/url/url-constructor-expected.txt:
* web-platform-tests/url/url-origin-expected.txt:
* web-platform-tests/url/url-setters-expected.txt:
* web-platform-tests/url/urlsearchparams-append.html:
* web-platform-tests/url/urlsearchparams-constructor-expected.txt:
* web-platform-tests/url/urlsearchparams-constructor.html:
* web-platform-tests/url/urlsearchparams-delete.html:
* web-platform-tests/url/urlsearchparams-get.html:
* web-platform-tests/url/urlsearchparams-getall.html:
* web-platform-tests/url/urlsearchparams-has.html:
* web-platform-tests/url/urlsearchparams-set.html:
* web-platform-tests/url/urlsearchparams-stringifier.html:
* web-platform-tests/url/urltestdata.json:
* web-platform-tests/w3c-import.log:
* web-platform-tests/webrtc/RTCDataChannelEvent-constructor-expected.txt: Added.
* web-platform-tests/webrtc/RTCDataChannelEvent-constructor.html: Added.
* web-platform-tests/webrtc/RTCPeerConnectionIceEvent-constructor-expected.txt: Added.
* web-platform-tests/webrtc/RTCPeerConnectionIceEvent-constructor.html: Added.
* web-platform-tests/webrtc/datachannel-emptystring.html:
* web-platform-tests/webrtc/simplecall.html:
* web-platform-tests/webrtc/w3c-import.log:

LayoutTests:
Refresh WPT tests up to 73f4ad361ca56d890b5f46d62c3bc84371a77e10
https://bugs.webkit.org/show_bug.cgi?id=167105

Patch by Youenn Fablet <youenn@apple.com> on 2017-01-17
Reviewed by Alex Christensen.

 Skipping two fetch tests as they reach an ASSERT on debug builds (missing implemented feature).

* TestExpectations:
* platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/location-protocol-setter-non-broken-expected.txt: Added.
* platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/dom/reflection-embedded-expected.txt:
* platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-willValidate-expected.txt:
* platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/form-control-infrastructure/form-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/form-control-infrastructure/form-expected.txt.
* platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/the-label-element/labelable-elements-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-label-element/labelable-elements-expected.txt.
* platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/the-select-element/select-validity-expected.txt: Added.
* platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/interfaces-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/html/semantics/interfaces-expected.txt.
* tests-options.json:

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

306 files changed:
LayoutTests/ChangeLog
LayoutTests/TestExpectations
LayoutTests/imported/w3c/ChangeLog
LayoutTests/imported/w3c/resources/ImportExpectations
LayoutTests/imported/w3c/resources/TestRepositories
LayoutTests/imported/w3c/resources/resource-files.json
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbindex-rename-abort.html
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbindex-rename-errors.html
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbindex-rename.html
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbkeyrange-expected.txt
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbkeyrange.htm
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-rename-abort.html
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-rename-errors.html
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-rename-store.html
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbrequest_error-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbrequest_error.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbrequest_result-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbrequest_result.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/name-scopes.html
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/support-promises.js
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/transaction-abort-generator-revert.html
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/transaction-abort-index-metadata-revert.html
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/transaction-abort-multiple-metadata-revert.html
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/transaction-abort-object-store-metadata-revert.html
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/upgrade-transaction-lifecycle-backend-aborted-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/upgrade-transaction-lifecycle-backend-aborted.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/upgrade-transaction-lifecycle-committed-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/upgrade-transaction-lifecycle-committed.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/upgrade-transaction-lifecycle-user-aborted-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/upgrade-transaction-lifecycle-user-aborted.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/IndexedDB/w3c-import.log
LayoutTests/imported/w3c/web-platform-tests/LICENSE.md [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/README.md
LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/OWNERS
LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/open-url-multi-window-6.htm
LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/resources/xmlhttprequest-event-order.js
LayoutTests/imported/w3c/web-platform-tests/check_stability.py
LayoutTests/imported/w3c/web-platform-tests/ci_built_diff.sh [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/common/redirect-opt-in.py [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/common/w3c-import.log
LayoutTests/imported/w3c/web-platform-tests/custom-elements/parser/parser-uses-constructed-element-expected.txt
LayoutTests/imported/w3c/web-platform-tests/custom-elements/parser/parser-uses-constructed-element.html
LayoutTests/imported/w3c/web-platform-tests/dom/OWNERS
LayoutTests/imported/w3c/web-platform-tests/dom/events/w3c-import.log
LayoutTests/imported/w3c/web-platform-tests/dom/historical-expected.txt
LayoutTests/imported/w3c/web-platform-tests/dom/historical.html
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-cloneNode-expected.txt
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-cloneNode.html
LayoutTests/imported/w3c/web-platform-tests/domparsing/w3c-import.log
LayoutTests/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-setmediakeys.html
LayoutTests/imported/w3c/web-platform-tests/encrypted-media/clearkey-not-callable-after-createsession.html
LayoutTests/imported/w3c/web-platform-tests/encrypted-media/drm-events.html
LayoutTests/imported/w3c/web-platform-tests/encrypted-media/drm-expiration.html
LayoutTests/imported/w3c/web-platform-tests/encrypted-media/drm-keystatuses-multiple-sessions.html
LayoutTests/imported/w3c/web-platform-tests/encrypted-media/drm-keystatuses.html
LayoutTests/imported/w3c/web-platform-tests/encrypted-media/drm-mp4-playback-destroy-persistent-license.html
LayoutTests/imported/w3c/web-platform-tests/encrypted-media/drm-mp4-playback-persistent-license-events.html
LayoutTests/imported/w3c/web-platform-tests/encrypted-media/drm-mp4-playback-persistent-license.html
LayoutTests/imported/w3c/web-platform-tests/encrypted-media/drm-mp4-playback-persistent-usage-record-events.html
LayoutTests/imported/w3c/web-platform-tests/encrypted-media/drm-mp4-playback-retrieve-persistent-usage-record.html
LayoutTests/imported/w3c/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-clear-encrypted.html
LayoutTests/imported/w3c/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-encrypted-clear.html
LayoutTests/imported/w3c/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-multikey.html
LayoutTests/imported/w3c/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-multisession.html
LayoutTests/imported/w3c/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-after-src.html
LayoutTests/imported/w3c/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-after-update.html
LayoutTests/imported/w3c/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-immediately.html
LayoutTests/imported/w3c/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-onencrypted.html
LayoutTests/imported/w3c/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-two-videos.html
LayoutTests/imported/w3c/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-waitingforkey.html
LayoutTests/imported/w3c/web-platform-tests/encrypted-media/drm-mp4-playback-temporary.html
LayoutTests/imported/w3c/web-platform-tests/encrypted-media/drm-mp4-requestmediakeysystemaccess.html
LayoutTests/imported/w3c/web-platform-tests/encrypted-media/drm-mp4-setmediakeys-again-after-playback.html
LayoutTests/imported/w3c/web-platform-tests/encrypted-media/drm-mp4-setmediakeys-again-after-resetting-src.html
LayoutTests/imported/w3c/web-platform-tests/encrypted-media/drm-mp4-setmediakeys-at-same-time.html
LayoutTests/imported/w3c/web-platform-tests/encrypted-media/drm-mp4-setmediakeys-multiple-times-with-different-mediakeys.html
LayoutTests/imported/w3c/web-platform-tests/encrypted-media/drm-mp4-setmediakeys-multiple-times-with-the-same-mediakeys.html
LayoutTests/imported/w3c/web-platform-tests/encrypted-media/drm-mp4-setmediakeys-to-multiple-video-elements.html
LayoutTests/imported/w3c/web-platform-tests/encrypted-media/drm-mp4-setmediakeys.html
LayoutTests/imported/w3c/web-platform-tests/encrypted-media/drm-mp4-waiting-for-a-key.html
LayoutTests/imported/w3c/web-platform-tests/encrypted-media/drm-not-callable-after-createsession.html
LayoutTests/imported/w3c/web-platform-tests/encrypted-media/drm-temporary-license-type.html
LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers-expected.txt
LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers-worker-expected.txt
LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.js
LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload-expected.txt
LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload-worker-expected.txt
LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.js
LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/headers-basic-expected.txt
LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/headers-basic.html
LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/headers-idl.html
LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-count-worker.html
LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-count.html
LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-count.js
LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-referrer-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-referrer-worker-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-referrer-worker.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-referrer.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-referrer.js [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/w3c-import.log
LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/multi-globals/current/current.html
LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/multi-globals/incumbent/incumbent.html
LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/multi-globals/url-parsing.html
LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-bad-port-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-bad-port.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-idl.html
LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-init-001.sub-expected.txt
LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-init-001.sub.html
LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/w3c-import.log
LayoutTests/imported/w3c/web-platform-tests/fetch/api/resources/redirect.py
LayoutTests/imported/w3c/web-platform-tests/fetch/api/response/multi-globals/current/current.html
LayoutTests/imported/w3c/web-platform-tests/fetch/api/response/multi-globals/incumbent/incumbent.html
LayoutTests/imported/w3c/web-platform-tests/fetch/api/response/multi-globals/url-parsing.html
LayoutTests/imported/w3c/web-platform-tests/fetch/api/response/response-consume-expected.txt
LayoutTests/imported/w3c/web-platform-tests/fetch/api/response/response-consume.html
LayoutTests/imported/w3c/web-platform-tests/fetch/nosniff/image-expected.txt
LayoutTests/imported/w3c/web-platform-tests/fetch/nosniff/image.html
LayoutTests/imported/w3c/web-platform-tests/html/OWNERS
LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/resources/post_name_on_load.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/resources/w3c-import.log
LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/resume-timer-on-history-back-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/resume-timer-on-history-back.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/w3c-import.log
LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/history-traversal/resources/a.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/history-traversal/resources/b.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/history-traversal/resources/c.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/history-traversal/resources/w3c-import.log [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/history-traversal/w3c-import.log
LayoutTests/imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/location-pathname-setter-question-mark-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/location-pathname-setter-question-mark.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/location-protocol-setter-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/location-protocol-setter-non-broken-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/location-protocol-setter-non-broken-weird-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/location-protocol-setter-non-broken-weird.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/location-protocol-setter-non-broken.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/location-protocol-setter.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/w3c-import.log
LayoutTests/imported/w3c/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects-exceptions-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects-exceptions.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html
LayoutTests/imported/w3c/web-platform-tests/html/browsers/origin/cross-origin-objects/frame.html
LayoutTests/imported/w3c/web-platform-tests/html/browsers/origin/cross-origin-objects/w3c-import.log
LayoutTests/imported/w3c/web-platform-tests/html/browsers/origin/cross-origin-objects/win-documentdomain.sub.html
LayoutTests/imported/w3c/web-platform-tests/html/dom/elements-embedded.js
LayoutTests/imported/w3c/web-platform-tests/html/dom/elements-metadata.js
LayoutTests/imported/w3c/web-platform-tests/html/dom/elements-misc.js
LayoutTests/imported/w3c/web-platform-tests/html/dom/elements-text.js
LayoutTests/imported/w3c/web-platform-tests/html/dom/elements/elements-in-the-dom/historical-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/dom/elements/elements-in-the-dom/historical.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/dom/elements/elements-in-the-dom/w3c-import.log
LayoutTests/imported/w3c/web-platform-tests/html/dom/interfaces.html
LayoutTests/imported/w3c/web-platform-tests/html/dom/reflection-embedded-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/dom/reflection-metadata-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/dom/reflection-misc-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/dom/reflection-text-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/resources/common.js
LayoutTests/imported/w3c/web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/allow-scripts-flag-changing-1-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/allow-scripts-flag-changing-1.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/allow-scripts-flag-changing-2-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/allow-scripts-flag-changing-2.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/dynamic-append-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/dynamic-append.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/moving-documents-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/moving-documents.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/not-in-shadow-tree-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/not-in-shadow-tree.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/w3c-import.log
LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.whitespace.html
LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toDataURL.nocontext.html
LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toDataURL.png.complexcolours.png
LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/image.png [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/update-src-complete-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/update-src-complete.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/w3c-import.log
LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-willValidate-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-willValidate.html
LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/form-control-infrastructure/form-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/form-control-infrastructure/form.html
LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/form-submission-0/submit-entity-body.html
LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/form-submission-0/url-encoded-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/form-submission-0/url-encoded.html
LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/resetting-a-form/reset-form.html
LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-form-element/form-nameditem-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-form-element/form-nameditem.html
LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/clone-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/clone.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/radio-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/radio.html
LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/w3c-import.log
LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-label-element/labelable-elements-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-label-element/labelable-elements.html
LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-select-element/select-validity-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-select-element/select-validity.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-select-element/select-value-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-select-element/select-value.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-select-element/w3c-import.log
LayoutTests/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html
LayoutTests/imported/w3c/web-platform-tests/html/semantics/interfaces-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/semantics/interfaces.js
LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-template-element/template-element/template-as-a-descendant-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-template-element/template-element/template-as-a-descendant.html
LayoutTests/imported/w3c/web-platform-tests/html/syntax/parsing/html5lib_entities01-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/syntax/parsing/html5lib_entities01.html
LayoutTests/imported/w3c/web-platform-tests/html/syntax/parsing/html5lib_entities02-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/syntax/parsing/html5lib_entities02.html
LayoutTests/imported/w3c/web-platform-tests/html/syntax/parsing/html5lib_innerHTML_adoption01-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/syntax/parsing/html5lib_innerHTML_adoption01.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/syntax/parsing/html5lib_innerHTML_foreign-fragment-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/syntax/parsing/html5lib_innerHTML_foreign-fragment.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/syntax/parsing/html5lib_innerHTML_math-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/syntax/parsing/html5lib_innerHTML_math.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/syntax/parsing/html5lib_innerHTML_webkit02-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/syntax/parsing/html5lib_innerHTML_webkit02.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/syntax/parsing/html5lib_isindex-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/syntax/parsing/html5lib_isindex.html
LayoutTests/imported/w3c/web-platform-tests/html/syntax/parsing/html5lib_menuitem-element-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/syntax/parsing/html5lib_menuitem-element.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/syntax/parsing/html5lib_namespace-sensitivity-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/syntax/parsing/html5lib_namespace-sensitivity.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/syntax/parsing/html5lib_ruby-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/syntax/parsing/html5lib_ruby.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/syntax/parsing/html5lib_template-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/syntax/parsing/html5lib_template.html
LayoutTests/imported/w3c/web-platform-tests/html/syntax/parsing/html5lib_tests11-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/syntax/parsing/html5lib_tests11.html
LayoutTests/imported/w3c/web-platform-tests/html/syntax/parsing/html5lib_tests19-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/syntax/parsing/html5lib_tests19.html
LayoutTests/imported/w3c/web-platform-tests/html/syntax/parsing/html5lib_tests2-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/syntax/parsing/html5lib_tests2.html
LayoutTests/imported/w3c/web-platform-tests/html/syntax/parsing/html5lib_tests20-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/syntax/parsing/html5lib_tests20.html
LayoutTests/imported/w3c/web-platform-tests/html/syntax/parsing/html5lib_tests25-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/syntax/parsing/html5lib_tests25.html
LayoutTests/imported/w3c/web-platform-tests/html/syntax/parsing/html5lib_tests7-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/syntax/parsing/html5lib_tests7.html
LayoutTests/imported/w3c/web-platform-tests/html/syntax/parsing/html5lib_webkit01-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/syntax/parsing/html5lib_webkit01.html
LayoutTests/imported/w3c/web-platform-tests/html/syntax/parsing/html5lib_webkit02-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/syntax/parsing/html5lib_webkit02.html
LayoutTests/imported/w3c/web-platform-tests/html/syntax/parsing/test.js
LayoutTests/imported/w3c/web-platform-tests/html/syntax/parsing/w3c-import.log
LayoutTests/imported/w3c/web-platform-tests/html/webappapis/scripting/events/event-handler-onauxclick-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/webappapis/scripting/events/event-handler-onauxclick.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/webappapis/scripting/events/w3c-import.log
LayoutTests/imported/w3c/web-platform-tests/html/webappapis/scripting/processing-model-2/compile-error-same-origin-with-hash-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/webappapis/scripting/processing-model-2/compile-error-same-origin-with-hash.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/webappapis/scripting/processing-model-2/runtime-error-same-origin-with-hash-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/webappapis/scripting/processing-model-2/runtime-error-same-origin-with-hash.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/html/webappapis/scripting/processing-model-2/w3c-import.log
LayoutTests/imported/w3c/web-platform-tests/media-source/mediasource-errors.html
LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_cached-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_cached.htm [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_connection_reuse-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_connection_reuse.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_dynamic_insertion-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_dynamic_insertion.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/resource-timing/resources/fake_responses.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/resource-timing/resources/fake_responses.py [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/resource-timing/resources/inject_resource_test.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/resource-timing/resources/w3c-import.log
LayoutTests/imported/w3c/web-platform-tests/resource-timing/resources/webperftestharnessextension.js [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/resource-timing/w3c-import.log
LayoutTests/imported/w3c/web-platform-tests/shadow-dom/slotchange-event-expected.txt
LayoutTests/imported/w3c/web-platform-tests/shadow-dom/slotchange-event.html
LayoutTests/imported/w3c/web-platform-tests/update-built-tests.sh [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/url/OWNERS
LayoutTests/imported/w3c/web-platform-tests/url/a-element-expected.txt
LayoutTests/imported/w3c/web-platform-tests/url/a-element-origin-expected.txt
LayoutTests/imported/w3c/web-platform-tests/url/a-element-origin-xhtml-expected.txt
LayoutTests/imported/w3c/web-platform-tests/url/a-element-origin-xhtml.xhtml
LayoutTests/imported/w3c/web-platform-tests/url/a-element-origin.html
LayoutTests/imported/w3c/web-platform-tests/url/a-element-xhtml-expected.txt
LayoutTests/imported/w3c/web-platform-tests/url/a-element-xhtml.xhtml
LayoutTests/imported/w3c/web-platform-tests/url/a-element.html
LayoutTests/imported/w3c/web-platform-tests/url/setters_tests.json
LayoutTests/imported/w3c/web-platform-tests/url/url-constructor-expected.txt
LayoutTests/imported/w3c/web-platform-tests/url/url-origin-expected.txt
LayoutTests/imported/w3c/web-platform-tests/url/url-setters-expected.txt
LayoutTests/imported/w3c/web-platform-tests/url/urlsearchparams-append.html
LayoutTests/imported/w3c/web-platform-tests/url/urlsearchparams-constructor-expected.txt
LayoutTests/imported/w3c/web-platform-tests/url/urlsearchparams-constructor.html
LayoutTests/imported/w3c/web-platform-tests/url/urlsearchparams-delete.html
LayoutTests/imported/w3c/web-platform-tests/url/urlsearchparams-get.html
LayoutTests/imported/w3c/web-platform-tests/url/urlsearchparams-getall.html
LayoutTests/imported/w3c/web-platform-tests/url/urlsearchparams-has.html
LayoutTests/imported/w3c/web-platform-tests/url/urlsearchparams-set.html
LayoutTests/imported/w3c/web-platform-tests/url/urlsearchparams-stringifier.html
LayoutTests/imported/w3c/web-platform-tests/url/urltestdata.json
LayoutTests/imported/w3c/web-platform-tests/w3c-import.log
LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCDataChannelEvent-constructor-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCDataChannelEvent-constructor.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnectionIceEvent-constructor-expected.txt [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/webrtc/RTCPeerConnectionIceEvent-constructor.html [new file with mode: 0644]
LayoutTests/imported/w3c/web-platform-tests/webrtc/datachannel-emptystring.html
LayoutTests/imported/w3c/web-platform-tests/webrtc/simplecall.html
LayoutTests/imported/w3c/web-platform-tests/webrtc/w3c-import.log
LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/location-protocol-setter-non-broken-expected.txt [new file with mode: 0644]
LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/dom/reflection-embedded-expected.txt
LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-willValidate-expected.txt
LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/form-control-infrastructure/form-expected.txt [new file with mode: 0644]
LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/the-label-element/labelable-elements-expected.txt [new file with mode: 0644]
LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/the-select-element/select-validity-expected.txt [new file with mode: 0644]
LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/interfaces-expected.txt [new file with mode: 0644]
LayoutTests/tests-options.json

index 595131d..576d6e6 100644 (file)
@@ -1,3 +1,22 @@
+2017-01-17  Youenn Fablet  <youenn@apple.com>
+
+        Refresh WPT tests up to 73f4ad361ca56d890b5f46d62c3bc84371a77e10
+        https://bugs.webkit.org/show_bug.cgi?id=167105
+
+        Reviewed by Alex Christensen.
+
+         Skipping two fetch tests as they reach an ASSERT on debug builds (missing implemented feature).
+
+        * TestExpectations:
+        * platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/location-protocol-setter-non-broken-expected.txt: Added.
+        * platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/dom/reflection-embedded-expected.txt:
+        * platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-willValidate-expected.txt:
+        * platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/form-control-infrastructure/form-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/form-control-infrastructure/form-expected.txt.
+        * platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/the-label-element/labelable-elements-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-label-element/labelable-elements-expected.txt.
+        * platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/the-select-element/select-validity-expected.txt: Added.
+        * platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/interfaces-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/html/semantics/interfaces-expected.txt.
+        * tests-options.json:
+
 2017-01-16  Carlos Alberto Lopez Perez  <clopez@igalia.com>
 
         [GTK][MSE] Update list of media-source tests that fail.
index 3f36a7f..fc27b96 100644 (file)
@@ -311,6 +311,13 @@ webkit.org/b/157068 imported/w3c/web-platform-tests/fetch/nosniff/importscripts.
 webkit.org/b/157145 imported/w3c/web-platform-tests/fetch/nosniff/stylesheet.html [ Failure Pass ]
 webkit.org/b/161312 imported/w3c/web-platform-tests/html/semantics/document-metadata/the-link-element/document-without-browsing-context.html [ Failure Pass ]
 
+# Flaky tests due to always changing assertion error message
+imported/w3c/web-platform-tests/fetch/api/basic/request-headers.html [ Failure ]
+imported/w3c/web-platform-tests/html/semantics/forms/form-submission-0/url-encoded.html [ Failure ]
+
+[ Debug ] imported/w3c/web-platform-tests/fetch/api/basic/request-upload.html [ Skip ]
+[ Debug ] imported/w3c/web-platform-tests/fetch/api/basic/request-upload-worker.html [ Skip ]
+
 imported/w3c/web-platform-tests/fetch/api/cors/cors-origin.html [ DumpJSConsoleLogInStdErr ]
 imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight.html [ DumpJSConsoleLogInStdErr ]
 imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-redirect.html [ DumpJSConsoleLogInStdErr ]
@@ -962,7 +969,6 @@ webkit.org/b/163706 imported/w3c/csswg-test/css-shapes-1/shape-outside/shape-ima
 webkit.org/b/163706 imported/w3c/csswg-test/css-shapes-1/shape-outside/shape-image/shape-image-024.html [ Skip ]
 imported/blink/http/tests/security/shape-image-cors-disallow-origin.html [ ImageOnlyFailure ]
 imported/blink/http/tests/security/shape-image-cors-port.html [ ImageOnlyFailure ]
-
 webkit.org/b/163887 svg/as-image/svg-image-with-data-uri-use-data-uri.svg [ Pass Crash ]
 
 # Temporary failure until we start using ANGLE as a WebGL backend
index 52bc1a8..10e4bea 100644 (file)
@@ -1,3 +1,361 @@
+2017-01-17  Youenn Fablet  <youennf@gmail.com>
+
+         Refresh WPT tests up to 73f4ad361ca56d890b5f46d62c3bc84371a77e10
+        https://bugs.webkit.org/show_bug.cgi?id=167105
+
+        Reviewed by Alex Christensen.
+
+        Refreshing tests but not WPT dependencies.
+
+        * resources/ImportExpectations:
+        * resources/TestRepositories:
+        * resources/resource-files.json:
+        * web-platform-tests/IndexedDB/idbindex-rename-abort.html:
+        * web-platform-tests/IndexedDB/idbindex-rename-errors.html:
+        * web-platform-tests/IndexedDB/idbindex-rename.html:
+        * web-platform-tests/IndexedDB/idbkeyrange-expected.txt:
+        * web-platform-tests/IndexedDB/idbkeyrange.htm:
+        * web-platform-tests/IndexedDB/idbobjectstore-rename-abort.html:
+        * web-platform-tests/IndexedDB/idbobjectstore-rename-errors.html:
+        * web-platform-tests/IndexedDB/idbobjectstore-rename-store.html:
+        * web-platform-tests/IndexedDB/idbrequest_error-expected.txt: Added.
+        * web-platform-tests/IndexedDB/idbrequest_error.html: Added.
+        * web-platform-tests/IndexedDB/idbrequest_result-expected.txt: Added.
+        * web-platform-tests/IndexedDB/idbrequest_result.html: Added.
+        * web-platform-tests/IndexedDB/name-scopes.html:
+        * web-platform-tests/IndexedDB/support-promises.js:
+        (databaseName):
+        (requestWatcher):
+        (migrateDatabase):
+        (migrateNamedDatabase):
+        (createNamedDatabase):
+        (openNamedDatabase):
+        (const.createBooksStore):
+        (createNotBooksStore):
+        (checkStoreIndexes):
+        (checkStoreGenerator):
+        * web-platform-tests/IndexedDB/transaction-abort-generator-revert.html:
+        * web-platform-tests/IndexedDB/transaction-abort-index-metadata-revert.html:
+        * web-platform-tests/IndexedDB/transaction-abort-multiple-metadata-revert.html:
+        * web-platform-tests/IndexedDB/transaction-abort-object-store-metadata-revert.html:
+        * web-platform-tests/IndexedDB/upgrade-transaction-lifecycle-backend-aborted-expected.txt: Added.
+        * web-platform-tests/IndexedDB/upgrade-transaction-lifecycle-backend-aborted.html: Added.
+        * web-platform-tests/IndexedDB/upgrade-transaction-lifecycle-committed-expected.txt: Added.
+        * web-platform-tests/IndexedDB/upgrade-transaction-lifecycle-committed.html: Added.
+        * web-platform-tests/IndexedDB/upgrade-transaction-lifecycle-user-aborted-expected.txt: Added.
+        * web-platform-tests/IndexedDB/upgrade-transaction-lifecycle-user-aborted.html: Added.
+        * web-platform-tests/IndexedDB/w3c-import.log:
+        * web-platform-tests/LICENSE.md: Added.
+        * web-platform-tests/README.md:
+        * web-platform-tests/XMLHttpRequest/OWNERS:
+        * web-platform-tests/XMLHttpRequest/open-url-multi-window-6.htm:
+        * web-platform-tests/XMLHttpRequest/resources/xmlhttprequest-event-order.js:
+        (getNextEvent):
+        (global.assert_xhr_event_order_matches):
+        * web-platform-tests/check_stability.py:
+        (GitHub.__init__):
+        (GitHub.patch):
+        (GitHub.post_comment):
+        (Firefox.install):
+        (Firefox._latest_geckodriver_version):
+        (call):
+        (setup_github_logging):
+        (get_sha1):
+        (get_affected_testfiles):
+        (write_inconsistent):
+        (write_results):
+        (main):
+        * web-platform-tests/ci_built_diff.sh: Added.
+        * web-platform-tests/common/redirect-opt-in.py: Added.
+        (main):
+        * web-platform-tests/common/w3c-import.log:
+        * web-platform-tests/custom-elements/parser/parser-uses-constructed-element-expected.txt:
+        * web-platform-tests/custom-elements/parser/parser-uses-constructed-element.html:
+        * web-platform-tests/dom/OWNERS:
+        * web-platform-tests/dom/events/w3c-import.log:
+        * web-platform-tests/dom/historical-expected.txt:
+        * web-platform-tests/dom/historical.html:
+        * web-platform-tests/dom/nodes/Node-cloneNode-expected.txt:
+        * web-platform-tests/dom/nodes/Node-cloneNode.html:
+        * web-platform-tests/domparsing/w3c-import.log:
+        * web-platform-tests/encrypted-media/clearkey-mp4-setmediakeys.html:
+        * web-platform-tests/encrypted-media/clearkey-not-callable-after-createsession.html:
+        * web-platform-tests/encrypted-media/content/video_512x288_h264-360k_multikey_key1_dashinit.mp4: Added.
+        * web-platform-tests/encrypted-media/drm-events.html:
+        * web-platform-tests/encrypted-media/drm-expiration.html:
+        * web-platform-tests/encrypted-media/drm-keystatuses-multiple-sessions.html:
+        * web-platform-tests/encrypted-media/drm-keystatuses.html:
+        * web-platform-tests/encrypted-media/drm-mp4-playback-destroy-persistent-license.html:
+        * web-platform-tests/encrypted-media/drm-mp4-playback-persistent-license-events.html:
+        * web-platform-tests/encrypted-media/drm-mp4-playback-persistent-license.html:
+        * web-platform-tests/encrypted-media/drm-mp4-playback-persistent-usage-record-events.html:
+        * web-platform-tests/encrypted-media/drm-mp4-playback-retrieve-persistent-usage-record.html:
+        * web-platform-tests/encrypted-media/drm-mp4-playback-temporary-clear-encrypted.html:
+        * web-platform-tests/encrypted-media/drm-mp4-playback-temporary-encrypted-clear.html:
+        * web-platform-tests/encrypted-media/drm-mp4-playback-temporary-multikey.html:
+        * web-platform-tests/encrypted-media/drm-mp4-playback-temporary-multisession.html:
+        * web-platform-tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-after-src.html:
+        * web-platform-tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-after-update.html:
+        * web-platform-tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-immediately.html:
+        * web-platform-tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-onencrypted.html:
+        * web-platform-tests/encrypted-media/drm-mp4-playback-temporary-two-videos.html:
+        * web-platform-tests/encrypted-media/drm-mp4-playback-temporary-waitingforkey.html:
+        * web-platform-tests/encrypted-media/drm-mp4-playback-temporary.html:
+        * web-platform-tests/encrypted-media/drm-mp4-requestmediakeysystemaccess.html:
+        * web-platform-tests/encrypted-media/drm-mp4-setmediakeys-again-after-playback.html:
+        * web-platform-tests/encrypted-media/drm-mp4-setmediakeys-again-after-resetting-src.html:
+        * web-platform-tests/encrypted-media/drm-mp4-setmediakeys-at-same-time.html:
+        * web-platform-tests/encrypted-media/drm-mp4-setmediakeys-multiple-times-with-different-mediakeys.html:
+        * web-platform-tests/encrypted-media/drm-mp4-setmediakeys-multiple-times-with-the-same-mediakeys.html:
+        * web-platform-tests/encrypted-media/drm-mp4-setmediakeys-to-multiple-video-elements.html:
+        * web-platform-tests/encrypted-media/drm-mp4-setmediakeys.html:
+        * web-platform-tests/encrypted-media/drm-mp4-waiting-for-a-key.html:
+        * web-platform-tests/encrypted-media/drm-not-callable-after-createsession.html:
+        * web-platform-tests/encrypted-media/drm-temporary-license-type.html:
+        * web-platform-tests/fetch/api/basic/request-headers-expected.txt:
+        * web-platform-tests/fetch/api/basic/request-headers-worker-expected.txt:
+        * web-platform-tests/fetch/api/basic/request-headers.js:
+        (checkContentType):
+        (requestOriginHeader):
+        * web-platform-tests/fetch/api/basic/request-upload-expected.txt:
+        * web-platform-tests/fetch/api/basic/request-upload-worker-expected.txt:
+        * web-platform-tests/fetch/api/basic/request-upload.js:
+        * web-platform-tests/fetch/api/headers/headers-basic-expected.txt:
+        * web-platform-tests/fetch/api/headers/headers-basic.html:
+        * web-platform-tests/fetch/api/headers/headers-idl.html:
+        * web-platform-tests/fetch/api/redirect/redirect-count-worker.html:
+        * web-platform-tests/fetch/api/redirect/redirect-count.html:
+        * web-platform-tests/fetch/api/redirect/redirect-count.js:
+        (redirectCount):
+        * web-platform-tests/fetch/api/redirect/redirect-referrer-expected.txt: Added.
+        * web-platform-tests/fetch/api/redirect/redirect-referrer-worker-expected.txt: Added.
+        * web-platform-tests/fetch/api/redirect/redirect-referrer-worker.html: Copied from LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-count-worker.html.
+        * web-platform-tests/fetch/api/redirect/redirect-referrer.html: Copied from LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-count.html.
+        * web-platform-tests/fetch/api/redirect/redirect-referrer.js: Added.
+        (testReferrerAfterRedirection):
+        * web-platform-tests/fetch/api/redirect/w3c-import.log:
+        * web-platform-tests/fetch/api/request/multi-globals/current/current.html:
+        * web-platform-tests/fetch/api/request/multi-globals/incumbent/incumbent.html:
+        * web-platform-tests/fetch/api/request/multi-globals/url-parsing.html:
+        * web-platform-tests/fetch/api/request/request-bad-port-expected.txt: Added.
+        * web-platform-tests/fetch/api/request/request-bad-port.html: Added.
+        * web-platform-tests/fetch/api/request/request-idl.html:
+        * web-platform-tests/fetch/api/request/request-init-001.sub-expected.txt:
+        * web-platform-tests/fetch/api/request/request-init-001.sub.html:
+        * web-platform-tests/fetch/api/request/w3c-import.log:
+        * web-platform-tests/fetch/api/resources/redirect.py:
+        (main):
+        * web-platform-tests/fetch/api/response/multi-globals/current/current.html:
+        * web-platform-tests/fetch/api/response/multi-globals/incumbent/incumbent.html:
+        * web-platform-tests/fetch/api/response/multi-globals/url-parsing.html:
+        * web-platform-tests/fetch/api/response/response-consume-expected.txt:
+        * web-platform-tests/fetch/api/response/response-consume.html:
+        * web-platform-tests/fetch/nosniff/image-expected.txt:
+        * web-platform-tests/fetch/nosniff/image.html:
+        * web-platform-tests/html/OWNERS:
+        * web-platform-tests/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/resources/post_name_on_load.html: Added.
+        * web-platform-tests/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/resources/w3c-import.log:
+        * web-platform-tests/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/resume-timer-on-history-back-expected.txt: Added.
+        * web-platform-tests/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/resume-timer-on-history-back.html: Added.
+        * web-platform-tests/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/w3c-import.log:
+        * web-platform-tests/html/browsers/browsing-the-web/history-traversal/resources/a.html: Added.
+        * web-platform-tests/html/browsers/browsing-the-web/history-traversal/resources/b.html: Added.
+        * web-platform-tests/html/browsers/browsing-the-web/history-traversal/resources/c.html: Added.
+        * web-platform-tests/html/browsers/browsing-the-web/history-traversal/resources/w3c-import.log: Copied from LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/resources/w3c-import.log.
+        * web-platform-tests/html/browsers/browsing-the-web/history-traversal/w3c-import.log:
+        * web-platform-tests/html/browsers/history/the-location-interface/location-pathname-setter-question-mark-expected.txt: Added.
+        * web-platform-tests/html/browsers/history/the-location-interface/location-pathname-setter-question-mark.html: Added.
+        * web-platform-tests/html/browsers/history/the-location-interface/location-protocol-setter-expected.txt: Added.
+        * web-platform-tests/html/browsers/history/the-location-interface/location-protocol-setter-non-broken-expected.txt: Added.
+        * web-platform-tests/html/browsers/history/the-location-interface/location-protocol-setter-non-broken-weird-expected.txt: Added.
+        * web-platform-tests/html/browsers/history/the-location-interface/location-protocol-setter-non-broken-weird.html: Added.
+        * web-platform-tests/html/browsers/history/the-location-interface/location-protocol-setter-non-broken.html: Added.
+        * web-platform-tests/html/browsers/history/the-location-interface/location-protocol-setter.html: Added.
+        * web-platform-tests/html/browsers/history/the-location-interface/w3c-import.log:
+        * web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects-exceptions-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects-expected.txt.
+        * web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects-exceptions.html: Copied from LayoutTests/imported/w3c/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html.
+        * web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects-expected.txt:
+        * web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window-expected.txt:
+        * web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html:
+        * web-platform-tests/html/browsers/origin/cross-origin-objects/frame.html:
+        * web-platform-tests/html/browsers/origin/cross-origin-objects/w3c-import.log:
+        * web-platform-tests/html/browsers/origin/cross-origin-objects/win-documentdomain.sub.html:
+        * web-platform-tests/html/dom/elements-embedded.js:
+        * web-platform-tests/html/dom/elements-metadata.js:
+        * web-platform-tests/html/dom/elements-misc.js:
+        * web-platform-tests/html/dom/elements-text.js:
+        * web-platform-tests/html/dom/elements/elements-in-the-dom/historical-expected.txt: Added.
+        * web-platform-tests/html/dom/elements/elements-in-the-dom/historical.html: Added.
+        * web-platform-tests/html/dom/elements/elements-in-the-dom/w3c-import.log:
+        * web-platform-tests/html/dom/interfaces.html:
+        * web-platform-tests/html/dom/reflection-embedded-expected.txt:
+        * web-platform-tests/html/dom/reflection-metadata-expected.txt:
+        * web-platform-tests/html/dom/reflection-misc-expected.txt:
+        * web-platform-tests/html/dom/reflection-text-expected.txt:
+        * web-platform-tests/html/resources/common.js:
+        * web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/allow-scripts-flag-changing-1-expected.txt: Added.
+        * web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/allow-scripts-flag-changing-1.html: Added.
+        * web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/allow-scripts-flag-changing-2-expected.txt: Added.
+        * web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/allow-scripts-flag-changing-2.html: Added.
+        * web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/dynamic-append-expected.txt: Added.
+        * web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/dynamic-append.html: Added.
+        * web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/moving-documents-expected.txt: Added.
+        * web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/moving-documents.html: Added.
+        * web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/not-in-shadow-tree-expected.txt: Added.
+        * web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/not-in-shadow-tree.html: Added.
+        * web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/w3c-import.log:
+        * web-platform-tests/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.whitespace.html:
+        * web-platform-tests/html/semantics/embedded-content/the-canvas-element/size.attributes.setAttribute.whitespace.html:
+        * web-platform-tests/html/semantics/embedded-content/the-canvas-element/toDataURL.nocontext.html:
+        * web-platform-tests/html/semantics/embedded-content/the-canvas-element/toDataURL.png.complexcolours.png:
+        * web-platform-tests/html/semantics/embedded-content/the-img-element/image.png: Added.
+        * web-platform-tests/html/semantics/embedded-content/the-img-element/update-src-complete-expected.txt: Added.
+        * web-platform-tests/html/semantics/embedded-content/the-img-element/update-src-complete.html: Added.
+        * web-platform-tests/html/semantics/embedded-content/the-img-element/w3c-import.log:
+        * web-platform-tests/html/semantics/forms/constraints/form-validation-willValidate-expected.txt:
+        * web-platform-tests/html/semantics/forms/constraints/form-validation-willValidate.html:
+        * web-platform-tests/html/semantics/forms/form-control-infrastructure/form-expected.txt:
+        * web-platform-tests/html/semantics/forms/form-control-infrastructure/form.html:
+        * web-platform-tests/html/semantics/forms/form-submission-0/submit-entity-body.html:
+        * web-platform-tests/html/semantics/forms/form-submission-0/url-encoded-expected.txt:
+        * web-platform-tests/html/semantics/forms/form-submission-0/url-encoded.html:
+        * web-platform-tests/html/semantics/forms/resetting-a-form/reset-form.html:
+        * web-platform-tests/html/semantics/forms/the-form-element/form-nameditem-expected.txt:
+        * web-platform-tests/html/semantics/forms/the-form-element/form-nameditem.html:
+        * web-platform-tests/html/semantics/forms/the-input-element/clone-expected.txt: Added.
+        * web-platform-tests/html/semantics/forms/the-input-element/clone.html: Added.
+        * web-platform-tests/html/semantics/forms/the-input-element/radio-expected.txt:
+        * web-platform-tests/html/semantics/forms/the-input-element/radio.html:
+        * web-platform-tests/html/semantics/forms/the-input-element/w3c-import.log:
+        * web-platform-tests/html/semantics/forms/the-label-element/labelable-elements-expected.txt:
+        * web-platform-tests/html/semantics/forms/the-label-element/labelable-elements.html:
+        * web-platform-tests/html/semantics/forms/the-select-element/select-validity-expected.txt: Added.
+        * web-platform-tests/html/semantics/forms/the-select-element/select-validity.html: Added.
+        * web-platform-tests/html/semantics/forms/the-select-element/select-value-expected.txt: Added.
+        * web-platform-tests/html/semantics/forms/the-select-element/select-value.html: Added.
+        * web-platform-tests/html/semantics/forms/the-select-element/w3c-import.log:
+        * web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html:
+        * web-platform-tests/html/semantics/interfaces-expected.txt:
+        * web-platform-tests/html/semantics/interfaces.js:
+        * web-platform-tests/html/semantics/scripting-1/the-template-element/template-element/template-as-a-descendant-expected.txt:
+        * web-platform-tests/html/semantics/scripting-1/the-template-element/template-element/template-as-a-descendant.html:
+        * web-platform-tests/html/syntax/parsing/html5lib_entities01-expected.txt:
+        * web-platform-tests/html/syntax/parsing/html5lib_entities01.html:
+        * web-platform-tests/html/syntax/parsing/html5lib_entities02-expected.txt:
+        * web-platform-tests/html/syntax/parsing/html5lib_entities02.html:
+        * web-platform-tests/html/syntax/parsing/html5lib_innerHTML_adoption01-expected.txt: Added.
+        * web-platform-tests/html/syntax/parsing/html5lib_innerHTML_adoption01.html: Added.
+        * web-platform-tests/html/syntax/parsing/html5lib_innerHTML_foreign-fragment-expected.txt: Added.
+        * web-platform-tests/html/syntax/parsing/html5lib_innerHTML_foreign-fragment.html: Added.
+        * web-platform-tests/html/syntax/parsing/html5lib_innerHTML_math-expected.txt: Added.
+        * web-platform-tests/html/syntax/parsing/html5lib_innerHTML_math.html: Added.
+        * web-platform-tests/html/syntax/parsing/html5lib_innerHTML_webkit02-expected.txt: Added.
+        * web-platform-tests/html/syntax/parsing/html5lib_innerHTML_webkit02.html: Added.
+        * web-platform-tests/html/syntax/parsing/html5lib_isindex-expected.txt:
+        * web-platform-tests/html/syntax/parsing/html5lib_isindex.html:
+        * web-platform-tests/html/syntax/parsing/html5lib_menuitem-element-expected.txt: Added.
+        * web-platform-tests/html/syntax/parsing/html5lib_menuitem-element.html: Added.
+        * web-platform-tests/html/syntax/parsing/html5lib_namespace-sensitivity-expected.txt: Added.
+        * web-platform-tests/html/syntax/parsing/html5lib_namespace-sensitivity.html: Added.
+        * web-platform-tests/html/syntax/parsing/html5lib_ruby-expected.txt: Added.
+        * web-platform-tests/html/syntax/parsing/html5lib_ruby.html: Added.
+        * web-platform-tests/html/syntax/parsing/html5lib_template-expected.txt:
+        * web-platform-tests/html/syntax/parsing/html5lib_template.html:
+        * web-platform-tests/html/syntax/parsing/html5lib_tests11-expected.txt:
+        * web-platform-tests/html/syntax/parsing/html5lib_tests11.html:
+        * web-platform-tests/html/syntax/parsing/html5lib_tests19-expected.txt:
+        * web-platform-tests/html/syntax/parsing/html5lib_tests19.html:
+        * web-platform-tests/html/syntax/parsing/html5lib_tests2-expected.txt:
+        * web-platform-tests/html/syntax/parsing/html5lib_tests2.html:
+        * web-platform-tests/html/syntax/parsing/html5lib_tests20-expected.txt:
+        * web-platform-tests/html/syntax/parsing/html5lib_tests20.html:
+        * web-platform-tests/html/syntax/parsing/html5lib_tests25-expected.txt:
+        * web-platform-tests/html/syntax/parsing/html5lib_tests25.html:
+        * web-platform-tests/html/syntax/parsing/html5lib_tests7-expected.txt:
+        * web-platform-tests/html/syntax/parsing/html5lib_tests7.html:
+        * web-platform-tests/html/syntax/parsing/html5lib_webkit01-expected.txt:
+        * web-platform-tests/html/syntax/parsing/html5lib_webkit01.html:
+        * web-platform-tests/html/syntax/parsing/html5lib_webkit02-expected.txt:
+        * web-platform-tests/html/syntax/parsing/html5lib_webkit02.html:
+        * web-platform-tests/html/syntax/parsing/test.js:
+        (test_serializer):
+        * web-platform-tests/html/syntax/parsing/w3c-import.log:
+        * web-platform-tests/html/webappapis/scripting/events/event-handler-onauxclick-expected.txt: Added.
+        * web-platform-tests/html/webappapis/scripting/events/event-handler-onauxclick.html: Added.
+        * web-platform-tests/html/webappapis/scripting/events/w3c-import.log:
+        * web-platform-tests/html/webappapis/scripting/processing-model-2/compile-error-same-origin-with-hash-expected.txt: Added.
+        * web-platform-tests/html/webappapis/scripting/processing-model-2/compile-error-same-origin-with-hash.html: Added.
+        * web-platform-tests/html/webappapis/scripting/processing-model-2/runtime-error-same-origin-with-hash-expected.txt: Added.
+        * web-platform-tests/html/webappapis/scripting/processing-model-2/runtime-error-same-origin-with-hash.html: Added.
+        * web-platform-tests/html/webappapis/scripting/processing-model-2/w3c-import.log:
+        * web-platform-tests/media-source/mediasource-errors.html:
+        * web-platform-tests/resource-timing/resource_cached-expected.txt: Added.
+        * web-platform-tests/resource-timing/resource_cached.htm: Added.
+        * web-platform-tests/resource-timing/resource_connection_reuse-expected.txt: Added.
+        * web-platform-tests/resource-timing/resource_connection_reuse.html: Added.
+        * web-platform-tests/resource-timing/resource_dynamic_insertion-expected.txt: Added.
+        * web-platform-tests/resource-timing/resource_dynamic_insertion.html: Added.
+        * web-platform-tests/resource-timing/resources/fake_responses.html: Added.
+        * web-platform-tests/resource-timing/resources/fake_responses.py: Added.
+        (main):
+        * web-platform-tests/resource-timing/resources/inject_resource_test.html: Added.
+        * web-platform-tests/resource-timing/resources/w3c-import.log:
+        * web-platform-tests/resource-timing/resources/webperftestharnessextension.js: Added.
+        (test_method_exists):
+        (test_noless_than):
+        (test_resource_entries):
+        (performance_entrylist_checker.entry_check):
+        (performance_entrylist_checker.entrylist_order_check):
+        (performance_entrylist_checker.entrylist_check):
+        (performance_entrylist_checker):
+        (PerformanceContext):
+        (PerformanceContext.prototype.initialMeasures):
+        (PerformanceContext.prototype.mark):
+        (PerformanceContext.prototype.measure):
+        (PerformanceContext.prototype.clearMarks):
+        (PerformanceContext.prototype.clearMeasures):
+        (PerformanceContext.prototype.getEntries):
+        (PerformanceContext.prototype.getEntriesByType):
+        (PerformanceContext.prototype.getEntriesByName):
+        (PerformanceContext.prototype.setResourceTimingBufferSize):
+        (PerformanceContext.prototype.registerResourceTimingBufferFullCallback):
+        (PerformanceContext.prototype.clearResourceTimings):
+        * web-platform-tests/resource-timing/w3c-import.log:
+        * web-platform-tests/shadow-dom/slotchange-event-expected.txt:
+        * web-platform-tests/shadow-dom/slotchange-event.html:
+        * web-platform-tests/update-built-tests.sh: Added.
+        * web-platform-tests/url/OWNERS:
+        * web-platform-tests/url/a-element-expected.txt:
+        * web-platform-tests/url/a-element-origin-expected.txt:
+        * web-platform-tests/url/a-element-origin-xhtml-expected.txt:
+        * web-platform-tests/url/a-element-origin-xhtml.xhtml:
+        * web-platform-tests/url/a-element-origin.html:
+        * web-platform-tests/url/a-element-xhtml-expected.txt:
+        * web-platform-tests/url/a-element-xhtml.xhtml:
+        * web-platform-tests/url/a-element.html:
+        * web-platform-tests/url/setters_tests.json:
+        * web-platform-tests/url/url-constructor-expected.txt:
+        * web-platform-tests/url/url-origin-expected.txt:
+        * web-platform-tests/url/url-setters-expected.txt:
+        * web-platform-tests/url/urlsearchparams-append.html:
+        * web-platform-tests/url/urlsearchparams-constructor-expected.txt:
+        * web-platform-tests/url/urlsearchparams-constructor.html:
+        * web-platform-tests/url/urlsearchparams-delete.html:
+        * web-platform-tests/url/urlsearchparams-get.html:
+        * web-platform-tests/url/urlsearchparams-getall.html:
+        * web-platform-tests/url/urlsearchparams-has.html:
+        * web-platform-tests/url/urlsearchparams-set.html:
+        * web-platform-tests/url/urlsearchparams-stringifier.html:
+        * web-platform-tests/url/urltestdata.json:
+        * web-platform-tests/w3c-import.log:
+        * web-platform-tests/webrtc/RTCDataChannelEvent-constructor-expected.txt: Added.
+        * web-platform-tests/webrtc/RTCDataChannelEvent-constructor.html: Added.
+        * web-platform-tests/webrtc/RTCPeerConnectionIceEvent-constructor-expected.txt: Added.
+        * web-platform-tests/webrtc/RTCPeerConnectionIceEvent-constructor.html: Added.
+        * web-platform-tests/webrtc/datachannel-emptystring.html:
+        * web-platform-tests/webrtc/simplecall.html:
+        * web-platform-tests/webrtc/w3c-import.log:
+
 2017-01-14  Chris Dumez  <cdumez@apple.com>
 
         Align the innerText setter with the HTML spec and Gecko
index ef0162e..dacf50b 100644 (file)
@@ -83,20 +83,24 @@ web-platform-tests/XMLHttpRequest/send-authentication-basic-setrequestheader.htm
 web-platform-tests/XMLHttpRequest/send-authentication-competing-names-passwords.htm [ Skip ]
 web-platform-tests/XMLHttpRequest/send-entity-body-basic.htm [ Skip ]
 web-platform-tests/XMLHttpRequest/send-network-error-async-events.sub.htm [ Skip ]
+web-platform-tests/accelerometer [ Skip ]
 web-platform-tests/ambient-light [ Skip ]
 web-platform-tests/annotation-model [ Skip ]
 web-platform-tests/annotation-protocol [ Skip ]
 web-platform-tests/annotation-vocab [ Skip ]
 web-platform-tests/animation-timing [ Skip ]
 web-platform-tests/app-uri [ Skip ]
+web-platform-tests/auxclick [ Skip ]
 web-platform-tests/battery-status [ Skip ]
 web-platform-tests/bluetooth [ Skip ]
 web-platform-tests/browser-payment-api [ Skip ]
+web-platform-tests/clear-site-data [ Skip ]
 web-platform-tests/compat [ Skip ]
 web-platform-tests/console [Skip]
 web-platform-tests/content-security-policy [ Skip ]
 web-platform-tests/cookies [Skip]
 web-platform-tests/cors [ Skip ]
+web-platform-tests/css-values [ Skip ]
 #web-platform-tests/custom-elements [ Pass ]
 web-platform-tests/custom-elements/v0 [ Skip ]
 web-platform-tests/cssom [ Skip ]
@@ -160,8 +164,9 @@ web-platform-tests/eventsource [ Skip ]
 web-platform-tests/ext-xhtml-pubid [ Skip ]
 #web-platform-tests/fetch [ Pass ]
 web-platform-tests/fullscreen [ Skip ]
-web-platform-tests/geolocation-API [ Skip ]
 web-platform-tests/gamepad [ Skip ]
+web-platform-tests/geolocation-API [ Skip ]
+web-platform-tests/gyroscope [ Skip ]
 web-platform-tests/hr-time [ Skip ]
 #web-platform-tests/html [ Pass ]
 web-platform-tests/html/browsers/browsing-the-web/history-traversal/browsing_context_name.html [ Skip ]
@@ -241,6 +246,7 @@ web-platform-tests/infrastructure [ Skip ]
 web-platform-tests/innerText [ Skip ]
 web-platform-tests/input-events [ Skip ]
 web-platform-tests/js [ Skip ]
+web-platform-tests/magnetometer [ Skip ]
 web-platform-tests/mathml [ Skip ]
 web-platform-tests/mediacapture-record [ Skip ]
 web-platform-tests/mediacapture-streams [ Skip ]
@@ -248,6 +254,7 @@ web-platform-tests/microdata [ Skip ]
 web-platform-tests/mixed-content [ Skip ]
 web-platform-tests/navigation-timing [ Skip ]
 web-platform-tests/notifications [ Skip ]
+web-platform-tests/offscreen-canvas [ Skip ]
 web-platform-tests/old-tests [ Skip ]
 web-platform-tests/orientation-event [ Skip ]
 web-platform-tests/page-visibility [ Skip ]
@@ -255,6 +262,7 @@ web-platform-tests/payment-request [ Skip ]
 web-platform-tests/performance-timeline [ Skip ]
 web-platform-tests/pointerevents [ Skip ]
 web-platform-tests/pointerlock [ Skip ]
+web-platform-tests/preload [ Skip ]
 web-platform-tests/progress-events [ Skip ]
 web-platform-tests/proximity [ Skip ]
 web-platform-tests/quirks-mode [ Skip ]
@@ -274,6 +282,7 @@ web-platform-tests/testharness_runner.html [ Skip ]
 #web-platform-tests/touch-events [ Pass ]
 web-platform-tests/typedarrays [ Skip ]
 web-platform-tests/uievents [ Skip ]
+web-platform-tests/upgrade-insecure-requests [ Skip ]
 #web-platform-tests/url [ Pass ]
 web-platform-tests/user-timing [ Skip ]
 web-platform-tests/vibration [ Skip ]
@@ -287,5 +296,6 @@ web-platform-tests/webmessaging [ Skip ]
 #web-platform-tests/webrtc [ Pass ]
 web-platform-tests/websockets [ Skip ]
 web-platform-tests/webstorage [ Skip ]
+web-platform-tests/webvr [ SKip ]
 web-platform-tests/webvtt [ Skip ]
 web-platform-tests/workers [ Skip ]
index a82b05c..da07b35 100644 (file)
@@ -15,7 +15,7 @@
     {
         "name": "web-platform-tests",
         "url": "https://github.com/w3c/web-platform-tests.git",
-        "revision": "a4c2b37",
+        "revision": "73f4ad361ca56d890b5f46d62c3bc84371a77e10",
         "paths_to_skip": [
             "conformance-checkers",
             "docs",
index 930199e..c637ae8 100644 (file)
         "web-platform-tests/html/syntax/parsing/foreign_content_013.html",
         "web-platform-tests/html/webappapis/scripting/events/onerroreventhandler-frame.html",
         "web-platform-tests/mathml/relations/html5-tree/unique-identifier-1-iframe.html",
-        "web-platform-tests/resource-timing/iframe-setdomain.sub.html"
+        "web-platform-tests/resource-timing/iframe-setdomain.sub.html",
+        "web-platform-tests/upgrade-insecure-requests/support/post-origin-to-parent.html"
     ]
 }
\ No newline at end of file
index f8dca52..b14d301 100644 (file)
@@ -1,4 +1,5 @@
-<!DOCTYPE html>
+<!doctype html>
+<meta charset="utf8">
 <title>IndexedDB: index renaming support in aborted transactions</title>
 <link rel="help"
       href="https://w3c.github.io/IndexedDB/#dom-idbindex-name">
@@ -7,6 +8,7 @@
 <script src="/resources/testharnessreport.js"></script>
 <script src="support-promises.js"></script>
 <script>
+'use strict';
 
 promise_test(testCase => {
     const dbName = databaseName(testCase);
index 1f50f36..b9cbaf2 100644 (file)
@@ -1,4 +1,5 @@
-<!DOCTYPE html>
+<!doctype html>
+<meta charset="utf8">
 <title>IndexedDB: index renaming error handling</title>
 <link rel="help"
       href="https://w3c.github.io/IndexedDB/#dom-idbindex-name">
@@ -7,6 +8,7 @@
 <script src="/resources/testharnessreport.js"></script>
 <script src="support-promises.js"></script>
 <script>
+'use strict';
 
 promise_test(testCase => {
     return createDatabase(testCase, (database, transaction) => {
index 2ef26d2..7eb182f 100644 (file)
@@ -1,4 +1,6 @@
-<!DOCTYPE html>
+<!doctype html>
+<meta charset="utf8">
+<meta name="timeout" content="long">
 <title>IndexedDB: index renaming support</title>
 <link rel="help"
       href="https://w3c.github.io/IndexedDB/#dom-idbindex-name">
@@ -7,6 +9,7 @@
 <script src="/resources/testharnessreport.js"></script>
 <script src="support-promises.js"></script>
 <script>
+'use strict';
 
 promise_test(testCase => {
     let authorIndex = null, authorIndex2 = null;
index b427672..70bfff6 100644 (file)
@@ -1,9 +1,12 @@
 
 PASS IDBKeyRange.only() - returns an IDBKeyRange and the properties are set correctly 
+PASS IDBKeyRange.only() - throws on invalid keys 
 PASS IDBKeyRange.lowerBound() - returns an IDBKeyRange and the properties are set correctly 
 PASS IDBKeyRange.lowerBound() - 'open' parameter has correct default set 
+PASS IDBKeyRange.lowerBound() - throws on invalid keys 
 PASS IDBKeyRange.upperBound() - returns an IDBKeyRange and the properties are set correctly 
 PASS IDBKeyRange.upperBound() - 'open' parameter has correct default set 
+PASS IDBKeyRange.upperBound() - throws on invalid keys 
 PASS IDBKeyRange.bound() - returns an IDBKeyRange and the properties are set correctly 
 PASS IDBKeyRange.bound() - 'lowerOpen' and 'upperOpen' parameters have correct defaults set 
 
index dd6e5f7..a7f4934 100644 (file)
         assert_false(keyRange.upperOpen, "keyRange.upperOpen");
     }, "IDBKeyRange.only() - returns an IDBKeyRange and the properties are set correctly");
 
+    test( function() {
+        assert_throws('DataError', function() { IDBKeyRange.only(undefined); }, 'undefined is not a valid key');
+        assert_throws('DataError', function() { IDBKeyRange.only(null); }, 'null is not a valid key');
+        assert_throws('DataError', function() { IDBKeyRange.only({}); }, 'Object is not a valid key');
+        assert_throws('DataError', function() { IDBKeyRange.only(Symbol()); }, 'Symbol is not a valid key');
+        assert_throws('DataError', function() { IDBKeyRange.only(true); }, 'boolean is not a valid key');
+        assert_throws('DataError', function() { IDBKeyRange.only(() => {}); }, 'function is not a valid key');
+    }, "IDBKeyRange.only() - throws on invalid keys");
+
     // lowerBound
     test( function() {
         var keyRange = IDBKeyRange.lowerBound(1, true)
         assert_false(keyRange.lowerOpen, "keyRange.lowerOpen");
     }, "IDBKeyRange.lowerBound() - 'open' parameter has correct default set");
 
+    test( function() {
+        assert_throws('DataError', function() { IDBKeyRange.lowerBound(undefined); }, 'undefined is not a valid key');
+        assert_throws('DataError', function() { IDBKeyRange.lowerBound(null); }, 'null is not a valid key');
+        assert_throws('DataError', function() { IDBKeyRange.lowerBound({}); }, 'Object is not a valid key');
+        assert_throws('DataError', function() { IDBKeyRange.lowerBound(Symbol()); }, 'Symbol is not a valid key');
+        assert_throws('DataError', function() { IDBKeyRange.lowerBound(true); }, 'boolean is not a valid key');
+        assert_throws('DataError', function() { IDBKeyRange.lowerBound(() => {}); }, 'function is not a valid key');
+    }, "IDBKeyRange.lowerBound() - throws on invalid keys");
+
     // upperBound
     test( function() {
             var keyRange = IDBKeyRange.upperBound(1, true);
         assert_false(keyRange.upperOpen, "keyRange.upperOpen");
     }, "IDBKeyRange.upperBound() - 'open' parameter has correct default set");
 
+    test( function() {
+        assert_throws('DataError', function() { IDBKeyRange.upperBound(undefined); }, 'undefined is not a valid key');
+        assert_throws('DataError', function() { IDBKeyRange.upperBound(null); }, 'null is not a valid key');
+        assert_throws('DataError', function() { IDBKeyRange.upperBound({}); }, 'Object is not a valid key');
+        assert_throws('DataError', function() { IDBKeyRange.upperBound(Symbol()); }, 'Symbol is not a valid key');
+        assert_throws('DataError', function() { IDBKeyRange.upperBound(true); }, 'boolean is not a valid key');
+        assert_throws('DataError', function() { IDBKeyRange.upperBound(() => {}); }, 'function is not a valid key');
+    }, "IDBKeyRange.upperBound() - throws on invalid keys");
+
     // bound
     test( function() {
         var keyRange = IDBKeyRange.bound(1, 2, true, true);
index b59117a..6e16c31 100644 (file)
@@ -1,4 +1,5 @@
-<!DOCTYPE html>
+<!doctype html>
+<meta charset="utf8">
 <title>IndexedDB: object store renaming support in aborted transactions</title>
 <link rel="help"
       href="https://w3c.github.io/IndexedDB/#dom-idbobjectstore-name">
@@ -7,6 +8,7 @@
 <script src="/resources/testharnessreport.js"></script>
 <script src="support-promises.js"></script>
 <script>
+'use strict';
 
 promise_test(testCase => {
     const dbName = databaseName(testCase);
index 8e603ba..9c791f9 100644 (file)
@@ -1,4 +1,5 @@
-<!DOCTYPE html>
+<!doctype html>
+<meta charset="utf8">
 <title>IndexedDB: object store renaming error handling</title>
 <link rel="help"
       href="https://w3c.github.io/IndexedDB/#dom-idbobjectstore-name">
@@ -7,6 +8,7 @@
 <script src="/resources/testharnessreport.js"></script>
 <script src="support-promises.js"></script>
 <script>
+'use strict';
 
 promise_test(testCase => {
     return createDatabase(testCase, (database, transaction) => {
index 47860b5..d21cb92 100644 (file)
@@ -1,4 +1,6 @@
-<!DOCTYPE html>
+<!doctype html>
+<meta charset="utf8">
+<meta name="timeout" content="long">
 <title>IndexedDB: object store renaming support</title>
 <link rel="help"
       href="https://w3c.github.io/IndexedDB/#dom-idbobjectstore-name">
@@ -7,6 +9,7 @@
 <script src="/resources/testharnessreport.js"></script>
 <script src="support-promises.js"></script>
 <script>
+'use strict';
 
 // Renames the 'books' store to 'renamed_books'.
 //
diff --git a/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbrequest_error-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbrequest_error-expected.txt
new file mode 100644 (file)
index 0000000..c1c9471
--- /dev/null
@@ -0,0 +1,3 @@
+
+PASS IDBRequest.error throws if ready state is pending 
+
diff --git a/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbrequest_error.html b/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbrequest_error.html
new file mode 100644 (file)
index 0000000..ae16b69
--- /dev/null
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>IDBRequest.error</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=support.js></script>
+
+<script>
+async_test(t => {
+  var open = createdb(t);
+  open.onupgradeneeded = t.step_func(e => {
+    var db = e.target.result;
+    db.createObjectStore('store');
+  });
+  open.onsuccess = t.step_func(e => {
+    var db = e.target.result;
+    var request = db.transaction('store').objectStore('store').get(0);
+
+    assert_equals(request.readyState, 'pending');
+    assert_throws('InvalidStateError', () => request.error,
+                  'IDBRequest.error should throw if request is pending');
+    t.done();
+  });
+}, 'IDBRequest.error throws if ready state is pending');
+</script>
diff --git a/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbrequest_result-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbrequest_result-expected.txt
new file mode 100644 (file)
index 0000000..55795e1
--- /dev/null
@@ -0,0 +1,3 @@
+
+PASS IDBRequest.result throws if ready state is pending 
+
diff --git a/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbrequest_result.html b/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbrequest_result.html
new file mode 100644 (file)
index 0000000..2978629
--- /dev/null
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>IDBRequest.result</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=support.js></script>
+
+<script>
+async_test(t => {
+  var open = createdb(t);
+  open.onupgradeneeded = t.step_func(e => {
+    var db = e.target.result;
+    db.createObjectStore('store');
+  });
+  open.onsuccess = t.step_func(e => {
+    var db = e.target.result;
+    var request = db.transaction('store').objectStore('store').get(0);
+
+    assert_equals(request.readyState, 'pending');
+    assert_throws('InvalidStateError', () => request.result,
+                  'IDBRequest.result should throw if request is pending');
+    t.done();
+  });
+}, 'IDBRequest.result throws if ready state is pending');
+</script>
index d001a48..59404f6 100644 (file)
@@ -1,4 +1,4 @@
-<!DOCTYPE html>
+<!doctype html>
 <meta charset="utf-8">
 <title>
   IndexedDB: scoping for database / object store / index names, and index keys
index cd23d94..2db0512 100644 (file)
@@ -1,42 +1,46 @@
-// Returns an IndexedDB database name likely to be unique to the test case.
-const databaseName = (testCase) => {
+'use strict';
+
+// Returns an IndexedDB database name that is unique to the test case.
+function databaseName(testCase) {
   return 'db' + self.location.pathname + '-' + testCase.name;
-};
+}
 
 // Creates an EventWatcher covering all the events that can be issued by
 // IndexedDB requests and transactions.
-const requestWatcher = (testCase, request) => {
+function requestWatcher(testCase, request) {
   return new EventWatcher(testCase, request,
-      ['error', 'success', 'upgradeneeded']);
-};
+      ['abort', 'blocked', 'complete', 'error', 'success', 'upgradeneeded']);
+}
 
 // Migrates an IndexedDB database whose name is unique for the test case.
 //
 // newVersion must be greater than the database's current version.
 //
 // migrationCallback will be called during a versionchange transaction and will
-// be given the created database and the versionchange transaction.
+// given the created database, the versionchange transaction, and the database
+// open request.
 //
 // Returns a promise. If the versionchange transaction goes through, the promise
 // resolves to an IndexedDB database that must be closed by the caller. If the
 // versionchange transaction is aborted, the promise resolves to an error.
-const migrateDatabase = (testCase, newVersion, migrationCallback) => {
+function migrateDatabase(testCase, newVersion, migrationCallback) {
   return migrateNamedDatabase(
       testCase, databaseName(testCase), newVersion, migrationCallback);
-};
+}
 
 // Migrates an IndexedDB database.
 //
 // newVersion must be greater than the database's current version.
 //
 // migrationCallback will be called during a versionchange transaction and will
-// be given the created database and the versionchange transaction.
+// given the created database, the versionchange transaction, and the database
+// open request.
 //
 // Returns a promise. If the versionchange transaction goes through, the promise
 // resolves to an IndexedDB database that must be closed by the caller. If the
 // versionchange transaction is aborted, the promise resolves to an error.
-const migrateNamedDatabase =
-    (testCase, databaseName, newVersion, migrationCallback) => {
+function migrateNamedDatabase(
+    testCase, databaseName, newVersion, migrationCallback) {
   // We cannot use eventWatcher.wait_for('upgradeneeded') here, because
   // the versionchange transaction auto-commits before the Promise's then
   // callback gets called.
@@ -45,62 +49,78 @@ const migrateNamedDatabase =
     request.onupgradeneeded = testCase.step_func(event => {
       const database = event.target.result;
       const transaction = event.target.transaction;
-      let abortCalled = false;
+      let shouldBeAborted = false;
+      let requestEventPromise = null;
 
       // We wrap IDBTransaction.abort so we can set up the correct event
       // listeners and expectations if the test chooses to abort the
       // versionchange transaction.
       const transactionAbort = transaction.abort.bind(transaction);
       transaction.abort = () => {
-        request.onerror = event => {
-          event.preventDefault();
-          resolve(event);
-        };
-        request.onsuccess = () => reject(new Error(
-            'indexedDB.open should not succeed after the versionchange ' +
-            'transaction is aborted'));
+        transaction._willBeAborted();
         transactionAbort();
-        abortCalled = true;
+      }
+      transaction._willBeAborted = () => {
+        requestEventPromise = new Promise((resolve, reject) => {
+          request.onerror = event => {
+            event.preventDefault();
+            resolve(event);
+          };
+          request.onsuccess = () => reject(new Error(
+              'indexedDB.open should not succeed for an aborted ' +
+              'versionchange transaction'));
+        });
+        shouldBeAborted = true;
       }
 
-      migrationCallback(database, transaction);
-      if (!abortCalled) {
+      // If migration callback returns a promise, we'll wait for it to resolve.
+      // This simplifies some tests.
+      const callbackResult = migrationCallback(database, transaction, request);
+      if (!shouldBeAborted) {
+        request.onerror = null;
         request.onsuccess = null;
-        resolve(requestWatcher(testCase, request).wait_for('success'));
+        requestEventPromise =
+            requestWatcher(testCase, request).wait_for('success');
       }
+
+      // requestEventPromise needs to be the last promise in the chain, because
+      // we want the event that it resolves to.
+      resolve(Promise.resolve(callbackResult).then(() => requestEventPromise));
     });
     request.onerror = event => reject(event.target.error);
     request.onsuccess = () => reject(new Error(
         'indexedDB.open should not succeed without creating a ' +
         'versionchange transaction'));
   }).then(event => event.target.result || event.target.error);
-};
+}
 
 // Creates an IndexedDB database whose name is unique for the test case.
 //
 // setupCallback will be called during a versionchange transaction, and will be
-// given the created database and the versionchange transaction.
+// given the created database, the versionchange transaction, and the database
+// open request.
 //
 // Returns a promise that resolves to an IndexedDB database. The caller must
 // close the database.
-const createDatabase = (testCase, setupCallback) => {
+function createDatabase(testCase, setupCallback) {
   return createNamedDatabase(testCase, databaseName(testCase), setupCallback);
-};
+}
 
 // Creates an IndexedDB database.
 //
 // setupCallback will be called during a versionchange transaction, and will be
-// given the created database and the versionchange transaction.
+// given the created database, the versionchange transaction, and the database
+// open request.
 //
 // Returns a promise that resolves to an IndexedDB database. The caller must
 // close the database.
-const createNamedDatabase = (testCase, databaseName, setupCallback) => {
+function createNamedDatabase(testCase, databaseName, setupCallback) {
   const request = indexedDB.deleteDatabase(databaseName);
   const eventWatcher = requestWatcher(testCase, request);
 
   return eventWatcher.wait_for('success').then(event =>
       migrateNamedDatabase(testCase, databaseName, 1, setupCallback));
-};
+}
 
 // Opens an IndexedDB database without performing schema changes.
 //
@@ -108,7 +128,7 @@ const createNamedDatabase = (testCase, databaseName, setupCallback) => {
 //
 // Returns a promise that resolves to an IndexedDB database. The caller must
 // close the database.
-const openDatabase = (testCase, version) => {
+function openDatabase(testCase, version) {
   return openNamedDatabase(testCase, databaseName(testCase), version);
 }
 
@@ -118,7 +138,7 @@ const openDatabase = (testCase, version) => {
 //
 // Returns a promise that resolves to an IndexedDB database. The caller must
 // close the database.
-const openNamedDatabase = (testCase, databaseName, version) => {
+function openNamedDatabase(testCase, databaseName, version) {
   const request = indexedDB.open(databaseName, version);
   const eventWatcher = requestWatcher(testCase, request);
   return eventWatcher.wait_for('success').then(event => event.target.result);
@@ -142,16 +162,16 @@ const createBooksStore = (testCase, database) => {
   for (let record of BOOKS_RECORD_DATA)
       store.put(record);
   return store;
-};
+}
 
 // Creates a 'not_books' object store used to test renaming into existing or
 // deleted store names.
-const createNotBooksStore = (testCase, database) => {
-    const store = database.createObjectStore('not_books');
-    store.createIndex('not_by_author', 'author');
-    store.createIndex('not_by_title', 'title', { unique: true });
-    return store;
-};
+function createNotBooksStore(testCase, database) {
+  const store = database.createObjectStore('not_books');
+  store.createIndex('not_by_author', 'author');
+  store.createIndex('not_by_title', 'title', { unique: true });
+  return store;
+}
 
 // Verifies that an object store's indexes match the indexes used to create the
 // books store in the test database's version 1.
@@ -159,7 +179,7 @@ const createNotBooksStore = (testCase, database) => {
 // The errorMessage is used if the assertions fail. It can state that the
 // IndexedDB implementation being tested is incorrect, or that the testing code
 // is using it incorrectly.
-const checkStoreIndexes = (testCase, store, errorMessage) => {
+function checkStoreIndexes (testCase, store, errorMessage) {
   assert_array_equals(
       store.indexNames, ['by_author', 'by_title'], errorMessage);
   const authorIndex = store.index('by_author');
@@ -168,7 +188,7 @@ const checkStoreIndexes = (testCase, store, errorMessage) => {
       checkAuthorIndexContents(testCase, authorIndex, errorMessage),
       checkTitleIndexContents(testCase, titleIndex, errorMessage),
   ]);
-};
+}
 
 // Verifies that an object store's key generator is in the same state as the
 // key generator created for the books store in the test database's version 1.
@@ -176,7 +196,7 @@ const checkStoreIndexes = (testCase, store, errorMessage) => {
 // The errorMessage is used if the assertions fail. It can state that the
 // IndexedDB implementation being tested is incorrect, or that the testing code
 // is using it incorrectly.
-const checkStoreGenerator = (testCase, store, expectedKey, errorMessage) => {
+function checkStoreGenerator(testCase, store, expectedKey, errorMessage) {
   const request = store.put(
       { title: 'Bedrock Nights ' + expectedKey, author: 'Barney' });
   const eventWatcher = requestWatcher(testCase, request);
@@ -184,7 +204,7 @@ const checkStoreGenerator = (testCase, store, expectedKey, errorMessage) => {
     const result = request.result;
     assert_equals(result, expectedKey, errorMessage);
   });
-};
+}
 
 // Verifies that an object store's contents matches the contents used to create
 // the books store in the test database's version 1.
@@ -192,7 +212,7 @@ const checkStoreGenerator = (testCase, store, expectedKey, errorMessage) => {
 // The errorMessage is used if the assertions fail. It can state that the
 // IndexedDB implementation being tested is incorrect, or that the testing code
 // is using it incorrectly.
-const checkStoreContents = (testCase, store, errorMessage) => {
+function checkStoreContents(testCase, store, errorMessage) {
   const request = store.get(123456);
   const eventWatcher = requestWatcher(testCase, request);
   return eventWatcher.wait_for('success').then(() => {
@@ -201,7 +221,7 @@ const checkStoreContents = (testCase, store, errorMessage) => {
     assert_equals(result.author, BOOKS_RECORD_DATA[0].author, errorMessage);
     assert_equals(result.title, BOOKS_RECORD_DATA[0].title, errorMessage);
   });
-};
+}
 
 // Verifies that index matches the 'by_author' index used to create the
 // by_author books store in the test database's version 1.
@@ -209,7 +229,7 @@ const checkStoreContents = (testCase, store, errorMessage) => {
 // The errorMessage is used if the assertions fail. It can state that the
 // IndexedDB implementation being tested is incorrect, or that the testing code
 // is using it incorrectly.
-const checkAuthorIndexContents = (testCase, index, errorMessage) => {
+function checkAuthorIndexContents(testCase, index, errorMessage) {
   const request = index.get(BOOKS_RECORD_DATA[2].author);
   const eventWatcher = requestWatcher(testCase, request);
   return eventWatcher.wait_for('success').then(() => {
@@ -217,7 +237,7 @@ const checkAuthorIndexContents = (testCase, index, errorMessage) => {
     assert_equals(result.isbn, BOOKS_RECORD_DATA[2].isbn, errorMessage);
     assert_equals(result.title, BOOKS_RECORD_DATA[2].title, errorMessage);
   });
-};
+}
 
 // Verifies that an index matches the 'by_title' index used to create the books
 // store in the test database's version 1.
@@ -225,7 +245,7 @@ const checkAuthorIndexContents = (testCase, index, errorMessage) => {
 // The errorMessage is used if the assertions fail. It can state that the
 // IndexedDB implementation being tested is incorrect, or that the testing code
 // is using it incorrectly.
-const checkTitleIndexContents = (testCase, index, errorMessage) => {
+function checkTitleIndexContents(testCase, index, errorMessage) {
   const request = index.get(BOOKS_RECORD_DATA[2].title);
   const eventWatcher = requestWatcher(testCase, request);
   return eventWatcher.wait_for('success').then(() => {
@@ -233,4 +253,4 @@ const checkTitleIndexContents = (testCase, index, errorMessage) => {
     assert_equals(result.isbn, BOOKS_RECORD_DATA[2].isbn, errorMessage);
     assert_equals(result.author, BOOKS_RECORD_DATA[2].author, errorMessage);
   });
-};
+}
index 770d623..c916a91 100644 (file)
@@ -1,4 +1,5 @@
-<!DOCTYPE html>
+<!doctype html>
+<meta charset="utf8">
 <title>IndexedDB: aborting transactions reverts an object store's key generator state</title>
 <link rel="help" href="https://w3c.github.io/IndexedDB/#abort-transaction">
 <link rel="author" href="pwnall@chromium.org" title="Victor Costan">
@@ -6,6 +7,7 @@
 <script src="/resources/testharnessreport.js"></script>
 <script src="support-promises.js"></script>
 <script>
+'use strict';
 
 promise_test(testCase => {
     return createDatabase(testCase, (database, transaction) => {
index 88ea28e..0b216f6 100644 (file)
@@ -1,4 +1,5 @@
-<!DOCTYPE html>
+<!doctype html>
+<meta charset="utf8">
 <title>IndexedDB: aborting transactions reverts index metadata</title>
 <link rel="help" href="https://w3c.github.io/IndexedDB/#abort-transaction">
 <link rel="author" href="pwnall@chromium.org" title="Victor Costan">
@@ -6,6 +7,7 @@
 <script src="/resources/testharnessreport.js"></script>
 <script src="support-promises.js"></script>
 <script>
+'use strict';
 
 promise_test(testCase => {
     let store = null, index = null;
index 4a00d41..ac61788 100644 (file)
@@ -1,4 +1,5 @@
-<!DOCTYPE html>
+<!doctype html>
+<meta charset="utf8">
 <title>IndexedDB: aborting transactions reverts multiple operations on the same metadata</title>
 <link rel="help" href="https://w3c.github.io/IndexedDB/#abort-transaction">
 <link rel="author" href="pwnall@chromium.org" title="Victor Costan">
@@ -6,6 +7,7 @@
 <script src="/resources/testharnessreport.js"></script>
 <script src="support-promises.js"></script>
 <script>
+'use strict';
 
 promise_test(testCase => {
     let store = null, index = null;
index 1a109d0..decc45a 100644 (file)
@@ -1,4 +1,5 @@
-<!DOCTYPE html>
+<!doctype html>
+<meta charset="utf8">
 <title>IndexedDB: aborting transactions reverts object store metadata</title>
 <link rel="help" href="https://w3c.github.io/IndexedDB/#abort-transaction">
 <link rel="author" href="pwnall@chromium.org" title="Victor Costan">
@@ -6,6 +7,7 @@
 <script src="/resources/testharnessreport.js"></script>
 <script src="support-promises.js"></script>
 <script>
+'use strict';
 
 promise_test(testCase => {
     let store = null, migrationTransaction = null, migrationDatabase = null;
diff --git a/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/upgrade-transaction-lifecycle-backend-aborted-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/upgrade-transaction-lifecycle-backend-aborted-expected.txt
new file mode 100644 (file)
index 0000000..9d7a593
--- /dev/null
@@ -0,0 +1,4 @@
+
+PASS in the abort event handler for a transaction aborted due to an unhandled request error 
+PASS in a setTimeout(0) callback after the abort event is fired for a transaction aborted due to an unhandled request failure 
+
diff --git a/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/upgrade-transaction-lifecycle-backend-aborted.html b/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/upgrade-transaction-lifecycle-backend-aborted.html
new file mode 100644 (file)
index 0000000..9a7c4b4
--- /dev/null
@@ -0,0 +1,84 @@
+<!doctype html>
+<meta charset="utf8">
+<title>IndexedDB: backend-aborted versionchange transaction lifecycle</title>
+<link rel="help"
+      href="https://w3c.github.io/IndexedDB/#upgrade-transaction-steps">
+<link rel="help"
+      href="https://w3c.github.io/IndexedDB/#dom-idbdatabase-createobjectstore">
+<link rel="help"
+      href="https://w3c.github.io/IndexedDB/#dom-idbdatabase-deleteobjectstore">
+<link rel="author" href="pwnall@chromium.org" title="Victor Costan">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support-promises.js"></script>
+<script>
+'use strict';
+
+promise_test(t => {
+  return createDatabase(t, database => {
+    createBooksStore(t, database);
+  }).then(database => {
+    database.close();
+  }).then(() => migrateDatabase(t, 2, (database, transaction, request) => {
+    return new Promise((resolve, reject) => {
+      transaction.addEventListener('abort', () => {
+        resolve(new Promise((resolve, reject) => {
+          assert_equals(
+              request.transaction, transaction,
+              "The open request's transaction should be reset after onabort");
+          assert_throws(
+              'InvalidStateError',
+              () => { database.createObjectStore('books2'); },
+              'createObjectStore exception should reflect that the ' +
+              'transaction is no longer running');
+          assert_throws(
+              'InvalidStateError',
+              () => { database.deleteObjectStore('books'); },
+              'deleteObjectStore exception should reflect that the ' +
+              'transaction is no longer running');
+          resolve();
+        }));
+      }, false);
+      transaction.objectStore('books').add(BOOKS_RECORD_DATA[0]);
+      transaction._willBeAborted();
+    });
+  }));
+}, 'in the abort event handler for a transaction aborted due to an unhandled ' +
+   'request error');
+
+promise_test(t => {
+  return createDatabase(t, database => {
+    createBooksStore(t, database);
+  }).then(database => {
+    database.close();
+  }).then(() => migrateDatabase(t, 2, (database, transaction, request) => {
+    return new Promise((resolve, reject) => {
+      transaction.addEventListener('abort', () => {
+        setTimeout(() => {
+          resolve(new Promise((resolve, reject) => {
+            assert_equals(
+                request.transaction, null,
+                "The open request's transaction should be reset after " +
+                'onabort microtasks');
+            assert_throws(
+                'InvalidStateError',
+                () => { database.createObjectStore('books2'); },
+                'createObjectStore exception should reflect that the ' +
+                'transaction is no longer running');
+            assert_throws(
+                'InvalidStateError',
+                () => { database.deleteObjectStore('books'); },
+                'deleteObjectStore exception should reflect that the ' +
+                'transaction is no longer running');
+            resolve();
+          }));
+        }, 0);
+      }, false);
+      transaction.objectStore('books').add(BOOKS_RECORD_DATA[0]);
+      transaction._willBeAborted();
+    });
+  }));
+}, 'in a setTimeout(0) callback after the abort event is fired for a ' +
+   'transaction aborted due to an unhandled request failure');
+
+</script>
diff --git a/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/upgrade-transaction-lifecycle-committed-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/upgrade-transaction-lifecycle-committed-expected.txt
new file mode 100644 (file)
index 0000000..11ef310
--- /dev/null
@@ -0,0 +1,4 @@
+
+PASS in the complete event handler for a committed transaction 
+PASS in a setTimeout(0) callback after the complete event is fired for a committed transaction 
+
diff --git a/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/upgrade-transaction-lifecycle-committed.html b/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/upgrade-transaction-lifecycle-committed.html
new file mode 100644 (file)
index 0000000..366ed38
--- /dev/null
@@ -0,0 +1,80 @@
+<!doctype html>
+<meta charset="utf8">
+<title>IndexedDB: committed versionchange transaction lifecycle</title>
+<link rel="help"
+      href="https://w3c.github.io/IndexedDB/#upgrade-transaction-steps">
+<link rel="help"
+      href="https://w3c.github.io/IndexedDB/#dom-idbdatabase-createobjectstore">
+<link rel="help"
+      href="https://w3c.github.io/IndexedDB/#dom-idbdatabase-deleteobjectstore">
+<link rel="author" href="pwnall@chromium.org" title="Victor Costan">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support-promises.js"></script>
+<script>
+'use strict';
+
+promise_test(t => {
+  return createDatabase(t, database => {
+    createBooksStore(t, database);
+  }).then(database => {
+    database.close();
+  }).then(() => migrateDatabase(t, 2, (database, transaction, request) => {
+    return new Promise((resolve, reject) => {
+      transaction.addEventListener('complete', () => {
+        resolve(new Promise((resolve, reject) => {
+          assert_equals(
+              request.transaction, transaction,
+              "The open request's transaction should be reset after " +
+              'oncomplete');
+          assert_throws(
+              'InvalidStateError',
+              () => { database.createObjectStore('books2'); },
+              'createObjectStore exception should reflect that the ' +
+              'transaction is no longer running');
+          assert_throws(
+              'InvalidStateError',
+              () => { database.deleteObjectStore('books'); },
+              'deleteObjectStore exception should reflect that the ' +
+              'transaction is no longer running');
+          resolve();
+        }));
+      }, false);
+    });
+  })).then(database => { database.close(); });
+}, 'in the complete event handler for a committed transaction');
+
+promise_test(t => {
+  return createDatabase(t, database => {
+    createBooksStore(t, database);
+  }).then(database => {
+    database.close();
+  }).then(() => migrateDatabase(t, 2, (database, transaction, request) => {
+    return new Promise((resolve, reject) => {
+      transaction.addEventListener('complete', () => {
+        setTimeout(() => {
+          resolve(new Promise((resolve, reject) => {
+            assert_equals(
+                request.transaction, null,
+                "The open request's transaction should be reset after " +
+                'oncomplete microtasks');
+            assert_throws(
+                'InvalidStateError',
+                () => { database.createObjectStore('books2'); },
+                'createObjectStore exception should reflect that the ' +
+                'transaction is no longer running');
+            assert_throws(
+                'InvalidStateError',
+                () => { database.deleteObjectStore('books'); },
+                'deleteObjectStore exception should reflect that the ' +
+                'transaction is no longer running');
+            resolve();
+          }));
+        }, 0);
+      }, false);
+    });
+  })).then(database => { database.close(); });
+}, 'in a setTimeout(0) callback after the complete event is fired for a ' +
+   'committed transaction');
+
+</script>
diff --git a/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/upgrade-transaction-lifecycle-user-aborted-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/upgrade-transaction-lifecycle-user-aborted-expected.txt
new file mode 100644 (file)
index 0000000..3effcfe
--- /dev/null
@@ -0,0 +1,6 @@
+
+PASS synchronously after abort() is called 
+PASS in a promise microtask after abort() is called, before the transaction abort event is fired 
+PASS in the abort event handler for a transaction aborted due to an abort() call 
+PASS in a setTimeout(0) callback after the abort event is fired for a transaction aborted due to an abort() call 
+
diff --git a/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/upgrade-transaction-lifecycle-user-aborted.html b/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/upgrade-transaction-lifecycle-user-aborted.html
new file mode 100644 (file)
index 0000000..9db93db
--- /dev/null
@@ -0,0 +1,143 @@
+<!doctype html>
+<meta charset="utf8">
+<title>IndexedDB: user-abort()ed versionchange transaction lifecycle</title>
+<link rel="help"
+      href="https://w3c.github.io/IndexedDB/#upgrade-transaction-steps">
+<link rel="help"
+      href="https://w3c.github.io/IndexedDB/#dom-idbdatabase-createobjectstore">
+<link rel="help"
+      href="https://w3c.github.io/IndexedDB/#dom-idbdatabase-deleteobjectstore">
+<link rel="author" href="pwnall@chromium.org" title="Victor Costan">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support-promises.js"></script>
+<script>
+'use strict';
+
+promise_test(t => {
+  return createDatabase(t, database => {
+    createBooksStore(t, database);
+  }).then(database => {
+    database.close();
+  }).then(() => migrateDatabase(t, 2, (database, transaction, request) => {
+    transaction.abort();
+    assert_equals(
+        request.transaction, transaction,
+        "The open request's transaction should be reset after onabort");
+
+    assert_throws(
+        'TransactionInactiveError',
+        () => { database.createObjectStore('books2'); },
+        'createObjectStore exception should reflect that the transaction is ' +
+        'still running');
+    assert_throws(
+        'TransactionInactiveError',
+        () => { database.deleteObjectStore('books'); },
+        'deleteObjectStore exception should reflect that the transaction is' +
+        'still running');
+  }));
+}, 'synchronously after abort() is called');
+
+promise_test(t => {
+  return createDatabase(t, database => {
+    createBooksStore(t, database);
+  }).then(database => {
+    database.close();
+  }).then(() => migrateDatabase(t, 2, (database, transaction, request) => {
+    let abortFired = false;
+    const abortPromise = new Promise((resolve, reject) => {
+      transaction.addEventListener('abort', () => {
+        abortFired = true;
+        resolve();
+      }, false);
+      transaction.abort();
+    });
+
+    return Promise.resolve().then(() => {
+      assert_false(
+          abortFired,
+          'The abort event should fire after promises are resolved');
+      assert_equals(
+          request.transaction, transaction,
+          "The open request's transaction should be reset after onabort");
+      assert_throws(
+          'TransactionInactiveError',
+          () => { database.createObjectStore('books2'); },
+          'createObjectStore exception should reflect that the transaction ' +
+          'is still running');
+      assert_throws(
+          'TransactionInactiveError',
+          () => { database.deleteObjectStore('books'); },
+          'deleteObjectStore exception should reflect that the transaction ' +
+          'is still running');
+    }).then(() => abortPromise);
+  }));
+}, 'in a promise microtask after abort() is called, before the transaction ' +
+   'abort event is fired');
+
+promise_test(t => {
+  return createDatabase(t, database => {
+    createBooksStore(t, database);
+  }).then(database => {
+    database.close();
+  }).then(() => migrateDatabase(t, 2, (database, transaction, request) => {
+    return new Promise((resolve, reject) => {
+      transaction.addEventListener('abort', () => {
+        resolve(new Promise((resolve, reject) => {
+          assert_equals(
+              request.transaction, transaction,
+              "The open request's transaction should be reset after onabort");
+          assert_throws(
+              'InvalidStateError',
+              () => { database.createObjectStore('books2'); },
+              'createObjectStore exception should reflect that the ' +
+              'transaction is no longer running');
+          assert_throws(
+              'InvalidStateError',
+              () => { database.deleteObjectStore('books'); },
+              'deleteObjectStore exception should reflect that the ' +
+              'transaction is no longer running');
+          resolve();
+        }));
+      }, false);
+      transaction.abort();
+    });
+  }));
+}, 'in the abort event handler for a transaction aborted due to an abort() ' +
+   'call');
+
+promise_test(t => {
+  return createDatabase(t, database => {
+    createBooksStore(t, database);
+  }).then(database => {
+    database.close();
+  }).then(() => migrateDatabase(t, 2, (database, transaction, request) => {
+    return new Promise((resolve, reject) => {
+      transaction.addEventListener('abort', () => {
+        setTimeout(() => {
+          resolve(new Promise((resolve, reject) => {
+            assert_equals(
+                request.transaction, null,
+                "The open request's transaction should be reset after " +
+                'onabort microtasks');
+            assert_throws(
+                'InvalidStateError',
+                () => { database.createObjectStore('books2'); },
+                'createObjectStore exception should reflect that the ' +
+                'transaction is no longer running');
+            assert_throws(
+                'InvalidStateError',
+                () => { database.deleteObjectStore('books'); },
+                'deleteObjectStore exception should reflect that the ' +
+                'transaction is no longer running');
+            resolve();
+          }));
+        }, 0);
+      }, false);
+      transaction.abort();
+    });
+  }));
+}, 'in a setTimeout(0) callback after the abort event is fired for a ' +
+   'transaction aborted due to an abort() call');
+
+</script>
index 703174f..fd971ee 100644 (file)
@@ -259,6 +259,8 @@ List of files:
 /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore_put7.htm
 /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore_put8.htm
 /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore_put9.htm
+/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbrequest_error.html
+/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbrequest_result.html
 /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbtransaction-oncomplete.htm
 /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbtransaction.htm
 /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbtransaction_abort.htm
@@ -295,6 +297,9 @@ List of files:
 /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/transaction-lifetime.htm
 /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/transaction-requestqueue.htm
 /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/transaction_bubble-and-capture.htm
+/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/upgrade-transaction-lifecycle-backend-aborted.html
+/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/upgrade-transaction-lifecycle-committed.html
+/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/upgrade-transaction-lifecycle-user-aborted.html
 /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/value.htm
 /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/value_recursive.htm
 /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/writer-starvation.htm
diff --git a/LayoutTests/imported/w3c/web-platform-tests/LICENSE.md b/LayoutTests/imported/w3c/web-platform-tests/LICENSE.md
new file mode 100644 (file)
index 0000000..eeae505
--- /dev/null
@@ -0,0 +1,33 @@
+#Dual-License for W3C Test Suites
+
+All documents in this Repository are licensed by contributors to be distributed under both the [W3C Test Suite License](#w3c-test-suite-license) and the [W3C 3-clause BSD License](#w3c-3-clause-bsd-license), reproduced below. The choice of license is up to the licensee. For more information, see [Licenses for W3C Test Suites](https://www.w3.org/Consortium/Legal/2008/04-testsuite-copyright.html)
+
+# W3C Test Suite License
+
+This document, Test Suites and other documents that link to this statement are provided by the copyright holders under the following license: By using and/or copying this document, or the W3C document from which this statement is linked, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions:
+
+Permission to copy, and distribute the contents of this document, or the W3C document from which this statement is linked, in any medium for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the document, or portions thereof, that you use:
+
+*    A link or URL to the original W3C document.
+*    The pre-existing copyright notice of the original author, or if it doesn't exist, a notice (hypertext is preferred, but a textual representation is permitted) of the form: "Copyright © [$date-of-document] World Wide Web Consortium, (MIT, ERCIM, Keio, Beihang) and others. All Rights Reserved. http://www.w3.org/Consortium/Legal/2008/04-testsuite-copyright.html"
+*    If it exists, the STATUS of the W3C document.
+
+When space permits, inclusion of the full text of this NOTICE should be provided. We request that authorship attribution be provided in any software, documents, or other items or products that you create pursuant to the implementation of the contents of this document, or any portion thereof.
+
+No right to create modifications or derivatives of W3C documents is granted pursuant to this license. However, if additional requirements (documented in the Copyright FAQ) are satisfied, the right to create modifications or derivatives is sometimes granted by the W3C to individuals complying with those requirements.
+
+If a Test Suite distinguishes the test harness (or, framework for navigation) and the actual tests, permission is given to remove or alter the harness or navigation if the Test Suite in question allows to do so. The tests themselves shall NOT be changed in any way.
+
+The name and trademarks of W3C and other copyright holders may NOT be used in advertising or publicity pertaining to this document or other documents that link to this statement without specific, written prior permission. Title to copyright in this document will at all times remain with copyright holders. Permission is given to use the trademarked string "W3C" within claims of performance concerning W3C Specifications or features described therein, and there only, if the test suite so authorizes.
+
+THIS WORK IS PROVIDED BY W3C, MIT, ERCIM, KEIO, BEIHANG, THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL W3C, MIT, ERCIM, KEIO, BEIHANG, THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# W3C 3-clause BSD License
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+*    Redistributions of works must retain the original copyright notice, this list of conditions and the following disclaimer.
+*    Redistributions in binary form must reproduce the original copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+*    Neither the name of the W3C nor the names of its contributors may be used to endorse or promote products derived from this work without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
index 9648008..1461d07 100644 (file)
@@ -18,9 +18,12 @@ Running the Tests
 =================
 
 The tests are designed to be run from your local computer. The test
-environment requires Python 2.7+ (but not Python 3.x). You will also
-need a copy of OpenSSL. Users on Windows should read the
-[Windows Notes](#windows-notes) section below.
+environment requires [Python 2.7+](http://www.python.org/downloads) (but not Python 3.x).
+You will also need a copy of OpenSSL.
+
+On Windows, be sure to add the Python directory (`c:\python2x`, by default) to
+your `%Path%` [Environment Variable](http://www.computerhope.com/issues/ch000549.htm),
+and read the [Windows Notes](#windows-notes) section below.
 
 To get the tests running, you need to set up the test domains in your
 [`hosts` file](http://en.wikipedia.org/wiki/Hosts_%28file%29%23Location_in_the_file_system). The
@@ -80,18 +83,29 @@ Running wptserve with SSL enabled on Windows typically requires
 installing an OpenSSL distribution.
 [Shining Light](https://slproweb.com/products/Win32OpenSSL.html)
 provide a convenient installer that is known to work, but requires a
-little extra setup.
-
-After installation ensure that the path to OpenSSL is on your `%Path%`
-environment variable.
-
-Then set the path to the default OpenSSL configuration file (usually
-something like `C:\OpenSSL-Win32\bin\openssl.cfg` in the server
-configuration. To do this copy `config.default.json` in the
-web-platform-tests root to `config.json`. Then edit the JSON so that
-the key `ssl/openssl/base_conf_path` has a value that is the path to
-the OpenSSL config file.
-
+little extra setup, i.e.:
+
+Run the installer for Win32_OpenSSL_v1.1.0b (30MB). During installation,
+change the default location for where to Copy OpenSSL Dlls from the
+System directory to the /bin directory.
+
+After installation, ensure that the path to OpenSSL (typically,
+this will be `C:\OpenSSL-Win32\bin`) is in your `%Path%`
+[Environment Variable](http://www.computerhope.com/issues/ch000549.htm).
+If you forget to do this part, you will most likely see a 'File Not Found'
+error when you start wptserve.
+
+Finally, set the path value in the server configuration file to the
+default OpenSSL configuration file location. To do this,
+copy `config.default.json` in the web-platform-tests root to `config.json`.
+Then edit the JSON so that the key `ssl/openssl/base_conf_path` has a
+value that is the path to the OpenSSL config file (typically this
+will be `C:\\OpenSSL-Win32\\bin\\openssl.cfg`).
+
+Alternatively, you may also use
+[Bash on Ubuntu on Windows](https://msdn.microsoft.com/en-us/commandline/wsl/about)
+in the Windows 10 Anniversary Update build, then access your windows
+partition from there to launch wptserve.
 
 Test Runner
 ===========
@@ -117,8 +131,10 @@ Publication
 
 The master branch is automatically synced to http://w3c-test.org/.
 
-Pull requests that have been checked are automatically mirrored to
-http://w3c-test.org/submissions/.
+Pull requests are automatically mirrored to
+http://w3c-test.org/submissions/ a few minutes after someone with merge
+access has added a comment with "LGTM" (or "w3c-test:mirror") to indicate
+the PR has been checked.
 
 Finding Things
 ==============
index b6f1582..e4f0aee 100644 (file)
@@ -26,8 +26,8 @@
                 client = new ifr.contentWindow.XMLHttpRequest();
                 count++;
                 // Important to do a normal navigation, not a reload.
-                win.location.href = "resources/init.htm";
-              }, 100);
+                win.location.href = "resources/init.htm?avoid-replace";
+              }, 0);
             }
             doc.body.appendChild(ifr);
           } else if(1 == count) {
index 77fc0e7..b6bb6cd 100644 (file)
   }
 
   function getNextEvent(arr) {
-    var eventStr = arr.shift();
+    var event = { str: arr.shift() };
 
     // we can only handle strings, numbers (readystates) and undefined
-    if (eventStr === undefined) {
+    if (event.str === undefined) {
       return event;
     }
-    if (typeof eventStr !== "string") {
-      if (Number.isInteger(eventStr)) {
-        eventStr = "readystatechange(" + eventStr + ")";
+
+    if (typeof event.str !== "string") {
+      if (Number.isInteger(event.str)) {
+        event.state = event.str;
+        event.str = "readystatechange(" + event.str + ")";
       } else {
-        throw "Test error: unexpected event type " + eventStr;
+        throw "Test error: unexpected event type " + event.str;
       }
     }
 
     // parse out the general type, loaded and total values
-    var type = eventStr.type = eventStr.split("(")[0].split(".").pop();
-    eventStr.mayFollowOptionalProgressEvents = type == "progress" ||
-      type == "load" || type == "abort" || type == "error";
-    var loadedAndTotal = eventStr.match(/\((\d)+,(\d)+/);
+    var type = event.type = event.str.split("(")[0].split(".").pop();
+    var loadedAndTotal = event.str.match(/.*\((\d+),(\d+),(true|false)\)/);
     if (loadedAndTotal) {
-      eventStr.loaded = parseInt(loadedAndTotal[0]);
-      eventStr.total = parseInt(loadedAndTotal[1]);
+      event.loaded = parseInt(loadedAndTotal[1]);
+      event.total = parseInt(loadedAndTotal[2]);
+      event.lengthComputable = loadedAndTotal[3] == "true";
     }
 
-    return eventStr;
+    return event;
   }
 
   global.assert_xhr_event_order_matches = function(expected) {
     var recorded = recorded_xhr_events;
     var lastRecordedLoaded = -1;
-
     while(expected.length && recorded.length) {
       var currentExpected = getNextEvent(expected),
           currentRecorded = getNextEvent(recorded);
 
-      // skip to the last progress event if we've hit one
-      while (recorded.length && currentRecorded.type == "progress") {
-        assert_greater(currentRecorded.loaded, lastRecordedLoaded,
-                       "progress event 'loaded' values must only increase");
+      // skip to the last progress event if we've hit one (note the next
+      // event after a progress event should be a LOADING readystatechange,
+      // if there are multiple progress events in a row).
+      while (recorded.length && currentRecorded.type == "progress" &&
+             parseInt(recorded) === 3) {
+        assert_greater_than(currentRecorded.loaded, lastRecordedLoaded,
+                            "progress event 'loaded' values must only increase");
         lastRecordedLoaded = currentRecorded.loaded;
-        currentRecorded = getNextEvent(recorded);
       }
-      if (currentRecorded.type == "loadstart") {
+      if (currentRecorded.type == "loadend") {
+        recordedProgressCount = 0;
         lastRecordedLoaded = -1;
       }
 
-      assert_equals(currentRecorded, currentExpected);
+      assert_equals(currentRecorded.str, currentExpected.str);
     }
     if (recorded.length) {
       throw "\nUnexpected extra events: " + recorded.join(", ");
index 7b70721..b8ede38 100644 (file)
@@ -14,6 +14,7 @@ import zipfile
 from cStringIO import StringIO
 from collections import defaultdict
 from urlparse import urljoin
+from tools.manifest import manifest
 
 import requests
 
@@ -27,7 +28,6 @@ reader = None
 wptcommandline = None
 wptrunner = None
 
-
 logger = logging.getLogger(os.path.splitext(__file__)[0])
 
 
@@ -89,13 +89,14 @@ class TravisFold(object):
 
 
 class GitHub(object):
-    def __init__(self, org, repo, token):
+    def __init__(self, org, repo, token, browser):
         self.token = token
         self.headers = {"Accept": "application/vnd.github.v3+json"}
         self.auth = (self.token, "x-oauth-basic")
         self.org = org
         self.repo = repo
         self.base_url = "https://api.github.com/repos/%s/%s/" % (org, repo)
+        self.browser = browser
 
     def _headers(self, headers):
         if headers is None:
@@ -117,6 +118,19 @@ class GitHub(object):
         resp.raise_for_status()
         return resp
 
+    def patch(self, url, data, headers=None):
+        logger.debug("PATCH %s" % url)
+        if data is not None:
+            data = json.dumps(data)
+        resp = requests.patch(
+            url,
+            data=data,
+            headers=self._headers(headers),
+            auth=self.auth
+        )
+        resp.raise_for_status()
+        return resp
+
     def get(self, url, headers=None):
         logger.debug("GET %s" % url)
         resp = requests.get(
@@ -128,8 +142,19 @@ class GitHub(object):
         return resp
 
     def post_comment(self, issue_number, body):
-        url = urljoin(self.base_url, "issues/%s/comments" % issue_number)
-        return self.post(url, {"body": body})
+        user = self.get(urljoin(self.base_url, "/user")).json()
+        issue_comments_url = urljoin(self.base_url, "issues/%s/comments" % issue_number)
+        comments = self.get(issue_comments_url).json()
+        title_line = "# %s #" % self.browser.title()
+        data = {"body": body}
+        for comment in comments:
+            if (comment["user"]["login"] == user["login"] and
+                comment["body"].startswith(title_line)):
+                comment_url = urljoin(self.base_url, "issues/comments/%s" % comment["id"])
+                self.patch(comment_url, data)
+                break
+        else:
+            self.post(issue_comments_url, data)
 
     def releases(self):
         url = urljoin(self.base_url, "releases/latest")
@@ -167,7 +192,7 @@ class Firefox(Browser):
 
     def install(self):
         call("pip", "install", "-r", "w3c/wptrunner/requirements_firefox.txt")
-        resp = get("https://archive.mozilla.org/pub/firefox/nightly/latest-mozilla-central/firefox-52.0a1.en-US.linux-x86_64.tar.bz2")
+        resp = get("https://archive.mozilla.org/pub/firefox/nightly/latest-mozilla-central/firefox-53.0a1.en-US.linux-x86_64.tar.bz2")
         untar(resp.raw)
 
         if not os.path.exists("profiles"):
@@ -192,7 +217,6 @@ class Firefox(Browser):
         assert latest_release != 0
         return "v%s.%s.%s" % tuple(str(item) for item in latest_release)
 
-
     def install_webdriver(self):
         version = self._latest_geckodriver_version()
         logger.debug("Latest geckodriver release %s" % version)
@@ -244,7 +268,13 @@ def get(url):
 
 def call(*args):
     logger.debug("%s" % " ".join(args))
-    return subprocess.check_output(args)
+    try:
+        return subprocess.check_output(args)
+    except subprocess.CalledProcessError as e:
+        logger.critical("%s exited with return code %i" %
+                        (e.cmd, e.returncode))
+        logger.critical(e.output)
+        raise
 
 
 def get_git_cmd(repo_path):
@@ -288,7 +318,7 @@ def unzip(fileobj):
 def setup_github_logging(args):
     gh_handler = None
     if args.comment_pr:
-        github = GitHub("w3c", "web-platform-tests", args.gh_token)
+        github = GitHub("w3c", "web-platform-tests", args.gh_token, args.browser)
         try:
             pr_number = int(args.comment_pr)
         except ValueError:
@@ -326,6 +356,7 @@ def get_sha1():
     git = get_git_cmd(os.path.join(os.path.abspath(os.curdir), "w3c", "web-platform-tests"))
     return git("rev-parse", "HEAD").strip()
 
+
 def build_manifest():
     with pwd(os.path.join(os.path.abspath(os.curdir), "w3c", "web-platform-tests")):
         # TODO: Call the manifest code directly
@@ -353,6 +384,52 @@ def get_files_changed():
             for item in files[:-1].split("\0")]
 
 
+def get_affected_testfiles(files_changed):
+    affected_testfiles = []
+    all_tests = set()
+    nontests_changed = set(files_changed)
+    repo_root = os.path.abspath(os.path.join(os.path.abspath(os.curdir), "w3c", "web-platform-tests"))
+    manifest_file = os.path.join(repo_root, "MANIFEST.json")
+    for test, _ in manifest.load(repo_root, manifest_file):
+        test_full_path = os.path.join(repo_root, test)
+        all_tests.add(test_full_path)
+        if test_full_path in nontests_changed:
+            # Reduce the set of changed files to only non-tests.
+            nontests_changed.remove(test_full_path)
+    for changedfile_pathname in nontests_changed:
+        changed_file_repo_path = os.path.join(os.path.sep, os.path.relpath(changedfile_pathname, repo_root))
+        os.path.normpath(changed_file_repo_path)
+        path_components = changed_file_repo_path.split(os.sep)[1:]
+        if len(path_components) < 2:
+            # This changed file is in the repo root, so skip it
+            # (because it's not part of any test).
+            continue
+        top_level_subdir = path_components[0]
+        if top_level_subdir in ["conformance-checkers", "docs"]:
+            continue
+        # OK, this changed file is the kind we care about: It's something
+        # other than a test (e.g., it's a .js or .json file), and it's
+        # somewhere down beneath one of the top-level "spec" directories.
+        # So now we try to find any tests that reference it.
+        for root, dirs, fnames in os.walk(os.path.join(repo_root, top_level_subdir)):
+            # Walk top_level_subdir looking for test files containing either the
+            # relative filepath or absolute filepatch to the changed file.
+            for fname in fnames:
+                testfile_full_path = os.path.join(root, fname)
+                # Skip any test file that's already in files_changed.
+                if testfile_full_path in files_changed:
+                    continue
+                # Skip any file that's not a test file.
+                if testfile_full_path not in all_tests:
+                    continue
+                with open(testfile_full_path, "r") as fh:
+                    file_contents = fh.read()
+                    changed_file_relpath = os.path.relpath(changedfile_pathname, root).replace(os.path.sep, "/")
+                    if changed_file_relpath in file_contents or changed_file_repo_path.replace(os.path.sep, "/") in file_contents:
+                        affected_testfiles.append(testfile_full_path)
+    return affected_testfiles
+
+
 def wptrunner_args(root, files_changed, iterations, browser):
     parser = wptcommandline.create_parser([browser.product])
     args = vars(parser.parse_args([]))
@@ -442,7 +519,7 @@ def table(headings, data, log):
 def write_inconsistent(inconsistent, iterations):
     logger.error("## Unstable results ##\n")
     strings = [("`%s`" % markdown_adjust(test), ("`%s`" % markdown_adjust(subtest)) if subtest else "", err_string(results, iterations))
-                for test, subtest, results in inconsistent]
+               for test, subtest, results in inconsistent]
     table(["Test", "Subtest", "Results"], strings, logger.error)
 
 
@@ -459,14 +536,19 @@ def write_results(results, iterations, comment_pr):
             except ValueError:
                 pass
         if pr_number:
-            logger.info("### [%s](%s/%s%s) ###" % (test, baseurl, pr_number, test))
+            logger.info("<details>\n")
+            logger.info('<summary><a href="%s/%s%s">%s</a></summary>\n\n' %
+                        (baseurl, pr_number, test, test))
         else:
             logger.info("### %s ###" % test)
         parent = test_results.pop(None)
         strings = [("", err_string(parent, iterations))]
-        strings.extend(((("`%s`" % markdown_adjust(subtest)) if subtest else "", err_string(results, iterations))
+        strings.extend(((("`%s`" % markdown_adjust(subtest)) if subtest
+                         else "", err_string(results, iterations))
                         for subtest, results in test_results.iteritems()))
         table(["Subtest", "Results"], strings, logger.info)
+        if pr_number:
+            logger.info("</details>\n")
 
 
 def get_parser():
@@ -539,6 +621,12 @@ def main():
 
         logger.debug("Files changed:\n%s" % "".join(" * %s\n" % item for item in files_changed))
 
+        affected_testfiles = get_affected_testfiles(files_changed)
+
+        logger.debug("Affected tests:\n%s" % "".join(" * %s\n" % item for item in affected_testfiles))
+
+        files_changed.extend(affected_testfiles)
+
         browser = browser_cls(args.gh_token)
 
         browser.install()
diff --git a/LayoutTests/imported/w3c/web-platform-tests/ci_built_diff.sh b/LayoutTests/imported/w3c/web-platform-tests/ci_built_diff.sh
new file mode 100644 (file)
index 0000000..3c70994
--- /dev/null
@@ -0,0 +1,17 @@
+set -ex
+
+# Diff PNGs based on pixel-for-pixel identity
+echo -e '[diff "img"]\n  textconv = identify -quiet -format "%#"' >> .git/config
+echo -e '*.png diff=img' >> .git/info/attributes
+
+# Exclude tests that rely on font rendering
+excluded=(
+    '2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.basic.png'
+    '2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.large.png'
+    '2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.rtl.png'
+    '2dcontext/drawing-text-to-the-canvas/2d.text.draw.stroke.basic.png'
+)
+
+./update-built-tests.sh
+git update-index --assume-unchanged ${excluded[*]}
+git diff --exit-code
diff --git a/LayoutTests/imported/w3c/web-platform-tests/common/redirect-opt-in.py b/LayoutTests/imported/w3c/web-platform-tests/common/redirect-opt-in.py
new file mode 100644 (file)
index 0000000..ff5744b
--- /dev/null
@@ -0,0 +1,20 @@
+def main(request, response):
+    """Simple handler that causes redirection.
+
+    The request should typically have two query parameters:
+    status - The status to use for the redirection. Defaults to 302.
+    location - The resource to redirect to.
+    """
+    status = 302
+    if "status" in request.GET:
+        try:
+            status = int(request.GET.first("status"))
+        except ValueError:
+            pass
+
+    response.status = status
+
+    location = request.GET.first("location")
+
+    response.headers.set("Location", location)
+    response.headers.set("Timing-Allow-Origin", "*")
index 8be89f1..4e507f7 100644 (file)
@@ -30,6 +30,7 @@ List of files:
 /LayoutTests/imported/w3c/web-platform-tests/common/get-host-info.sub.js
 /LayoutTests/imported/w3c/web-platform-tests/common/large.py
 /LayoutTests/imported/w3c/web-platform-tests/common/media.js
+/LayoutTests/imported/w3c/web-platform-tests/common/redirect-opt-in.py
 /LayoutTests/imported/w3c/web-platform-tests/common/redirect.py
 /LayoutTests/imported/w3c/web-platform-tests/common/reftest-wait.js
 /LayoutTests/imported/w3c/web-platform-tests/common/stringifiers.js
index d023223..e052f35 100644 (file)
@@ -1,4 +1,4 @@
 
-FAIL HTML parser must use the returned value of the custom element constructor instead of the one created before super() call assert_equals: expected (string) "HTML parser must insert the synchronously constructed custom element" but got (boolean) true
-FAIL HTML parser must use the returned value of the custom element constructor instead using the one created in super() call assert_equals: expected (string) "HTML parser must insert the synchronously constructed custom element" but got (boolean) true
+PASS HTML parser must use the returned value of the custom element constructor instead of the one created before super() call 
+PASS HTML parser must use the returned value of the custom element constructor instead using the one created in super() call 
 
index 393bbec..dd98f15 100644 (file)
@@ -53,7 +53,7 @@ customElements.define('returns-another-instance', ReturnsAnotherInstance);
 test(function () {
     var instance = document.querySelector('instantiates-itself-before-super');
 
-    assert_equals(instance instanceof InstantiatesItselfBeforeSuper, 'HTML parser must insert the synchronously constructed custom element');
+    assert_true(instance instanceof InstantiatesItselfBeforeSuper, 'HTML parser must insert the synchronously constructed custom element');
     assert_equals(instance, elementCreatedBySuperCall, 'HTML parser must insert the element returned by the custom element constructor');
     assert_not_equals(instance, anotherElementCreatedBeforeSuperCall, 'HTML parser must not insert another instance of the custom element created before super() call');
     assert_equals(anotherElementCreatedBeforeSuperCall.parentNode, null, 'HTML parser must not insert another instance of the custom element created before super() call');
@@ -63,7 +63,7 @@ test(function () {
 test(function () {
     var instance = document.querySelector('returns-another-instance');
 
-    assert_equals(instance instanceof ReturnsAnotherInstance, 'HTML parser must insert the synchronously constructed custom element');
+    assert_true(instance instanceof ReturnsAnotherInstance, 'HTML parser must insert the synchronously constructed custom element');
     assert_equals(instance, anotherInstance, 'HTML parser must insert the element returned by the custom element constructor');
     assert_not_equals(instance, firstInstance, 'HTML parser must not insert the element created by super() call if the constructor returned another element');
     assert_equals(firstInstance.parentNode, null, 'HTML parser must not insert the element created by super() call if the constructor returned another element');
index f1913a9..61d44fb 100644 (file)
@@ -29,7 +29,7 @@ List of files:
 /LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-click.html
 /LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-detached-click.html
 /LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-handlers-changed.html
-/LayoutTests/imported/w3c/web-platform-tests/dom/events/dom/events/Event-dispatch-multiple-cancelBubble.html
+/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-multiple-cancelBubble.html
 /LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-multiple-stopPropagation.html
 /LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-omitted-capture.html
 /LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-order.html
index 10a2c47..ae7c266 100644 (file)
@@ -27,11 +27,17 @@ PASS Historical DOM features must be removed: renameNode
 PASS Historical DOM features must be removed: defaultCharset 
 PASS Historical DOM features must be removed: height 
 PASS Historical DOM features must be removed: width 
+PASS Historical DOM features must be removed: commands 
+PASS Historical DOM features must be removed: cssElementMap 
+PASS Historical DOM features must be removed: async 
+PASS document.load 
 PASS DOMImplementation.getFeature() must be nuked. 
 PASS Historical DOM features must be removed: schemaTypeInfo 
 PASS Historical DOM features must be removed: setIdAttribute 
 PASS Historical DOM features must be removed: setIdAttributeNS 
 PASS Historical DOM features must be removed: setIdAttributeNode 
+PASS Attr member must be nuked: schemaTypeInfo 
+FAIL Attr member must be nuked: isId assert_equals: expected (undefined) undefined but got (boolean) false
 PASS DocumentType member must be nuked: entities 
 PASS DocumentType member must be nuked: notations 
 PASS DocumentType member must be nuked: internalSubset 
@@ -48,4 +54,20 @@ PASS Node member must be nuked: getUserData
 PASS Node member must be nuked: setUserData 
 PASS Node member must be nuked: rootNode 
 PASS Window member must be nuked: attachEvent 
+FAIL Event should not have this constant: MOUSEDOWN assert_equals: expected (undefined) undefined but got (number) 1
+FAIL Event should not have this constant: MOUSEUP assert_equals: expected (undefined) undefined but got (number) 2
+FAIL Event should not have this constant: MOUSEOVER assert_equals: expected (undefined) undefined but got (number) 4
+FAIL Event should not have this constant: MOUSEOUT assert_equals: expected (undefined) undefined but got (number) 8
+FAIL Event should not have this constant: MOUSEMOVE assert_equals: expected (undefined) undefined but got (number) 16
+FAIL Event should not have this constant: MOUSEDRAG assert_equals: expected (undefined) undefined but got (number) 32
+FAIL Event should not have this constant: CLICK assert_equals: expected (undefined) undefined but got (number) 64
+FAIL Event should not have this constant: DBLCLICK assert_equals: expected (undefined) undefined but got (number) 128
+FAIL Event should not have this constant: KEYDOWN assert_equals: expected (undefined) undefined but got (number) 256
+FAIL Event should not have this constant: KEYUP assert_equals: expected (undefined) undefined but got (number) 512
+FAIL Event should not have this constant: KEYPRESS assert_equals: expected (undefined) undefined but got (number) 1024
+FAIL Event should not have this constant: DRAGDROP assert_equals: expected (undefined) undefined but got (number) 2048
+FAIL Event should not have this constant: FOCUS assert_equals: expected (undefined) undefined but got (number) 4096
+FAIL Event should not have this constant: BLUR assert_equals: expected (undefined) undefined but got (number) 8192
+FAIL Event should not have this constant: SELECT assert_equals: expected (undefined) undefined but got (number) 16384
+FAIL Event should not have this constant: CHANGE assert_equals: expected (undefined) undefined but got (number) 32768
 
index cec3093..d669ad4 100644 (file)
@@ -48,11 +48,22 @@ var documentNuked = [
   "renameNode",
   "defaultCharset",
   "height",
-  "width"
+  "width",
+  // https://github.com/whatwg/html/commit/a64aea7fdb221bba027d95dc3cabda09e0b3e5dc
+  "commands",
+  // https://github.com/whatwg/html/commit/797b4d273955a0fe3cc2e2d0ca5d578f37c0f126
+  "cssElementMap",
+  // https://github.com/whatwg/html/commit/e236f46820b93d6fe2e2caae0363331075c6c4fb
+  "async",
 ]
 documentNuked.forEach(isNukedFromDocument)
 
 test(function() {
+  // https://github.com/whatwg/html/commit/e236f46820b93d6fe2e2caae0363331075c6c4fb
+  assert_false("load" in document);
+}, "document.load");
+
+test(function() {
   assert_equals(document.implementation["getFeature"], undefined)
 }, "DOMImplementation.getFeature() must be nuked.")
 
@@ -71,6 +82,18 @@ var elementNuked = [
 ]
 elementNuked.forEach(isNukedFromElement)
 
+function isNukedFromAttr(name) {
+  test(function() {
+    var attr = document.createAttribute("test")
+    assert_equals(attr[name], undefined)
+  }, "Attr member must be nuked: " + name)
+}
+var attrNuked = [
+  "schemaTypeInfo",
+  "isId"
+]
+attrNuked.forEach(isNukedFromAttr)
+
 function isNukedFromDoctype(name) {
   test(function() {
     var doctype = document.implementation.createDocumentType("test", "", "")
@@ -129,4 +152,29 @@ var windowNuked = [
   "attachEvent"
 ]
 windowNuked.forEach(isNukedFromWindow)
+
+function isRemovedFromEvent(name) {
+  test(() => {
+    assert_equals(Event[name], undefined)
+  }, "Event should not have this constant: " + name)
+}
+var EventRemoved = [
+  "MOUSEDOWN",
+  "MOUSEUP",
+  "MOUSEOVER",
+  "MOUSEOUT",
+  "MOUSEMOVE",
+  "MOUSEDRAG",
+  "CLICK",
+  "DBLCLICK",
+  "KEYDOWN",
+  "KEYUP",
+  "KEYPRESS",
+  "DRAGDROP",
+  "FOCUS",
+  "BLUR",
+  "SELECT",
+  "CHANGE"
+]
+EventRemoved.forEach(isRemovedFromEvent)
 </script>
index 57991ff..c4e3add 100644 (file)
@@ -1,5 +1,4 @@
 
-FAIL Node.cloneNode Can't find variable: HTMLDataListElement
 PASS createElement(a) 
 PASS createElement(abbr) 
 PASS createElement(acronym) 
@@ -27,6 +26,101 @@ PASS createElement(code)
 PASS createElement(col) 
 PASS createElement(colgroup) 
 PASS createElement(data) 
+FAIL createElement(datalist) assert_true: HTMLDataListElement is not supported expected true got false
+FAIL createElement(dialog) assert_true: HTMLDialogElement is not supported expected true got false
+PASS createElement(dd) 
+PASS createElement(del) 
+PASS createElement(details) 
+PASS createElement(dfn) 
+PASS createElement(dir) 
+PASS createElement(div) 
+PASS createElement(dl) 
+PASS createElement(dt) 
+PASS createElement(embed) 
+PASS createElement(fieldset) 
+PASS createElement(figcaption) 
+PASS createElement(figure) 
+PASS createElement(font) 
+PASS createElement(footer) 
+PASS createElement(form) 
+PASS createElement(frame) 
+PASS createElement(frameset) 
+PASS createElement(h1) 
+PASS createElement(h2) 
+PASS createElement(h3) 
+PASS createElement(h4) 
+PASS createElement(h5) 
+PASS createElement(h6) 
+PASS createElement(head) 
+PASS createElement(header) 
+PASS createElement(hgroup) 
+PASS createElement(hr) 
+PASS createElement(html) 
+PASS createElement(i) 
+PASS createElement(iframe) 
+PASS createElement(img) 
+PASS createElement(input) 
+PASS createElement(ins) 
+PASS createElement(isindex) 
+PASS createElement(kbd) 
+PASS createElement(label) 
+PASS createElement(legend) 
+PASS createElement(li) 
+PASS createElement(link) 
+PASS createElement(main) 
+PASS createElement(map) 
+PASS createElement(mark) 
+PASS createElement(marquee) 
+PASS createElement(meta) 
+PASS createElement(meter) 
+PASS createElement(nav) 
+PASS createElement(nobr) 
+PASS createElement(noframes) 
+PASS createElement(noscript) 
+PASS createElement(object) 
+PASS createElement(ol) 
+PASS createElement(optgroup) 
+PASS createElement(option) 
+PASS createElement(output) 
+PASS createElement(p) 
+PASS createElement(param) 
+PASS createElement(pre) 
+PASS createElement(progress) 
+PASS createElement(q) 
+PASS createElement(rp) 
+PASS createElement(rt) 
+PASS createElement(ruby) 
+PASS createElement(s) 
+PASS createElement(samp) 
+PASS createElement(script) 
+PASS createElement(section) 
+PASS createElement(select) 
+PASS createElement(small) 
+PASS createElement(source) 
+PASS createElement(spacer) 
+PASS createElement(span) 
+PASS createElement(strike) 
+PASS createElement(style) 
+PASS createElement(sub) 
+PASS createElement(summary) 
+PASS createElement(sup) 
+PASS createElement(table) 
+PASS createElement(tbody) 
+PASS createElement(td) 
+PASS createElement(template) 
+PASS createElement(textarea) 
+PASS createElement(th) 
+PASS createElement(time) 
+PASS createElement(title) 
+PASS createElement(tr) 
+PASS createElement(tt) 
+PASS createElement(track) 
+PASS createElement(u) 
+PASS createElement(ul) 
+PASS createElement(var) 
+PASS createElement(video) 
+PASS createElement(unknown) 
+PASS createElement(wbr) 
 PASS createDocumentFragment 
 PASS createTextNode 
 PASS createComment 
@@ -35,7 +129,7 @@ PASS createElementNS HTML
 PASS createElementNS non-HTML 
 PASS createProcessingInstruction 
 PASS implementation.createDocumentType 
-PASS implementation.createDocument 
+FAIL implementation.createDocument assert_equals: expected "null" but got "http_localhost_8800"
 PASS implementation.createHTMLDocument 
 PASS node with children 
 
index 9fb939f..9f4f8fc 100644 (file)
@@ -34,139 +34,138 @@ function check_copy(orig, copy, type) {
     assert_true(copy instanceof type, "Should be type");
 }
 
-function create_element_and_check(localName, type) {
+function create_element_and_check(localName, typeName) {
   test(function() {
+    assert_true(typeName in window, typeName + " is not supported");
     var element = document.createElement(localName);
     var copy = element.cloneNode();
-    check_copy(element, copy, type);
+    check_copy(element, copy, window[typeName]);
   }, "createElement(" + localName + ")");
 }
 
 // test1: createElement
-test(function() {
-    create_element_and_check("a",         HTMLAnchorElement);
-    create_element_and_check("abbr",      HTMLElement);
-    create_element_and_check("acronym",   HTMLElement);
-    create_element_and_check("address",   HTMLElement);
-    create_element_and_check("applet",    HTMLAppletElement);
-    create_element_and_check("area",      HTMLAreaElement);
-    create_element_and_check("article",   HTMLElement);
-    create_element_and_check("aside",     HTMLElement);
-    create_element_and_check("audio",     HTMLAudioElement);
-    create_element_and_check("b",         HTMLElement);
-    create_element_and_check("base",      HTMLBaseElement);
-    create_element_and_check("bdi",       HTMLElement);
-    create_element_and_check("bdo",       HTMLElement);
-    create_element_and_check("bgsound",   HTMLElement);
-    create_element_and_check("big",       HTMLElement);
-    create_element_and_check("blockquote",HTMLElement);
-    create_element_and_check("body",      HTMLBodyElement);
-    create_element_and_check("br",        HTMLBRElement);
-    create_element_and_check("button",    HTMLButtonElement);
-    create_element_and_check("canvas",    HTMLCanvasElement);
-    create_element_and_check("caption",   HTMLTableCaptionElement);
-    create_element_and_check("center",    HTMLElement);
-    create_element_and_check("cite",      HTMLElement);
-    create_element_and_check("code",      HTMLElement);
-    create_element_and_check("col",       HTMLTableColElement);
-    create_element_and_check("colgroup",  HTMLTableColElement);
-    create_element_and_check("data",      HTMLDataElement);
-    create_element_and_check("datalist",  HTMLDataListElement);
-    create_element_and_check("dialog",    HTMLDialogElement);
-    create_element_and_check("dd",        HTMLElement);
-    create_element_and_check("del",       HTMLModElement);
-    create_element_and_check("details",   HTMLElement);
-    create_element_and_check("dfn",       HTMLElement);
-    create_element_and_check("dir",       HTMLDirectoryElement);
-    create_element_and_check("div",       HTMLDivElement);
-    create_element_and_check("dl",        HTMLDListElement);
-    create_element_and_check("dt",        HTMLElement);
-    create_element_and_check("embed",     HTMLEmbedElement);
-    create_element_and_check("fieldset",  HTMLFieldSetElement);
-    create_element_and_check("figcaption",HTMLElement);
-    create_element_and_check("figure",    HTMLElement);
-    create_element_and_check("font",      HTMLFontElement);
-    create_element_and_check("footer",    HTMLElement);
-    create_element_and_check("form",      HTMLFormElement);
-    create_element_and_check("frame",     HTMLFrameElement);
-    create_element_and_check("frameset",  HTMLFrameSetElement);
-    create_element_and_check("h1",        HTMLHeadingElement);
-    create_element_and_check("h2",        HTMLHeadingElement);
-    create_element_and_check("h3",        HTMLHeadingElement);
-    create_element_and_check("h4",        HTMLHeadingElement);
-    create_element_and_check("h5",        HTMLHeadingElement);
-    create_element_and_check("h6",        HTMLHeadingElement);
-    create_element_and_check("head",      HTMLHeadElement);
-    create_element_and_check("header",    HTMLElement);
-    create_element_and_check("hgroup",    HTMLElement);
-    create_element_and_check("hr",        HTMLHRElement);
-    create_element_and_check("html",      HTMLHtmlElement);
-    create_element_and_check("i",         HTMLElement);
-    create_element_and_check("iframe",    HTMLIFrameElement);
-    create_element_and_check("img",       HTMLImageElement);
-    create_element_and_check("input",     HTMLInputElement);
-    create_element_and_check("ins",       HTMLModElement);
-    create_element_and_check("isindex",   HTMLElement);
-    create_element_and_check("kbd",       HTMLElement);
-    create_element_and_check("label",     HTMLLabelElement);
-    create_element_and_check("legend",    HTMLLegendElement);
-    create_element_and_check("li",        HTMLLIElement);
-    create_element_and_check("link",      HTMLLinkElement);
-    create_element_and_check("main",      HTMLElement);
-    create_element_and_check("map",       HTMLMapElement);
-    create_element_and_check("mark",      HTMLElement);
-    create_element_and_check("marquee",   HTMLElement);
-    create_element_and_check("meta",      HTMLMetaElement);
-    create_element_and_check("meter",     HTMLMeterElement);
-    create_element_and_check("nav",       HTMLElement);
-    create_element_and_check("nobr",      HTMLElement);
-    create_element_and_check("noframes",  HTMLElement);
-    create_element_and_check("noscript",  HTMLElement);
-    create_element_and_check("object",    HTMLObjectElement);
-    create_element_and_check("ol",        HTMLOListElement);
-    create_element_and_check("optgroup",  HTMLOptGroupElement);
-    create_element_and_check("option",    HTMLOptionElement);
-    create_element_and_check("output",    HTMLOutputElement);
-    create_element_and_check("p",         HTMLParagraphElement);
-    create_element_and_check("param",     HTMLParamElement);
-    create_element_and_check("pre",       HTMLPreElement);
-    create_element_and_check("progress",  HTMLProgressElement);
-    create_element_and_check("q",         HTMLQuoteElement);
-    create_element_and_check("rp",        HTMLElement);
-    create_element_and_check("rt",        HTMLElement);
-    create_element_and_check("ruby",      HTMLElement);
-    create_element_and_check("s",         HTMLElement);
-    create_element_and_check("samp",      HTMLElement);
-    create_element_and_check("script",    HTMLScriptElement);
-    create_element_and_check("section",   HTMLElement);
-    create_element_and_check("select",    HTMLSelectElement);
-    create_element_and_check("small",     HTMLElement);
-    create_element_and_check("source",    HTMLSourceElement);
-    create_element_and_check("spacer",    HTMLElement);
-    create_element_and_check("span",      HTMLSpanElement);
-    create_element_and_check("strike",    HTMLElement);
-    create_element_and_check("style",     HTMLStyleElement);
-    create_element_and_check("sub",       HTMLElement);
-    create_element_and_check("summary",   HTMLElement);
-    create_element_and_check("sup",       HTMLElement);
-    create_element_and_check("table",     HTMLTableElement);
-    create_element_and_check("tbody",     HTMLTableSectionElement);
-    create_element_and_check("td",        HTMLTableCellElement);
-    create_element_and_check("template",  HTMLTemplateElement);
-    create_element_and_check("textarea",  HTMLTextAreaElement);
-    create_element_and_check("th",        HTMLTableCellElement);
-    create_element_and_check("time",      HTMLTimeElement);
-    create_element_and_check("title",     HTMLTitleElement);
-    create_element_and_check("tr",        HTMLTableRowElement);
-    create_element_and_check("tt",        HTMLElement);
-    create_element_and_check("track",     HTMLTrackElement);
-    create_element_and_check("u",         HTMLElement);
-    create_element_and_check("ul",        HTMLUListElement);
-    create_element_and_check("var",       HTMLElement);
-    create_element_and_check("video",     HTMLVideoElement);
-    create_element_and_check("unknown",   HTMLUnknownElement);
-    create_element_and_check("wbr",       HTMLElement);
-}, "");
+create_element_and_check("a",         "HTMLAnchorElement");
+create_element_and_check("abbr",      "HTMLElement");
+create_element_and_check("acronym",   "HTMLElement");
+create_element_and_check("address",   "HTMLElement");
+create_element_and_check("applet",    "HTMLAppletElement");
+create_element_and_check("area",      "HTMLAreaElement");
+create_element_and_check("article",   "HTMLElement");
+create_element_and_check("aside",     "HTMLElement");
+create_element_and_check("audio",     "HTMLAudioElement");
+create_element_and_check("b",         "HTMLElement");
+create_element_and_check("base",      "HTMLBaseElement");
+create_element_and_check("bdi",       "HTMLElement");
+create_element_and_check("bdo",       "HTMLElement");
+create_element_and_check("bgsound",   "HTMLElement");
+create_element_and_check("big",       "HTMLElement");
+create_element_and_check("blockquote","HTMLElement");
+create_element_and_check("body",      "HTMLBodyElement");
+create_element_and_check("br",        "HTMLBRElement");
+create_element_and_check("button",    "HTMLButtonElement");
+create_element_and_check("canvas",    "HTMLCanvasElement");
+create_element_and_check("caption",   "HTMLTableCaptionElement");
+create_element_and_check("center",    "HTMLElement");
+create_element_and_check("cite",      "HTMLElement");
+create_element_and_check("code",      "HTMLElement");
+create_element_and_check("col",       "HTMLTableColElement");
+create_element_and_check("colgroup",  "HTMLTableColElement");
+create_element_and_check("data",      "HTMLDataElement");
+create_element_and_check("datalist",  "HTMLDataListElement");
+create_element_and_check("dialog",    "HTMLDialogElement");
+create_element_and_check("dd",        "HTMLElement");
+create_element_and_check("del",       "HTMLModElement");
+create_element_and_check("details",   "HTMLElement");
+create_element_and_check("dfn",       "HTMLElement");
+create_element_and_check("dir",       "HTMLDirectoryElement");
+create_element_and_check("div",       "HTMLDivElement");
+create_element_and_check("dl",        "HTMLDListElement");
+create_element_and_check("dt",        "HTMLElement");
+create_element_and_check("embed",     "HTMLEmbedElement");
+create_element_and_check("fieldset",  "HTMLFieldSetElement");
+create_element_and_check("figcaption","HTMLElement");
+create_element_and_check("figure",    "HTMLElement");
+create_element_and_check("font",      "HTMLFontElement");
+create_element_and_check("footer",    "HTMLElement");
+create_element_and_check("form",      "HTMLFormElement");
+create_element_and_check("frame",     "HTMLFrameElement");
+create_element_and_check("frameset",  "HTMLFrameSetElement");
+create_element_and_check("h1",        "HTMLHeadingElement");
+create_element_and_check("h2",        "HTMLHeadingElement");
+create_element_and_check("h3",        "HTMLHeadingElement");
+create_element_and_check("h4",        "HTMLHeadingElement");
+create_element_and_check("h5",        "HTMLHeadingElement");
+create_element_and_check("h6",        "HTMLHeadingElement");
+create_element_and_check("head",      "HTMLHeadElement");
+create_element_and_check("header",    "HTMLElement");
+create_element_and_check("hgroup",    "HTMLElement");
+create_element_and_check("hr",        "HTMLHRElement");
+create_element_and_check("html",      "HTMLHtmlElement");
+create_element_and_check("i",         "HTMLElement");
+create_element_and_check("iframe",    "HTMLIFrameElement");
+create_element_and_check("img",       "HTMLImageElement");
+create_element_and_check("input",     "HTMLInputElement");
+create_element_and_check("ins",       "HTMLModElement");
+create_element_and_check("isindex",   "HTMLElement");
+create_element_and_check("kbd",       "HTMLElement");
+create_element_and_check("label",     "HTMLLabelElement");
+create_element_and_check("legend",    "HTMLLegendElement");
+create_element_and_check("li",        "HTMLLIElement");
+create_element_and_check("link",      "HTMLLinkElement");
+create_element_and_check("main",      "HTMLElement");
+create_element_and_check("map",       "HTMLMapElement");
+create_element_and_check("mark",      "HTMLElement");
+create_element_and_check("marquee",   "HTMLElement");
+create_element_and_check("meta",      "HTMLMetaElement");
+create_element_and_check("meter",     "HTMLMeterElement");
+create_element_and_check("nav",       "HTMLElement");
+create_element_and_check("nobr",      "HTMLElement");
+create_element_and_check("noframes",  "HTMLElement");
+create_element_and_check("noscript",  "HTMLElement");
+create_element_and_check("object",    "HTMLObjectElement");
+create_element_and_check("ol",        "HTMLOListElement");
+create_element_and_check("optgroup",  "HTMLOptGroupElement");
+create_element_and_check("option",    "HTMLOptionElement");
+create_element_and_check("output",    "HTMLOutputElement");
+create_element_and_check("p",         "HTMLParagraphElement");
+create_element_and_check("param",     "HTMLParamElement");
+create_element_and_check("pre",       "HTMLPreElement");
+create_element_and_check("progress",  "HTMLProgressElement");
+create_element_and_check("q",         "HTMLQuoteElement");
+create_element_and_check("rp",        "HTMLElement");
+create_element_and_check("rt",        "HTMLElement");
+create_element_and_check("ruby",      "HTMLElement");
+create_element_and_check("s",         "HTMLElement");
+create_element_and_check("samp",      "HTMLElement");
+create_element_and_check("script",    "HTMLScriptElement");
+create_element_and_check("section",   "HTMLElement");
+create_element_and_check("select",    "HTMLSelectElement");
+create_element_and_check("small",     "HTMLElement");
+create_element_and_check("source",    "HTMLSourceElement");
+create_element_and_check("spacer",    "HTMLElement");
+create_element_and_check("span",      "HTMLSpanElement");
+create_element_and_check("strike",    "HTMLElement");
+create_element_and_check("style",     "HTMLStyleElement");
+create_element_and_check("sub",       "HTMLElement");
+create_element_and_check("summary",   "HTMLElement");
+create_element_and_check("sup",       "HTMLElement");
+create_element_and_check("table",     "HTMLTableElement");
+create_element_and_check("tbody",     "HTMLTableSectionElement");
+create_element_and_check("td",        "HTMLTableCellElement");
+create_element_and_check("template",  "HTMLTemplateElement");
+create_element_and_check("textarea",  "HTMLTextAreaElement");
+create_element_and_check("th",        "HTMLTableCellElement");
+create_element_and_check("time",      "HTMLTimeElement");
+create_element_and_check("title",     "HTMLTitleElement");
+create_element_and_check("tr",        "HTMLTableRowElement");
+create_element_and_check("tt",        "HTMLElement");
+create_element_and_check("track",     "HTMLTrackElement");
+create_element_and_check("u",         "HTMLElement");
+create_element_and_check("ul",        "HTMLUListElement");
+create_element_and_check("var",       "HTMLElement");
+create_element_and_check("video",     "HTMLVideoElement");
+create_element_and_check("unknown",   "HTMLUnknownElement");
+create_element_and_check("wbr",       "HTMLElement");
 
 test(function() {
     var fragment = document.createDocumentFragment();
@@ -230,7 +229,16 @@ test(function() {
     var doc = document.implementation.createDocument(null, null);
     var copy = doc.cloneNode();
     check_copy(doc, copy, Document);
+    assert_equals(doc.charset, "UTF-8");
+    assert_equals(doc.charset, copy.charset);
+    assert_equals(doc.contentType, "application/xml");
     assert_equals(doc.contentType, copy.contentType);
+    assert_equals(doc.URL, "about:blank")
+    assert_equals(doc.URL, copy.URL);
+    assert_equals(doc.origin, "null")
+    assert_equals(doc.origin, copy.origin);
+    assert_equals(doc.compatMode, "CSS1Compat");
+    assert_equals(doc.compatMode, copy.compatMode);
 }, "implementation.createDocument");
 
 test(function() {
index d15122f..3611552 100644 (file)
@@ -16,10 +16,7 @@ None
 ------------------------------------------------------------------------
 List of files:
 /LayoutTests/imported/w3c/web-platform-tests/domparsing/DOMParser-parseFromString-html.html
-/LayoutTests/imported/w3c/web-platform-tests/domparsing/DOMParser-parseFromString-xml-doctype.html
-/LayoutTests/imported/w3c/web-platform-tests/domparsing/DOMParser-parseFromString-xml.html
 /LayoutTests/imported/w3c/web-platform-tests/domparsing/OWNERS
-/LayoutTests/imported/w3c/web-platform-tests/domparsing/XMLSerializer-serializeToString.html
 /LayoutTests/imported/w3c/web-platform-tests/domparsing/createContextualFragment.html
 /LayoutTests/imported/w3c/web-platform-tests/domparsing/innerhtml-01.xhtml
 /LayoutTests/imported/w3c/web-platform-tests/domparsing/innerhtml-03.xhtml
@@ -30,8 +27,6 @@ List of files:
 /LayoutTests/imported/w3c/web-platform-tests/domparsing/insert-adjacent.html
 /LayoutTests/imported/w3c/web-platform-tests/domparsing/insert_adjacent_html.html
 /LayoutTests/imported/w3c/web-platform-tests/domparsing/insert_adjacent_html.js
-/LayoutTests/imported/w3c/web-platform-tests/domparsing/insert_adjacent_html-xhtml.xhtml
 /LayoutTests/imported/w3c/web-platform-tests/domparsing/outerhtml-01.html
 /LayoutTests/imported/w3c/web-platform-tests/domparsing/outerhtml-02.html
-/LayoutTests/imported/w3c/web-platform-tests/domparsing/style_attribute_html.html
 /LayoutTests/imported/w3c/web-platform-tests/domparsing/xml-serialization.xhtml
index 652caa1..63f50c0 100644 (file)
@@ -17,8 +17,6 @@
     <!--  Content metadata  -->
     <script src=/encrypted-media/content/content-metadata.js></script>
 
-    <!--  Message handler for Clear Key  -->
-    <script src=/encrypted-media/util/clearkey-messagehandler.js></script>
 
     <!--  The script for this specific test  -->
     <script src=/encrypted-media/scripts/setmediakeys.js></script>
index 9b018de..1f63aaf 100644 (file)
@@ -14,9 +14,6 @@
     <script src=/encrypted-media/util/utf8.js></script>
     <script src=/encrypted-media/util/fetch.js></script>
 
-    <!--  Message handler for Clear Key  -->
-    <script src=/encrypted-media/util/clearkey-messagehandler.js></script>
-
     <!--  The script for this specific test  -->
     <script src=/encrypted-media/scripts/not-callable-after-createsession.js></script>
 
index bd31397..3d4fb2e 100644 (file)
@@ -2,6 +2,7 @@
 <html>
   <head>
     <meta charset=utf-8>
+    <meta name="timeout" content="long">
     <title>Encrypted Media Extensions: Events with DRM</title>
     <link rel="help" href="https://w3c.github.io/encrypted-media/">
 
index 006cac7..43bcffa 100644 (file)
@@ -2,6 +2,7 @@
 <html>
   <head>
     <meta charset=utf-8>
+    <meta name="timeout" content="long">
     <title>Encrypted Media Extensions: Expiration with DRM</title>
     <link rel="help" href="https://w3c.github.io/encrypted-media/">
 
index 6c86b3f..cb62b81 100644 (file)
@@ -2,6 +2,7 @@
 <html>
   <head>
     <meta charset=utf-8>
+    <meta name="timeout" content="long">
     <title>Encrypted Media Extensions: Successful Playback, Temporary session with DRM, mp4, multiple keys for audio/video</title>
     <link rel="help" href="https://w3c.github.io/encrypted-media/">
 
index 87fc06b..d6cac7d 100644 (file)
@@ -2,6 +2,7 @@
 <html>
   <head>
     <meta charset=utf-8>
+    <meta name="timeout" content="long">
     <title>Encrypted Media Extensions: Verify MediaKeySession.keyStatuses with multiple sessions, DRM</title>
     <link rel="help" href="https://w3c.github.io/encrypted-media/">
 
index 0794099..5598cfc 100644 (file)
@@ -2,6 +2,7 @@
 <html>
   <head>
     <meta charset=utf-8>
+    <meta name="timeout" content="long">
     <title>Encrypted Media Extensions: Successful Playback, persistent-license session with DRM, mp4, destroy the license</title>
     <link rel="help" href="https://w3c.github.io/encrypted-media/">
 
index 6ccb606..0d3f3ca 100644 (file)
@@ -2,6 +2,7 @@
 <html>
   <head>
     <meta charset=utf-8>
+    <meta name="timeout" content="long">
     <title>Encrypted Media Extensions: Successful Playback, persistent-license session with DRM, mp4, event sequence</title>
     <link rel="help" href="https://w3c.github.io/encrypted-media/">
 
index 64764c8..c8615a8 100644 (file)
@@ -2,6 +2,7 @@
 <html>
   <head>
     <meta charset=utf-8>
+    <meta name="timeout" content="long">
     <title>Encrypted Media Extensions: Successful Playback, persistent-license session with DRM, mp4</title>
     <link rel="help" href="https://w3c.github.io/encrypted-media/">
 
index 43a6557..a382740 100644 (file)
@@ -2,6 +2,7 @@
 <html>
   <head>
     <meta charset=utf-8>
+    <meta name="timeout" content="long">
     <title>Encrypted Media Extensions: Successful Playback, persistent-usage-record session with DRM, mp4, event sequence</title>
     <link rel="help" href="https://w3c.github.io/encrypted-media/">
 
index 8f1e951..13b9f5d 100644 (file)
@@ -2,6 +2,7 @@
 <html>
   <head>
     <meta charset=utf-8>
+    <meta name="timeout" content="long">
     <title>Encrypted Media Extensions: persistent-usage-record, playback and retrieve record in new window,  DRM, mp4</title>
     <link rel="help" href="https://w3c.github.io/encrypted-media/">
 
index e5cd1fd..ba1e89e 100644 (file)
@@ -2,6 +2,7 @@
 <html>
   <head>
     <meta charset=utf-8>
+    <meta name="timeout" content="long">
     <title>Encrypted Media Extensions: Successful Playback, Temporary session with DRM, mp4, clear then encrypted</title>
     <link rel="help" href="https://w3c.github.io/encrypted-media/">
 
index c1627ad..4774b87 100644 (file)
@@ -2,6 +2,7 @@
 <html>
   <head>
     <meta charset=utf-8>
+    <meta name="timeout" content="long">
     <title>Encrypted Media Extensions: Successful Playback, Temporary session with DRM, mp4, encrypted then clear</title>
     <link rel="help" href="https://w3c.github.io/encrypted-media/">
 
index 65bdb6e..414c2ac 100644 (file)
@@ -2,6 +2,7 @@
 <html>
   <head>
     <meta charset=utf-8>
+    <meta name="timeout" content="long">
     <title>Encrypted Media Extensions: Successful playback, temporary session with DRM, mp4, multiple keys</title>
     <link rel="help" href="https://w3c.github.io/encrypted-media/">
 
index e0a47b9..7b730fd 100644 (file)
@@ -2,6 +2,7 @@
 <html>
   <head>
     <meta charset=utf-8>
+    <meta name="timeout" content="long">
     <title>Encrypted Media Extensions: Verify MediaKeySession.keyStatuses with multiple sessions, DRM</title>
     <link rel="help" href="https://w3c.github.io/encrypted-media/">
 
index 3d204d6..3d98418 100644 (file)
@@ -2,6 +2,7 @@
 <html>
   <head>
     <meta charset=utf-8>
+    <meta name="timeout" content="long">
     <title>Encrypted Media Extensions: Successful Playback, Temporary session with DRM, mp4</title>
     <link rel="help" href="https://w3c.github.io/encrypted-media/">
 
index 315eef3..b2f890c 100644 (file)
@@ -2,6 +2,7 @@
 <html>
   <head>
     <meta charset=utf-8>
+    <meta name="timeout" content="long">
     <title>Encrypted Media Extensions: Successful Playback, Temporary session with DRM, mp4</title>
     <link rel="help" href="https://w3c.github.io/encrypted-media/">
 
index b9bac1b..255b2ae 100644 (file)
@@ -2,6 +2,7 @@
 <html>
   <head>
     <meta charset=utf-8>
+    <meta name="timeout" content="long">
     <title>Encrypted Media Extensions: Successful Playback, Temporary session with DRM, mp4</title>
     <link rel="help" href="https://w3c.github.io/encrypted-media/">
 
index 73c6869..c1045a7 100644 (file)
@@ -2,6 +2,7 @@
 <html>
   <head>
     <meta charset=utf-8>
+    <meta name="timeout" content="long">
     <title>Encrypted Media Extensions: Successful Playback, Temporary session with DRM, mp4</title>
     <link rel="help" href="https://w3c.github.io/encrypted-media/">
 
index 1827973..dbe37ac 100644 (file)
@@ -2,6 +2,7 @@
 <html>
   <head>
     <meta charset=utf-8>
+    <meta name="timeout" content="long">
     <title>Encrypted Media Extensions: Successful Playback, Temporary session with DRM, mp4, two videos</title>
     <link rel="help" href="https://w3c.github.io/encrypted-media/">
 
index 4ea10ce..fc78598 100644 (file)
@@ -2,6 +2,7 @@
 <html>
   <head>
     <meta charset=utf-8>
+    <meta name="timeout" content="long">
     <title>Encrypted Media Extensions: Verify MediaKeySession.keyStatuses with multiple sessions, DRM</title>
     <link rel="help" href="https://w3c.github.io/encrypted-media/">
 
index b969035..d1519c4 100644 (file)
@@ -2,6 +2,7 @@
 <html>
   <head>
     <meta charset=utf-8>
+    <meta name="timeout" content="long">
     <title>Encrypted Media Extensions: Successful Playback, Temporary session with DRM, mp4</title>
     <link rel="help" href="https://w3c.github.io/encrypted-media/">
 
index be66f06..174fd88 100644 (file)
@@ -2,7 +2,6 @@
 <html>
   <head>
     <meta charset=utf-8>
-    <meta name="timeout" content="long">
     <title>Encrypted Media Extensions: requestMediaKeySystemAccess tests, DRM</title>
     <link rel="help" href="https://w3c.github.io/encrypted-media/">
 
index b624ee3..a36452b 100644 (file)
@@ -2,6 +2,7 @@
 <html>
   <head>
     <meta charset=utf-8>
+    <meta name="timeout" content="long">
     <title>Encrypted Media Extensions: setMediaKeys again after playback with DRM</title>
     <link rel="help" href="https://w3c.github.io/encrypted-media/">
 
index e7ceae9..4868b4d 100644 (file)
@@ -2,6 +2,7 @@
 <html>
   <head>
     <meta charset=utf-8>
+    <meta name="timeout" content="long">
     <title>Encrypted Media Extensions: setMediaKeys again after resetting src attribute on video element with DRM</title>
     <link rel="help" href="https://w3c.github.io/encrypted-media/">
 
index 1695c55..e9484b0 100644 (file)
@@ -2,6 +2,7 @@
 <html>
   <head>
     <meta charset=utf-8>
+    <meta name="timeout" content="long">
     <title>Encrypted Media Extensions: setMediaKeys multiple at same time with DRM</title>
     <link rel="help" href="https://w3c.github.io/encrypted-media/">
 
index 554a754..3dae8ca 100644 (file)
@@ -2,6 +2,7 @@
 <html>
   <head>
     <meta charset=utf-8>
+    <meta name="timeout" content="long">
     <title>Encrypted Media Extensions: setMediaKeys multiple times with different mediakeys with DRM</title>
     <link rel="help" href="https://w3c.github.io/encrypted-media/">
 
index d0d9eab..b0e0b12 100644 (file)
@@ -2,6 +2,7 @@
 <html>
   <head>
     <meta charset=utf-8>
+    <meta name="timeout" content="long">
     <title>Encrypted Media Extensions: setMediaKeys multiple times with the same mediakeys with DRM</title>
     <link rel="help" href="https://w3c.github.io/encrypted-media/">
 
index 239bdf9..14a9e46 100644 (file)
@@ -2,6 +2,7 @@
 <html>
   <head>
     <meta charset=utf-8>
+    <meta name="timeout" content="long">
     <title>Encrypted Media Extensions: setMediaKeys to multiple video elements with DRM</title>
     <link rel="help" href="https://w3c.github.io/encrypted-media/">
 
index dda1975..6d42956 100644 (file)
@@ -17,9 +17,6 @@
     <!--  Content metadata  -->
     <script src=/encrypted-media/content/content-metadata.js></script>
 
-    <!--  Message handler for DRM servers  -->
-    <script src=/encrypted-media/util/drm-messagehandler.js></script>
-
     <!--  The script for this specific test  -->
     <script src=/encrypted-media/scripts/setmediakeys.js></script>
 
index 6f58fc0..e7878b6 100644 (file)
@@ -2,6 +2,7 @@
 <html>
   <head>
     <meta charset=utf-8>
+    <meta name="timeout" content="long">
     <title>Encrypted Media Extensions - Waiting for a key for DRM, mp4</title>
     <link rel="help" href="https://w3c.github.io/encrypted-media/">
 
index f251f5a..a009a01 100644 (file)
@@ -14,9 +14,6 @@
     <script src=/encrypted-media/util/utf8.js></script>
     <script src=/encrypted-media/util/fetch.js></script>
 
-    <!--  Message handler for DRM server  -->
-    <script src=/encrypted-media/util/drm-messagehandler.js></script>
-
     <!--  The script for this specific test  -->
     <script src=/encrypted-media/scripts/not-callable-after-createsession.js></script>
 
index 8e8800f..756cb8f 100644 (file)
@@ -2,6 +2,7 @@
 <html>
   <head>
     <meta charset=utf-8>
+    <meta name="timeout" content="long">
     <title>Encrypted Media Extensions: Test that persistent license cannot be ingested into temporary session</title>
     <link rel="help" href="https://w3c.github.io/encrypted-media/">
 
index 70b175e..ed137a1 100644 (file)
@@ -1,11 +1,11 @@
 
-FAIL Fetch with GET assert_equals: Request should have header origin: http://localhost:8800 expected (string) "http://localhost:8800" but got (object) null
-FAIL Fetch with HEAD assert_equals: Request should have header origin: http://localhost:8800 expected (string) "http://localhost:8800" but got (object) null
+PASS Fetch with GET 
+FAIL Fetch with HEAD assert_equals: Request should have header content-length: null expected (object) null but got (string) "0"
 PASS Fetch with PUT without body 
 PASS Fetch with PUT with body 
 PASS Fetch with POST without body 
 PASS Fetch with POST with text body 
-PASS Fetch with POST with FormData body 
+FAIL Fetch with POST with FormData body assert_true: Request should have header content-type starting with multipart/form-data; boundary=, but got multipart/form-data;boundary=----WebKitFormBoundary7HBc13pIcNoBV6R5 expected true got false
 PASS Fetch with POST with URLSearchParams body 
 FAIL Fetch with POST with Blob body assert_equals: Request should have header content-type: null expected (object) null but got (string) ""
 FAIL Fetch with POST with ArrayBuffer body assert_equals: Request should have header content-type: null expected (object) null but got (string) "application/x-www-form-urlencoded"
@@ -17,4 +17,10 @@ FAIL Fetch with POST with DataView body assert_equals: Request should have heade
 PASS Fetch with POST with Blob body with mime type 
 FAIL Fetch with Chicken assert_equals: Request should have header content-length: null expected (object) null but got (string) "0"
 PASS Fetch with Chicken with body 
+PASS Fetch with GET and mode "cors" does not need an Origin header 
+PASS Fetch with POST and mode "same-origin" needs an Origin header 
+PASS Fetch with POST and mode "no-cors" needs an Origin header 
+PASS Fetch with PUT and mode "same-origin" needs an Origin header 
+PASS Fetch with TacO and mode "same-origin" needs an Origin header 
+PASS Fetch with TacO and mode "cors" needs an Origin header 
 
index 00a3027..447fe1e 100644 (file)
@@ -1,6 +1,6 @@
 
-FAIL Fetch with GET assert_equals: Request should have header origin: http://localhost:8800 expected (string) "http://localhost:8800" but got (object) null
-FAIL Fetch with HEAD assert_equals: Request should have header origin: http://localhost:8800 expected (string) "http://localhost:8800" but got (object) null
+PASS Fetch with GET 
+FAIL Fetch with HEAD assert_equals: Request should have header content-length: null expected (object) null but got (string) "0"
 PASS Fetch with PUT without body 
 PASS Fetch with PUT with body 
 PASS Fetch with POST without body 
@@ -17,4 +17,10 @@ FAIL Fetch with POST with DataView body assert_equals: Request should have heade
 PASS Fetch with POST with Blob body with mime type 
 FAIL Fetch with Chicken assert_equals: Request should have header content-length: null expected (object) null but got (string) "0"
 PASS Fetch with Chicken with body 
+PASS Fetch with GET and mode "cors" does not need an Origin header 
+PASS Fetch with POST and mode "same-origin" needs an Origin header 
+PASS Fetch with POST and mode "no-cors" needs an Origin header 
+PASS Fetch with PUT and mode "same-origin" needs an Origin header 
+PASS Fetch with TacO and mode "same-origin" needs an Origin header 
+PASS Fetch with TacO and mode "cors" needs an Origin header 
 
index 7b0eee4..2df59a5 100644 (file)
@@ -6,7 +6,7 @@ if (this.document === undefined) {
 function checkContentType(contentType, body)
 {
     if (self.FormData && body instanceof self.FormData) {
-        assert_true(contentType.startsWith("multipart/form-data;boundary="), "Request should have header content-type starting with multipart/form-data;boundary=, but got " + contentType);
+        assert_true(contentType.startsWith("multipart/form-data; boundary="), "Request should have header content-type starting with multipart/form-data; boundary=, but got " + contentType);
         return;
     }
 
@@ -44,8 +44,8 @@ function requestHeaders(desc, url, method, body, expectedOrigin, expectedContent
 
 var url = RESOURCES_DIR + "inspect-headers.py"
 
-requestHeaders("Fetch with GET", url, "GET", null, location.origin, null);
-requestHeaders("Fetch with HEAD", url, "HEAD", null, location.origin, null);
+requestHeaders("Fetch with GET", url, "GET", null, null, null);
+requestHeaders("Fetch with HEAD", url, "HEAD", null, null, null);
 requestHeaders("Fetch with PUT without body", url, "POST", null, location.origin, "0");
 requestHeaders("Fetch with PUT with body", url, "PUT", "Request's body", location.origin, "14");
 requestHeaders("Fetch with POST without body", url, "POST", null, location.origin, "0");
@@ -63,4 +63,24 @@ requestHeaders("Fetch with POST with Blob body with mime type", url, "POST", new
 requestHeaders("Fetch with Chicken", url, "Chicken", null, location.origin, null);
 requestHeaders("Fetch with Chicken with body", url, "Chicken", "Request's body", location.origin, "14");
 
+function requestOriginHeader(method, mode, needsOrigin) {
+  promise_test(function(test){
+    return fetch(url + "?headers=origin", {method:method, mode:mode}).then(function(resp) {
+      assert_equals(resp.status, 200, "HTTP status is 200");
+      assert_equals(resp.type , "basic", "Response's type is basic");
+      if(needsOrigin)
+        assert_equals(resp.headers.get("x-request-origin") , location.origin, "Request should have an Origin header with origin: " + location.origin);
+      else
+        assert_equals(resp.headers.get("x-request-origin"), null, "Request should not have an Origin header")
+    });
+  }, "Fetch with " + method + " and mode \"" + mode + "\" " + (needsOrigin ? "needs" : "does not need") + " an Origin header");
+}
+
+requestOriginHeader("GET", "cors", false);
+requestOriginHeader("POST", "same-origin", true);
+requestOriginHeader("POST", "no-cors", true);
+requestOriginHeader("PUT", "same-origin", true);
+requestOriginHeader("TacO", "same-origin", true);
+requestOriginHeader("TacO", "cors", true);
+
 done();
index a84e5a0..6eabc0e 100644 (file)
@@ -10,4 +10,10 @@ PASS Fetch with POST with Float32Array body
 PASS Fetch with POST with Float64Array body 
 PASS Fetch with POST with DataView body 
 PASS Fetch with POST with Blob body with mime type 
+FAIL Fetch with POST with ReadableStream assert_equals: expected "Test" but got ""
+FAIL Fetch with POST with ReadableStream containing String undefined is not an object (evaluating 'promise.then')
+FAIL Fetch with POST with ReadableStream containing null undefined is not an object (evaluating 'promise.then')
+FAIL Fetch with POST with ReadableStream containing number undefined is not an object (evaluating 'promise.then')
+FAIL Fetch with POST with ReadableStream containing ArrayBuffer undefined is not an object (evaluating 'promise.then')
+FAIL Fetch with POST with ReadableStream containing Blob undefined is not an object (evaluating 'promise.then')
 
index a84e5a0..6eabc0e 100644 (file)
@@ -10,4 +10,10 @@ PASS Fetch with POST with Float32Array body
 PASS Fetch with POST with Float64Array body 
 PASS Fetch with POST with DataView body 
 PASS Fetch with POST with Blob body with mime type 
+FAIL Fetch with POST with ReadableStream assert_equals: expected "Test" but got ""
+FAIL Fetch with POST with ReadableStream containing String undefined is not an object (evaluating 'promise.then')
+FAIL Fetch with POST with ReadableStream containing null undefined is not an object (evaluating 'promise.then')
+FAIL Fetch with POST with ReadableStream containing number undefined is not an object (evaluating 'promise.then')
+FAIL Fetch with POST with ReadableStream containing ArrayBuffer undefined is not an object (evaluating 'promise.then')
+FAIL Fetch with POST with ReadableStream containing Blob undefined is not an object (evaluating 'promise.then')
 
index b5d79c4..8e9e89f 100644 (file)
@@ -18,6 +18,17 @@ function testUpload(desc, url, method, body, expectedBody) {
   }, desc);
 }
 
+function testUploadFailure(desc, url, method, body) {
+  const requestInit = {"method": method};
+  promise_test(test => {
+    if (typeof body === "function")
+      body = body();
+    if (body)
+      requestInit["body"] = body;
+    return promise_rejects(new TypeError(), fetch(url, requestInit));
+  }, desc);
+}
+
 var url = RESOURCES_DIR + "echo-content.py"
 
 testUpload("Fetch with PUT with body", url, "PUT", "Request's body", "Request's body");
@@ -31,5 +42,30 @@ testUpload("Fetch with POST with Float32Array body", url, "POST", new Float32Arr
 testUpload("Fetch with POST with Float64Array body", url, "POST", new Float64Array(1), "\0\0\0\0\0\0\0\0");
 testUpload("Fetch with POST with DataView body", url, "POST", new DataView(new ArrayBuffer(8), 0, 4), "\0\0\0\0");
 testUpload("Fetch with POST with Blob body with mime type", url, "POST", new Blob(["Test"], { type: "text/maybe" }), "Test");
+testUpload("Fetch with POST with ReadableStream", url, "POST", new ReadableStream({start: controller => {
+    const encoder = new TextEncoder();
+    controller.enqueue(encoder.encode("Test"));
+    controller.close();
+  }}), "Test");
+testUploadFailure("Fetch with POST with ReadableStream containing String", url, "POST", new ReadableStream({start: controller => {
+    controller.enqueue("Test");
+    controller.close();
+  }}));
+testUploadFailure("Fetch with POST with ReadableStream containing null", url, "POST", new ReadableStream({start: controller => {
+    controller.enqueue(null);
+    controller.close();
+  }}));
+testUploadFailure("Fetch with POST with ReadableStream containing number", url, "POST", new ReadableStream({start: controller => {
+    controller.enqueue(99);
+    controller.close();
+  }}));
+testUploadFailure("Fetch with POST with ReadableStream containing ArrayBuffer", url, "POST", new ReadableStream({start: controller => {
+    controller.enqueue(new ArrayBuffer());
+    controller.close();
+  }}));
+testUploadFailure("Fetch with POST with ReadableStream containing Blob", url, "POST", new ReadableStream({start: controller => {
+    controller.enqueue(new Blob());
+    controller.close();
+  }}));
 
 done();
index 9d6fab7..584a544 100644 (file)
@@ -5,8 +5,9 @@ PASS Create headers from empty object
 PASS Create headers with null should throw 
 PASS Create headers with 1 should throw 
 PASS Create headers with sequence 
-PASS Create headers with OpenEndedDictionary 
+PASS Create headers with record 
 PASS Create headers with existing headers 
+FAIL Create headers with existing headers with custom iterator assert_equals: expected (string) "test" but got (object) null
 PASS Check append method 
 PASS Check set method 
 PASS Check has method 
index 98d71ac..1d3f4d4 100644 (file)
@@ -57,7 +57,7 @@
           assert_equals(headers.get(name), String(headerDict[name]),
             "name: " + name + " has value: " + headerDict[name]);
         }
-      }, "Create headers with OpenEndedDictionary");
+      }, "Create headers with record");
 
       test(function() {
         var headers = new Headers(headerDict);
       }, "Create headers with existing headers");
 
       test(function() {
+        var headers = new Headers()
+        headers[Symbol.iterator] = function *() {
+          yield ["test", "test"]
+        }
+        var headers2 = new Headers(headers)
+        assert_equals(headers2.get("test"), "test")
+      }, "Create headers with existing headers with custom iterator");
+
+      test(function() {
         var headers = new Headers();
         for (name in headerDict) {
           headers.append(name, headerDict[name]);
index d1ce266..fe24fa3 100644 (file)
@@ -12,7 +12,7 @@
   </head>
   <body>
     <script id="headers-idl" type="text/plain">
-      typedef (Headers or sequence<sequence<ByteString>> or OpenEndedDictionary<ByteString>) HeadersInit;
+      typedef (sequence<sequence<ByteString>> or record<ByteString>) HeadersInit;
 
       [Constructor(optional HeadersInit init),
       Exposed=(Window,Worker)]
index 1ce33b7..0f624e8 100644 (file)
@@ -3,6 +3,7 @@
   <head>
     <meta charset="utf-8">
     <title>Fetch in worker: rediraction loop</title>
+    <meta name="timeout" content="long">
     <meta name="author" title="Canon Research France" href="https://www.crf.canon.fr">
     <meta name="help" href="https://fetch.spec.whatwg.org/#http-network-or-cache-fetch">
     <script src="/resources/testharness.js"></script>
@@ -13,4 +14,4 @@
       fetch_tests_from_worker(new Worker("redirect-count.js"));
     </script>
   </body>
-</html>
\ No newline at end of file
+</html>
index 61deb9f..d6a66e6 100644 (file)
@@ -3,6 +3,7 @@
   <head>
     <meta charset="utf-8">
     <title>Fetch: redirection loop</title>
+    <meta name="timeout" content="long">
     <meta name="author" title="Canon Research France" href="https://www.crf.canon.fr">
     <meta name="help" href="https://fetch.spec.whatwg.org/#http-network-or-cache-fetch">
     <script src="/resources/testharness.js"></script>
@@ -13,4 +14,4 @@
     <script src="../resources/utils.js"></script>
     <script src="redirect-count.js"></script>
   </body>
-</html>
\ No newline at end of file
+</html>
index 74f33cb..0103280 100644 (file)
@@ -4,12 +4,14 @@ if (this.document === undefined) {
   importScripts("/common/utils.js");
 }
 
-function redirectCount(desc, redirectUrl, redirectStatus, maxCount, shouldPass) {
+function redirectCount(desc, redirectUrl, redirectLocation, redirectStatus, maxCount, shouldPass) {
   var uuid_token = token();
 
   var urlParameters = "?token=" + uuid_token + "&max_age=0";
   urlParameters += "&redirect_status=" + redirectStatus;
   urlParameters += "&max_count=" + maxCount;
+  if (redirectLocation)
+    urlParameters += "&location=" + encodeURIComponent(redirectLocation);
 
   var url = redirectUrl;
   var requestInit = {"redirect": "follow"};
@@ -31,11 +33,11 @@ function redirectCount(desc, redirectUrl, redirectStatus, maxCount, shouldPass)
   }, desc);
 }
 
-var redirUrl = RESOURCES_DIR + "redirect-count.py";
+var redirUrl = RESOURCES_DIR + "redirect.py";
 
 for (var statusCode of [301, 302, 303, 307, 308]) {
-  redirectCount("Redirect " + statusCode + " 20 times", redirUrl, statusCode, 20, true);
-  redirectCount("Redirect " + statusCode + " 21 times", redirUrl, statusCode, 21, false);
+  redirectCount("Redirect " + statusCode + " 20 times", redirUrl, redirUrl, statusCode, 20, true);
+  redirectCount("Redirect " + statusCode + " 21 times", redirUrl, redirUrl, statusCode, 21, false);
 }
 
 done();
diff --git a/LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-referrer-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-referrer-expected.txt
new file mode 100644 (file)
index 0000000..42cc6fc
--- /dev/null
@@ -0,0 +1,34 @@
+
+PASS Same origin redirection, empty init, unsafe-url redirect header  
+PASS Same origin redirection, empty init, no-referrer-when-downgrade redirect header  
+PASS Same origin redirection, empty init, same-origin redirect header  
+FAIL Same origin redirection, empty init, origin redirect header  assert_equals: Check referrer header expected "http://localhost:8800/" but got "http://localhost:8800/fetch/api/redirect/redirect-referrer.html"
+PASS Same origin redirection, empty init, origin-when-cross-origin redirect header  
+FAIL Same origin redirection, empty init, no-referrer redirect header  assert_equals: Check referrer header expected (object) null but got (string) "http://localhost:8800/fetch/api/redirect/redirect-referrer.html"
+FAIL Same origin redirection, empty init, strict-origin redirect header  assert_equals: Check referrer header expected "http://localhost:8800/" but got "http://localhost:8800/fetch/api/redirect/redirect-referrer.html"
+PASS Same origin redirection, empty init, strict-origin-when-cross-origin redirect header  
+PASS Same origin redirection, empty redirect header, unsafe-url init  
+PASS Same origin redirection, empty redirect header, no-referrer-when-downgrade init  
+FAIL Same origin redirection, empty redirect header, same-origin init  promise_test: Unhandled rejection with value: object "TypeError: Type error"
+PASS Same origin redirection, empty redirect header, origin init  
+PASS Same origin redirection, empty redirect header, origin-when-cross-origin init  
+PASS Same origin redirection, empty redirect header, no-referrer init  
+FAIL Same origin redirection, empty redirect header, strict-origin init  promise_test: Unhandled rejection with value: object "TypeError: Type error"
+FAIL Same origin redirection, empty redirect header, strict-origin-when-cross-origin init  promise_test: Unhandled rejection with value: object "TypeError: Type error"
+FAIL Cross origin redirection, empty init, unsafe-url redirect header  assert_equals: Check referrer header expected (string) "http://localhost:8800/fetch/api/redirect/redirect-referrer.html" but got (object) null
+FAIL Cross origin redirection, empty init, no-referrer-when-downgrade redirect header  assert_equals: Check referrer header expected (string) "http://localhost:8800/fetch/api/redirect/redirect-referrer.html" but got (object) null
+PASS Cross origin redirection, empty init, same-origin redirect header  
+FAIL Cross origin redirection, empty init, origin redirect header  assert_equals: Check referrer header expected (string) "http://localhost:8800/" but got (object) null
+FAIL Cross origin redirection, empty init, origin-when-cross-origin redirect header  assert_equals: Check referrer header expected (string) "http://localhost:8800/" but got (object) null
+PASS Cross origin redirection, empty init, no-referrer redirect header  
+FAIL Cross origin redirection, empty init, strict-origin redirect header  assert_equals: Check referrer header expected (string) "http://localhost:8800/" but got (object) null
+FAIL Cross origin redirection, empty init, strict-origin-when-cross-origin redirect header  assert_equals: Check referrer header expected (string) "http://localhost:8800/" but got (object) null
+FAIL Cross origin redirection, empty redirect header, unsafe-url init  assert_equals: Check referrer header expected (string) "http://localhost:8800/fetch/api/redirect/redirect-referrer.html" but got (object) null
+FAIL Cross origin redirection, empty redirect header, no-referrer-when-downgrade init  assert_equals: Check referrer header expected (string) "http://localhost:8800/fetch/api/redirect/redirect-referrer.html" but got (object) null
+FAIL Cross origin redirection, empty redirect header, same-origin init  promise_test: Unhandled rejection with value: object "TypeError: Type error"
+FAIL Cross origin redirection, empty redirect header, origin init  assert_equals: Check referrer header expected (string) "http://localhost:8800/" but got (object) null
+FAIL Cross origin redirection, empty redirect header, origin-when-cross-origin init  assert_equals: Check referrer header expected (string) "http://localhost:8800/" but got (object) null
+PASS Cross origin redirection, empty redirect header, no-referrer init  
+FAIL Cross origin redirection, empty redirect header, strict-origin init  promise_test: Unhandled rejection with value: object "TypeError: Type error"
+FAIL Cross origin redirection, empty redirect header, strict-origin-when-cross-origin init  promise_test: Unhandled rejection with value: object "TypeError: Type error"
+
diff --git a/LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-referrer-worker-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-referrer-worker-expected.txt
new file mode 100644 (file)
index 0000000..4725eb2
--- /dev/null
@@ -0,0 +1,34 @@
+
+PASS Same origin redirection, empty init, unsafe-url redirect header  
+PASS Same origin redirection, empty init, no-referrer-when-downgrade redirect header  
+PASS Same origin redirection, empty init, same-origin redirect header  
+FAIL Same origin redirection, empty init, origin redirect header  assert_equals: Check referrer header expected "http://localhost:8800/" but got "http://localhost:8800/fetch/api/redirect/redirect-referrer.js"
+PASS Same origin redirection, empty init, origin-when-cross-origin redirect header  
+FAIL Same origin redirection, empty init, no-referrer redirect header  assert_equals: Check referrer header expected (object) null but got (string) "http://localhost:8800/fetch/api/redirect/redirect-referrer.js"
+FAIL Same origin redirection, empty init, strict-origin redirect header  assert_equals: Check referrer header expected "http://localhost:8800/" but got "http://localhost:8800/fetch/api/redirect/redirect-referrer.js"
+PASS Same origin redirection, empty init, strict-origin-when-cross-origin redirect header  
+PASS Same origin redirection, empty redirect header, unsafe-url init  
+PASS Same origin redirection, empty redirect header, no-referrer-when-downgrade init  
+FAIL Same origin redirection, empty redirect header, same-origin init  promise_test: Unhandled rejection with value: object "TypeError: Type error"
+PASS Same origin redirection, empty redirect header, origin init  
+PASS Same origin redirection, empty redirect header, origin-when-cross-origin init  
+PASS Same origin redirection, empty redirect header, no-referrer init  
+FAIL Same origin redirection, empty redirect header, strict-origin init  promise_test: Unhandled rejection with value: object "TypeError: Type error"
+FAIL Same origin redirection, empty redirect header, strict-origin-when-cross-origin init  promise_test: Unhandled rejection with value: object "TypeError: Type error"
+FAIL Cross origin redirection, empty init, unsafe-url redirect header  assert_equals: Check referrer header expected (string) "http://localhost:8800/fetch/api/redirect/redirect-referrer.js" but got (object) null
+FAIL Cross origin redirection, empty init, no-referrer-when-downgrade redirect header  assert_equals: Check referrer header expected (string) "http://localhost:8800/fetch/api/redirect/redirect-referrer.js" but got (object) null
+PASS Cross origin redirection, empty init, same-origin redirect header  
+FAIL Cross origin redirection, empty init, origin redirect header  assert_equals: Check referrer header expected (string) "http://localhost:8800/" but got (object) null
+FAIL Cross origin redirection, empty init, origin-when-cross-origin redirect header  assert_equals: Check referrer header expected (string) "http://localhost:8800/" but got (object) null
+PASS Cross origin redirection, empty init, no-referrer redirect header  
+FAIL Cross origin redirection, empty init, strict-origin redirect header  assert_equals: Check referrer header expected (string) "http://localhost:8800/" but got (object) null
+FAIL Cross origin redirection, empty init, strict-origin-when-cross-origin redirect header  assert_equals: Check referrer header expected (string) "http://localhost:8800/" but got (object) null
+FAIL Cross origin redirection, empty redirect header, unsafe-url init  assert_equals: Check referrer header expected (string) "http://localhost:8800/fetch/api/redirect/redirect-referrer.js" but got (object) null
+FAIL Cross origin redirection, empty redirect header, no-referrer-when-downgrade init  assert_equals: Check referrer header expected (string) "http://localhost:8800/fetch/api/redirect/redirect-referrer.js" but got (object) null
+FAIL Cross origin redirection, empty redirect header, same-origin init  promise_test: Unhandled rejection with value: object "TypeError: Type error"
+FAIL Cross origin redirection, empty redirect header, origin init  assert_equals: Check referrer header expected (string) "http://localhost:8800/" but got (object) null
+FAIL Cross origin redirection, empty redirect header, origin-when-cross-origin init  assert_equals: Check referrer header expected (string) "http://localhost:8800/" but got (object) null
+PASS Cross origin redirection, empty redirect header, no-referrer init  
+FAIL Cross origin redirection, empty redirect header, strict-origin init  promise_test: Unhandled rejection with value: object "TypeError: Type error"
+FAIL Cross origin redirection, empty redirect header, strict-origin-when-cross-origin init  promise_test: Unhandled rejection with value: object "TypeError: Type error"
+
diff --git a/LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-referrer-worker.html b/LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-referrer-worker.html
new file mode 100644 (file)
index 0000000..6e5cd45
--- /dev/null
@@ -0,0 +1,17 @@
+<!doctype html>
+<html>
+  <head>
+    <meta charset="utf-8">
+    <title>Fetch in worker: redirect referrer handling</title>
+    <meta name="author" title="Canon Research France" href="https://www.crf.canon.fr">
+    <meta name="help" href="https://fetch.spec.whatwg.org/#main-fetch">
+    <meta name="help" href="https://fetch.spec.whatwg.org/#http-redirect-fetch">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <script>
+      fetch_tests_from_worker(new Worker("redirect-referrer.js"));
+    </script>
+  </body>
+</html>
diff --git a/LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-referrer.html b/LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-referrer.html
new file mode 100644 (file)
index 0000000..473b5e6
--- /dev/null
@@ -0,0 +1,18 @@
+<!doctype html>
+<html>
+  <head>
+    <meta charset="utf-8">
+    <title>Fetch: redirect referrer handling</title>
+    <meta name="author" title="Canon Research France" href="https://www.crf.canon.fr">
+    <meta name="help" href="https://fetch.spec.whatwg.org/#main-fetch">
+    <meta name="help" href="https://fetch.spec.whatwg.org/#http-redirect-fetch">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+  </head>
+  <body>
+    <script src="/common/utils.js"></script>
+    <script src="../resources/utils.js"></script>
+    <script src="/common/get-host-info.sub.js"></script>
+    <script src="redirect-referrer.js"></script>
+  </body>
+</html>
diff --git a/LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-referrer.js b/LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-referrer.js
new file mode 100644 (file)
index 0000000..fabecea
--- /dev/null
@@ -0,0 +1,68 @@
+if (this.document === undefined) {
+  importScripts("/common/utils.js");
+  importScripts("/resources/testharness.js");
+  importScripts("../resources/utils.js");
+  importScripts("/common/get-host-info.sub.js");
+}
+
+function testReferrerAfterRedirection(desc, redirectUrl, redirectLocation, referrerPolicy, redirectReferrerPolicy, expectedReferrer) {
+  var url = redirectUrl;
+  var urlParameters = "?location=" + encodeURIComponent(redirectLocation);
+
+  if (redirectReferrerPolicy)
+    urlParameters += "&redirect_referrerpolicy=" + redirectReferrerPolicy;
+
+  var requestInit = {"redirect": "follow", "referrerPolicy": referrerPolicy};
+
+    promise_test(function(test) {
+      return fetch(url + urlParameters, requestInit).then(function(response) {
+        assert_equals(response.status, 200, "Inspect header response's status is 200");
+        assert_equals(response.headers.get("x-request-referer"), expectedReferrer ? expectedReferrer : null, "Check referrer header");
+      });
+    }, desc);
+}
+
+var referrerOrigin = get_host_info().HTTP_ORIGIN + "/";
+var referrerUrl = location.href;
+
+var redirectUrl = RESOURCES_DIR + "redirect.py";
+var locationUrl = get_host_info().HTTP_ORIGIN + dirname(location.pathname) + RESOURCES_DIR + "inspect-headers.py?headers=referer";
+var crossLocationUrl =  get_host_info().HTTP_REMOTE_ORIGIN + dirname(location.pathname) + RESOURCES_DIR + "inspect-headers.py?cors&headers=referer";
+
+testReferrerAfterRedirection("Same origin redirection, empty init, unsafe-url redirect header ", redirectUrl, locationUrl, "", "unsafe-url", referrerUrl);
+testReferrerAfterRedirection("Same origin redirection, empty init, no-referrer-when-downgrade redirect header ", redirectUrl, locationUrl, "", "no-referrer-when-downgrade", referrerUrl);
+testReferrerAfterRedirection("Same origin redirection, empty init, same-origin redirect header ", redirectUrl, locationUrl, "", "same-origin", referrerUrl);
+testReferrerAfterRedirection("Same origin redirection, empty init, origin redirect header ", redirectUrl, locationUrl, "", "origin", referrerOrigin);
+testReferrerAfterRedirection("Same origin redirection, empty init, origin-when-cross-origin redirect header ", redirectUrl, locationUrl, "", "origin-when-cross-origin", referrerUrl);
+testReferrerAfterRedirection("Same origin redirection, empty init, no-referrer redirect header ", redirectUrl, locationUrl, "", "no-referrer", null);
+testReferrerAfterRedirection("Same origin redirection, empty init, strict-origin redirect header ", redirectUrl, locationUrl, "", "strict-origin", referrerOrigin);
+testReferrerAfterRedirection("Same origin redirection, empty init, strict-origin-when-cross-origin redirect header ", redirectUrl, locationUrl, "", "strict-origin-when-cross-origin", referrerUrl);
+
+testReferrerAfterRedirection("Same origin redirection, empty redirect header, unsafe-url init ", redirectUrl, locationUrl, "unsafe-url", "", referrerUrl);
+testReferrerAfterRedirection("Same origin redirection, empty redirect header, no-referrer-when-downgrade init ", redirectUrl, locationUrl, "no-referrer-when-downgrade", "", referrerUrl);
+testReferrerAfterRedirection("Same origin redirection, empty redirect header, same-origin init ", redirectUrl, locationUrl, "same-origin", "", referrerUrl);
+testReferrerAfterRedirection("Same origin redirection, empty redirect header, origin init ", redirectUrl, locationUrl, "origin", "", referrerOrigin);
+testReferrerAfterRedirection("Same origin redirection, empty redirect header, origin-when-cross-origin init ", redirectUrl, locationUrl, "origin-when-cross-origin", "", referrerUrl);
+testReferrerAfterRedirection("Same origin redirection, empty redirect header, no-referrer init ", redirectUrl, locationUrl, "no-referrer", "", null);
+testReferrerAfterRedirection("Same origin redirection, empty redirect header, strict-origin init ", redirectUrl, locationUrl, "strict-origin", "", referrerOrigin);
+testReferrerAfterRedirection("Same origin redirection, empty redirect header, strict-origin-when-cross-origin init ", redirectUrl, locationUrl, "strict-origin-when-cross-origin", "", referrerUrl);
+
+testReferrerAfterRedirection("Cross origin redirection, empty init, unsafe-url redirect header ", redirectUrl, crossLocationUrl, "", "unsafe-url", referrerUrl);
+testReferrerAfterRedirection("Cross origin redirection, empty init, no-referrer-when-downgrade redirect header ", redirectUrl, crossLocationUrl, "", "no-referrer-when-downgrade", referrerUrl);
+testReferrerAfterRedirection("Cross origin redirection, empty init, same-origin redirect header ", redirectUrl, crossLocationUrl, "", "same-origin", null);
+testReferrerAfterRedirection("Cross origin redirection, empty init, origin redirect header ", redirectUrl, crossLocationUrl, "", "origin", referrerOrigin);
+testReferrerAfterRedirection("Cross origin redirection, empty init, origin-when-cross-origin redirect header ", redirectUrl, crossLocationUrl, "", "origin-when-cross-origin", referrerOrigin);
+testReferrerAfterRedirection("Cross origin redirection, empty init, no-referrer redirect header ", redirectUrl, crossLocationUrl, "", "no-referrer", null);
+testReferrerAfterRedirection("Cross origin redirection, empty init, strict-origin redirect header ", redirectUrl, crossLocationUrl, "", "strict-origin", referrerOrigin);
+testReferrerAfterRedirection("Cross origin redirection, empty init, strict-origin-when-cross-origin redirect header ", redirectUrl, crossLocationUrl, "", "strict-origin-when-cross-origin", referrerOrigin);
+
+testReferrerAfterRedirection("Cross origin redirection, empty redirect header, unsafe-url init ", redirectUrl, crossLocationUrl, "unsafe-url", "", referrerUrl);
+testReferrerAfterRedirection("Cross origin redirection, empty redirect header, no-referrer-when-downgrade init ", redirectUrl, crossLocationUrl, "no-referrer-when-downgrade", "", referrerUrl);
+testReferrerAfterRedirection("Cross origin redirection, empty redirect header, same-origin init ", redirectUrl, crossLocationUrl, "same-origin", "", null);
+testReferrerAfterRedirection("Cross origin redirection, empty redirect header, origin init ", redirectUrl, crossLocationUrl, "origin", "", referrerOrigin);
+testReferrerAfterRedirection("Cross origin redirection, empty redirect header, origin-when-cross-origin init ", redirectUrl, crossLocationUrl, "origin-when-cross-origin", "", referrerOrigin);
+testReferrerAfterRedirection("Cross origin redirection, empty redirect header, no-referrer init ", redirectUrl, crossLocationUrl, "no-referrer", "", null);
+testReferrerAfterRedirection("Cross origin redirection, empty redirect header, strict-origin init ", redirectUrl, crossLocationUrl, "strict-origin", "", referrerOrigin);
+testReferrerAfterRedirection("Cross origin redirection, empty redirect header, strict-origin-when-cross-origin init ", redirectUrl, crossLocationUrl, "strict-origin-when-cross-origin", "", referrerOrigin);
+
+done();
index e16be27..a2d1136 100644 (file)
@@ -30,6 +30,9 @@ List of files:
 /LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-origin-worker.html
 /LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-origin.html
 /LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-origin.js
+/LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-referrer-worker.html
+/LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-referrer.html
+/LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-referrer.js
 /LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-schemes.html
 /LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-to-dataurl-worker.html
 /LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-to-dataurl.html
index 8edc71c..a885b8a 100644 (file)
@@ -6,9 +6,8 @@
 <script>
 'use strict';
 
-const current = document.querySelector('#c').contentWindow;
-
 window.createRequest = (...args) => {
+    const current = document.querySelector('#c').contentWindow;
     return new current.Request(...args);
 };
 
index 03437ea..1603636 100644 (file)
@@ -18,9 +18,9 @@ const loadPromise = new Promise(resolve => {
 
 promise_test(() => {
     return loadPromise.then(() => {
-        const req = frames[0].createRequest("url");
+        const req = document.querySelector('iframe').contentWindow.createRequest("url");
 
-        assert_equals(req.url, new URL("current/url", location.href).href);
+        assert_equals(req.url, new URL("current/success/url", location.href).href);
     });
 }, "should parse the URL relative to the current settings object");
 
diff --git a/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-bad-port-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-bad-port-expected.txt
new file mode 100644 (file)
index 0000000..a8e6ac8
--- /dev/null
@@ -0,0 +1,194 @@
+Blocked access to external URL http://example.com:1/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:1/ due to access control checks.
+Blocked access to external URL http://example.com:7/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:7/ due to access control checks.
+Blocked access to external URL http://example.com:9/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:9/ due to access control checks.
+Blocked access to external URL http://example.com:11/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:11/ due to access control checks.
+Blocked access to external URL http://example.com:13/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:13/ due to access control checks.
+Blocked access to external URL http://example.com:15/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:15/ due to access control checks.
+Blocked access to external URL http://example.com:17/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:17/ due to access control checks.
+Blocked access to external URL http://example.com:19/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:19/ due to access control checks.
+Blocked access to external URL http://example.com:20/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:20/ due to access control checks.
+Blocked access to external URL http://example.com:21/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:21/ due to access control checks.
+Blocked access to external URL http://example.com:22/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:22/ due to access control checks.
+Blocked access to external URL http://example.com:23/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:23/ due to access control checks.
+Blocked access to external URL http://example.com:25/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:25/ due to access control checks.
+Blocked access to external URL http://example.com:37/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:37/ due to access control checks.
+Blocked access to external URL http://example.com:42/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:42/ due to access control checks.
+Blocked access to external URL http://example.com:43/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:43/ due to access control checks.
+Blocked access to external URL http://example.com:53/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:53/ due to access control checks.
+Blocked access to external URL http://example.com:77/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:77/ due to access control checks.
+Blocked access to external URL http://example.com:79/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:79/ due to access control checks.
+Blocked access to external URL http://example.com:87/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:87/ due to access control checks.
+Blocked access to external URL http://example.com:95/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:95/ due to access control checks.
+Blocked access to external URL http://example.com:101/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:101/ due to access control checks.
+Blocked access to external URL http://example.com:102/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:102/ due to access control checks.
+Blocked access to external URL http://example.com:103/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:103/ due to access control checks.
+Blocked access to external URL http://example.com:104/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:104/ due to access control checks.
+Blocked access to external URL http://example.com:109/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:109/ due to access control checks.
+Blocked access to external URL http://example.com:110/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:110/ due to access control checks.
+Blocked access to external URL http://example.com:111/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:111/ due to access control checks.
+Blocked access to external URL http://example.com:113/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:113/ due to access control checks.
+Blocked access to external URL http://example.com:115/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:115/ due to access control checks.
+Blocked access to external URL http://example.com:117/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:117/ due to access control checks.
+Blocked access to external URL http://example.com:119/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:119/ due to access control checks.
+Blocked access to external URL http://example.com:123/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:123/ due to access control checks.
+Blocked access to external URL http://example.com:135/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:135/ due to access control checks.
+Blocked access to external URL http://example.com:139/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:139/ due to access control checks.
+Blocked access to external URL http://example.com:143/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:143/ due to access control checks.
+Blocked access to external URL http://example.com:179/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:179/ due to access control checks.
+Blocked access to external URL http://example.com:389/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:389/ due to access control checks.
+Blocked access to external URL http://example.com:465/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:465/ due to access control checks.
+Blocked access to external URL http://example.com:512/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:512/ due to access control checks.
+Blocked access to external URL http://example.com:513/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:513/ due to access control checks.
+Blocked access to external URL http://example.com:514/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:514/ due to access control checks.
+Blocked access to external URL http://example.com:515/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:515/ due to access control checks.
+Blocked access to external URL http://example.com:526/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:526/ due to access control checks.
+Blocked access to external URL http://example.com:530/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:530/ due to access control checks.
+Blocked access to external URL http://example.com:531/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:531/ due to access control checks.
+Blocked access to external URL http://example.com:532/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:532/ due to access control checks.
+Blocked access to external URL http://example.com:540/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:540/ due to access control checks.
+Blocked access to external URL http://example.com:556/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:556/ due to access control checks.
+Blocked access to external URL http://example.com:563/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:563/ due to access control checks.
+Blocked access to external URL http://example.com:587/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:587/ due to access control checks.
+Blocked access to external URL http://example.com:601/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:601/ due to access control checks.
+Blocked access to external URL http://example.com:636/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:636/ due to access control checks.
+Blocked access to external URL http://example.com:993/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:993/ due to access control checks.
+Blocked access to external URL http://example.com:995/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:995/ due to access control checks.
+Blocked access to external URL http://example.com:2049/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:2049/ due to access control checks.
+Blocked access to external URL http://example.com:3659/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:3659/ due to access control checks.
+Blocked access to external URL http://example.com:4045/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:4045/ due to access control checks.
+Blocked access to external URL http://example.com:6000/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:6000/ due to access control checks.
+Blocked access to external URL http://example.com:6665/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:6665/ due to access control checks.
+Blocked access to external URL http://example.com:6666/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:6666/ due to access control checks.
+Blocked access to external URL http://example.com:6667/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:6667/ due to access control checks.
+Blocked access to external URL http://example.com:6668/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:6668/ due to access control checks.
+Blocked access to external URL http://example.com:6669/
+CONSOLE MESSAGE: line 1: Fetch API cannot load http://example.com:6669/ due to access control checks.
+
+PASS Request on bad port 1 should throw TypeError. 
+PASS Request on bad port 7 should throw TypeError. 
+PASS Request on bad port 9 should throw TypeError. 
+PASS Request on bad port 11 should throw TypeError. 
+PASS Request on bad port 13 should throw TypeError. 
+PASS Request on bad port 15 should throw TypeError. 
+PASS Request on bad port 17 should throw TypeError. 
+PASS Request on bad port 19 should throw TypeError. 
+PASS Request on bad port 20 should throw TypeError. 
+PASS Request on bad port 21 should throw TypeError. 
+PASS Request on bad port 22 should throw TypeError. 
+PASS Request on bad port 23 should throw TypeError. 
+PASS Request on bad port 25 should throw TypeError. 
+PASS Request on bad port 37 should throw TypeError. 
+PASS Request on bad port 42 should throw TypeError. 
+PASS Request on bad port 43 should throw TypeError. 
+PASS Request on bad port 53 should throw TypeError. 
+PASS Request on bad port 77 should throw TypeError. 
+PASS Request on bad port 79 should throw TypeError. 
+PASS Request on bad port 87 should throw TypeError. 
+PASS Request on bad port 95 should throw TypeError. 
+PASS Request on bad port 101 should throw TypeError. 
+PASS Request on bad port 102 should throw TypeError. 
+PASS Request on bad port 103 should throw TypeError. 
+PASS Request on bad port 104 should throw TypeError. 
+PASS Request on bad port 109 should throw TypeError. 
+PASS Request on bad port 110 should throw TypeError. 
+PASS Request on bad port 111 should throw TypeError. 
+PASS Request on bad port 113 should throw TypeError. 
+PASS Request on bad port 115 should throw TypeError. 
+PASS Request on bad port 117 should throw TypeError. 
+PASS Request on bad port 119 should throw TypeError. 
+PASS Request on bad port 123 should throw TypeError. 
+PASS Request on bad port 135 should throw TypeError. 
+PASS Request on bad port 139 should throw TypeError. 
+PASS Request on bad port 143 should throw TypeError. 
+PASS Request on bad port 179 should throw TypeError. 
+PASS Request on bad port 389 should throw TypeError. 
+PASS Request on bad port 465 should throw TypeError. 
+PASS Request on bad port 512 should throw TypeError. 
+PASS Request on bad port 513 should throw TypeError. 
+PASS Request on bad port 514 should throw TypeError. 
+PASS Request on bad port 515 should throw TypeError. 
+PASS Request on bad port 526 should throw TypeError. 
+PASS Request on bad port 530 should throw TypeError. 
+PASS Request on bad port 531 should throw TypeError. 
+PASS Request on bad port 532 should throw TypeError. 
+PASS Request on bad port 540 should throw TypeError. 
+PASS Request on bad port 556 should throw TypeError. 
+PASS Request on bad port 563 should throw TypeError. 
+PASS Request on bad port 587 should throw TypeError. 
+PASS Request on bad port 601 should throw TypeError. 
+PASS Request on bad port 636 should throw TypeError. 
+PASS Request on bad port 993 should throw TypeError. 
+PASS Request on bad port 995 should throw TypeError. 
+PASS Request on bad port 2049 should throw TypeError. 
+PASS Request on bad port 3659 should throw TypeError. 
+PASS Request on bad port 4045 should throw TypeError. 
+PASS Request on bad port 6000 should throw TypeError. 
+PASS Request on bad port 6665 should throw TypeError. 
+PASS Request on bad port 6666 should throw TypeError. 
+PASS Request on bad port 6667 should throw TypeError. 
+PASS Request on bad port 6668 should throw TypeError. 
+PASS Request on bad port 6669 should throw TypeError. 
+
diff --git a/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-bad-port.html b/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-bad-port.html
new file mode 100644 (file)
index 0000000..e7535cf
--- /dev/null
@@ -0,0 +1,82 @@
+<!doctype html>
+<meta charset="utf-8">
+<title></title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+
+    // list of bad ports according to
+    // https://fetch.spec.whatwg.org/#port-blocking
+    var BLOCKED_PORTS_LIST = [
+        1,    // tcpmux
+        7,    // echo
+        9,    // discard
+        11,   // systat
+        13,   // daytime
+        15,   // netstat
+        17,   // qotd
+        19,   // chargen
+        20,   // ftp-data
+        21,   // ftp
+        22,   // ssh
+        23,   // telnet
+        25,   // smtp
+        37,   // time
+        42,   // name
+        43,   // nicname
+        53,   // domain
+        77,   // priv-rjs
+        79,   // finger
+        87,   // ttylink
+        95,   // supdup
+        101,  // hostriame
+        102,  // iso-tsap
+        103,  // gppitnp
+        104,  // acr-nema
+        109,  // pop2
+        110,  // pop3
+        111,  // sunrpc
+        113,  // auth
+        115,  // sftp
+        117,  // uucp-path
+        119,  // nntp
+        123,  // ntp
+        135,  // loc-srv / epmap
+        139,  // netbios
+        143,  // imap2
+        179,  // bgp
+        389,  // ldap
+        465,  // smtp+ssl
+        512,  // print / exec
+        513,  // login
+        514,  // shell
+        515,  // printer
+        526,  // tempo
+        530,  // courier
+        531,  // chat
+        532,  // netnews
+        540,  // uucp
+        556,  // remotefs
+        563,  // nntp+ssl
+        587,  // smtp
+        601,  // syslog-conn
+        636,  // ldap+ssl
+        993,  // imap+ssl
+        995,  // pop3+ssl
+        2049, // nfs
+        3659, // apple-sasl
+        4045, // lockd
+        6000, // x11
+        6665, // irc (alternate)
+        6666, // irc (alternate)
+        6667, // irc (default)
+        6668, // irc (alternate)
+        6669, // irc (alternate)
+    ];
+
+    BLOCKED_PORTS_LIST.map(function(a){
+       promise_test(function(t){
+            return promise_rejects(t, new TypeError(), fetch("http://example.com:" + a))
+        }, 'Request on bad port ' + a + ' should throw TypeError.');
+    });
+</script>
index 3c5588f..779f2b2 100644 (file)
       enum RequestCredentials { "omit", "same-origin", "include" };
       enum RequestCache { "default", "no-store", "reload", "no-cache", "force-cache", "only-if-cached" };
       enum RequestRedirect { "follow", "error", "manual" };
-      enum ReferrerPolicy { "", "no-referrer", "no-referrer-when-downgrade", "origin-only", "origin-when-cross-origin", "unsafe-url" };
+      enum ReferrerPolicy {
+        "", "no-referrer", "no-referrer-when-downgrade", "origin",
+        "origin-when-cross-origin", "unsafe-url", "same-origin", "strict-origin",
+        "strict-origin-when-cross-origin"
+      };
     </script>
     <script>
       var idlsArray = new IdlArray();
index ed0666a..c0584be 100644 (file)
@@ -17,6 +17,9 @@ PASS Check referrerPolicy init value of no-referrer-when-downgrade and associate
 PASS Check referrerPolicy init value of origin and associated getter 
 PASS Check referrerPolicy init value of origin-when-cross-origin and associated getter 
 PASS Check referrerPolicy init value of unsafe-url and associated getter 
+FAIL Check referrerPolicy init value of same-origin and associated getter Type error
+FAIL Check referrerPolicy init value of strict-origin and associated getter Type error
+FAIL Check referrerPolicy init value of strict-origin-when-cross-origin and associated getter Type error
 PASS Check mode init value of same-origin and associated getter 
 PASS Check mode init value of no-cors and associated getter 
 PASS Check mode init value of cors and associated getter 
index b41f6f0..b69e747 100644 (file)
                                                 "no-referrer-when-downgrade",
                                                 "origin",
                                                 "origin-when-cross-origin",
-                                                "unsafe-url"
+                                                "unsafe-url",
+                                                "same-origin",
+                                                "strict-origin",
+                                                "strict-origin-when-cross-origin"
                                               ],
                               "expectedValues" : ["",
                                                   "no-referrer",
                                                   "no-referrer-when-downgrade",
                                                   "origin",
                                                   "origin-when-cross-origin",
-                                                  "unsafe-url"
+                                                  "unsafe-url",
+                                                  "same-origin",
+                                                  "strict-origin",
+                                                  "strict-origin-when-cross-origin"
                                                   ]
       };
       var modes = {"givenValues" : ["same-origin", "no-cors", "cors"],
index 6dd10d5..67b645a 100644 (file)
@@ -15,6 +15,7 @@ Property values requiring vendor prefixes:
 None
 ------------------------------------------------------------------------
 List of files:
+/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-bad-port.html
 /LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-cache-default-conditional.html
 /LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-cache-default.html
 /LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-cache-force-cache.html
index 1465c56..5184be1 100644 (file)
@@ -45,6 +45,9 @@ def main(request, response):
             url += "&count=" + str(stashed_data['count'])
         headers.append(("Location", url))
 
+    if "redirect_referrerpolicy" in request.GET:
+        headers.append(("Referrer-Policy", request.GET['redirect_referrerpolicy']))
+
     if token:
         request.server.stash.put(request.GET.first("token"), stashed_data)
         if "max_count" in request.GET:
index 4d1ee08..f63372e 100644 (file)
@@ -7,10 +7,9 @@
 <script>
 'use strict';
 
-const current = document.querySelector('#c').contentWindow;
-const relevant = document.querySelector('#r').contentWindow;
-
 window.createRedirectResponse = (...args) => {
+    const current = document.querySelector('#c').contentWindow;
+    const relevant = document.querySelector('#r').contentWindow;
     return current.Response.redirect.call(relevant.Response, ...args);
 };
 
index dce9494..29126f2 100644 (file)
@@ -18,9 +18,9 @@ const loadPromise = new Promise(resolve => {
 
 promise_test(() => {
     return loadPromise.then(() => {
-        const res = frames[0].createRedirectResponse("url");
+        const res = document.querySelector('iframe').contentWindow.createRedirectResponse("url");
 
-        assert_equals(res.headers.get("Location"), new URL("current/url", location.href).href);
+        assert_equals(res.headers.get("Location"), new URL("current/success/url", location.href).href);
     });
 }, "should parse the redirect Location URL relative to the current settings object");
 
index 2680222..e8fdb31 100644 (file)
@@ -37,4 +37,5 @@ FAIL Consume response's body: from fetch to blob assert_equals: Blob body type s
 PASS Consume response's body: from fetch to text 
 PASS Consume response's body: from fetch to arrayBuffer 
 FAIL Consume response's body: from fetch without correct type to formData (error case) assert_throws: function "function () { throw e }" threw "Not implemented" (undefined) expected object "TypeError" ("TypeError")
+FAIL Consume response's body: from multipart form data blob to formData promise_test: Unhandled rejection with value: "Not implemented"
 
index dc72394..24d127f 100644 (file)
   </head>
   <body>
     <script>
+    function blobToFormDataResponse(name, blob) {
+      var formData = new FormData();
+      formData.append(name, blob);
+      return new Response(formData);
+    }
+
+    function readBlobAsArrayBuffer(blob) {
+      return new Promise(function(resolve, reject) {
+        var reader = new FileReader();
+        reader.onload = function(evt) {
+          resolve(reader.result);
+        };
+        reader.onerror = function(evt) {
+          reject("Blob's reader failed");
+        };
+        reader.readAsArrayBuffer(blob);
+      });
+    }
+
     function responsePromise(body, responseInit) {
       return new Promise(function(resolve, reject) {
         resolve(new Response(body, responseInit));
     checkResponseBody(fetch("../resources/top.txt"), "top", checkBodyArrayBuffer, "from fetch to arrayBuffer");
     checkResponseBody(fetch("../resources/top.txt"), "top", checkBodyFormDataError, "from fetch without correct type to formData (error case)");
 
+    promise_test(function(test) {
+      var response = new Response(new Blob([
+        "--boundary\r\n",
+