<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[212202] trunk/LayoutTests</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/212202">212202</a></dd>
<dt>Author</dt> <dd>commit-queue@webkit.org</dd>
<dt>Date</dt> <dd>2017-02-11 21:17:45 -0800 (Sat, 11 Feb 2017)</dd>
</dl>

<h3>Log Message</h3>
<pre>Refresh WPT tests up to 06c6c52e05e05483d3c844168a417ee27a554eb7
https://bugs.webkit.org/show_bug.cgi?id=168175

Patch by Youenn Fablet &lt;youennf@gmail.com&gt; on 2017-02-11
Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

* resources/TestRepositories:
* resources/import-expectations.json:
* resources/resource-files.json:
* web-platform-tests/IndexedDB/OWNERS:
* web-platform-tests/IndexedDB/bindings-inject-key-expected.txt: Added.
* web-platform-tests/IndexedDB/bindings-inject-key.html: Added.
* web-platform-tests/IndexedDB/clone-before-keypath-eval-expected.txt: Added.
* web-platform-tests/IndexedDB/clone-before-keypath-eval.html: Added.
* web-platform-tests/IndexedDB/delete-request-queue-expected.txt: Added.
* web-platform-tests/IndexedDB/delete-request-queue.html: Added.
* web-platform-tests/IndexedDB/error-attributes-expected.txt: Added.
* web-platform-tests/IndexedDB/error-attributes.html: Added.
* web-platform-tests/IndexedDB/idb-binary-key-detached-expected.txt: Added.
* web-platform-tests/IndexedDB/idb-binary-key-detached.htm: Added.
* web-platform-tests/IndexedDB/idb-binary-key-roundtrip-expected.txt: Added.
* web-platform-tests/IndexedDB/idb-binary-key-roundtrip.htm: Added.
* web-platform-tests/IndexedDB/idbcursor-advance-exception-order-expected.txt: Added.
* web-platform-tests/IndexedDB/idbcursor-advance-exception-order.html: Added.
* web-platform-tests/IndexedDB/idbcursor-continue-exception-order-expected.txt: Added.
* web-platform-tests/IndexedDB/idbcursor-continue-exception-order.htm: Added.
* web-platform-tests/IndexedDB/idbcursor-continuePrimaryKey-exceptions-expected.txt: Added.
* web-platform-tests/IndexedDB/idbcursor-continuePrimaryKey-exceptions.htm: Added.
* web-platform-tests/IndexedDB/idbcursor-continuePrimaryKey-expected.txt: Added.
* web-platform-tests/IndexedDB/idbcursor-continuePrimaryKey.htm: Added.
* web-platform-tests/IndexedDB/idbcursor-delete-exception-order-expected.txt: Added.
* web-platform-tests/IndexedDB/idbcursor-delete-exception-order.htm: Added.
* web-platform-tests/IndexedDB/idbcursor-update-exception-order-expected.txt: Added.
* web-platform-tests/IndexedDB/idbcursor-update-exception-order.htm: Added.
* web-platform-tests/IndexedDB/idbdatabase-createObjectStore-exception-order-expected.txt: Added.
* web-platform-tests/IndexedDB/idbdatabase-createObjectStore-exception-order.htm: Added.
* web-platform-tests/IndexedDB/idbdatabase-deleteObjectStore-exception-order-expected.txt: Added.
* web-platform-tests/IndexedDB/idbdatabase-deleteObjectStore-exception-order.htm: Added.
* web-platform-tests/IndexedDB/idbdatabase-transaction-exception-order-expected.txt: Added.
* web-platform-tests/IndexedDB/idbdatabase-transaction-exception-order.html: Added.
* web-platform-tests/IndexedDB/idbindex-getAll-enforcerange-expected.txt: Added.
* web-platform-tests/IndexedDB/idbindex-getAll-enforcerange.html: Added.
* web-platform-tests/IndexedDB/idbindex-getAllKeys-enforcerange-expected.txt: Added.
* web-platform-tests/IndexedDB/idbindex-getAllKeys-enforcerange.html: Added.
* web-platform-tests/IndexedDB/idbindex-query-exception-order-expected.txt: Added.
* web-platform-tests/IndexedDB/idbindex-query-exception-order.html: Added.
* web-platform-tests/IndexedDB/idbkeyrange-includes-expected.txt:
* web-platform-tests/IndexedDB/idbkeyrange-includes.htm:
* web-platform-tests/IndexedDB/idbobjectstore-add-put-exception-order-expected.txt: Added.
* web-platform-tests/IndexedDB/idbobjectstore-add-put-exception-order.html: Added.
* web-platform-tests/IndexedDB/idbobjectstore-clear-exception-order-expected.txt: Added.
* web-platform-tests/IndexedDB/idbobjectstore-clear-exception-order.html: Added.
* web-platform-tests/IndexedDB/idbobjectstore-delete-exception-order-expected.txt: Added.
* web-platform-tests/IndexedDB/idbobjectstore-delete-exception-order.html: Added.
* web-platform-tests/IndexedDB/idbobjectstore-deleteIndex-exception-order-expected.txt: Added.
* web-platform-tests/IndexedDB/idbobjectstore-deleteIndex-exception-order.html: Added.
* web-platform-tests/IndexedDB/idbobjectstore-getAll-enforcerange-expected.txt: Added.
* web-platform-tests/IndexedDB/idbobjectstore-getAll-enforcerange.html: Added.
* web-platform-tests/IndexedDB/idbobjectstore-getAllKeys-enforcerange-expected.txt: Added.
* web-platform-tests/IndexedDB/idbobjectstore-getAllKeys-enforcerange.html: Added.
* web-platform-tests/IndexedDB/idbobjectstore-query-exception-order-expected.txt: Added.
* web-platform-tests/IndexedDB/idbobjectstore-query-exception-order.html: Added.
* web-platform-tests/IndexedDB/idbobjectstore_getKey-expected.txt: Added.
* web-platform-tests/IndexedDB/idbobjectstore_getKey.html: Added.
* web-platform-tests/IndexedDB/idbrequest-onupgradeneeded-expected.txt: Added.
* web-platform-tests/IndexedDB/idbrequest-onupgradeneeded.htm: Added.
* web-platform-tests/IndexedDB/idbtransaction-objectStore-exception-order-expected.txt: Added.
* web-platform-tests/IndexedDB/idbtransaction-objectStore-exception-order.html: Added.
* web-platform-tests/IndexedDB/idbversionchangeevent.htm:
* web-platform-tests/IndexedDB/key-conversion-exceptions-expected.txt: Added.
* web-platform-tests/IndexedDB/key-conversion-exceptions.htm: Added.
* web-platform-tests/IndexedDB/keypath-exceptions-expected.txt: Added.
* web-platform-tests/IndexedDB/keypath-exceptions.htm: Added.
* web-platform-tests/IndexedDB/keypath-special-identifiers-expected.txt: Added.
* web-platform-tests/IndexedDB/keypath-special-identifiers.htm: Added.
* web-platform-tests/IndexedDB/open-request-queue-expected.txt: Added.
* web-platform-tests/IndexedDB/open-request-queue.html: Added.
* web-platform-tests/IndexedDB/support.js:
(auto_fail):
(createdb_for_multiple_tests):
(assert_key_equals):
(indexeddb_test):
* web-platform-tests/IndexedDB/w3c-import.log:
* web-platform-tests/README.md:
* web-platform-tests/XMLHttpRequest/abort-during-done.htm:
* web-platform-tests/XMLHttpRequest/historical-expected.txt: Added.
* web-platform-tests/XMLHttpRequest/historical.html: Added.
* web-platform-tests/XMLHttpRequest/resources/corsenabled.py:
(main):
* web-platform-tests/XMLHttpRequest/response-method-expected.txt:
* web-platform-tests/XMLHttpRequest/responsexml-document-properties-expected.txt:
* web-platform-tests/XMLHttpRequest/send-entity-body-document-expected.txt:
* web-platform-tests/XMLHttpRequest/send-redirect-post-upload-expected.txt:
* web-platform-tests/XMLHttpRequest/send-redirect-to-cors.htm:
* web-platform-tests/XMLHttpRequest/setrequestheader-bogus-value-expected.txt:
* web-platform-tests/XMLHttpRequest/setrequestheader-bogus-value.htm:
* web-platform-tests/XMLHttpRequest/w3c-import.log:
* web-platform-tests/check_stability.py:
(do_delayed_imports):
(setup_logging):
(setup_action_filter.as):
(setup_action_filter.LogActionFilter):
(setup_action_filter.LogActionFilter.__init__):
(setup_action_filter.LogActionFilter.__call__):
(TravisFold):
(TravisFold.__init__):
(TravisFold.__enter__):
(TravisFold.__exit__):
(FilteredIO):
(FilteredIO.__init__):
(FilteredIO.__getattr__):
(FilteredIO.disable):
(FilteredIO.write):
(replace_streams):
(replace_streams.on_write):
(Browser):
(Browser.install):
(Browser.install_webdriver):
(Browser.version):
(Browser.wptrunner_args):
(Firefox):
(Firefox.install):
(Firefox._latest_geckodriver_version):
(Firefox.install_webdriver):
(Firefox.version):
(Firefox.wptrunner_args):
(Chrome):
(Chrome.install):
(Chrome.install_webdriver):
(Chrome.version):
(Chrome.wptrunner_args):
(get):
(call):
(get_git_cmd):
(seekable):
(untar):
(unzip):
(pwd):
(fetch_wpt_master):
(get_sha1):
(build_manifest):
(install_wptrunner):
(get_files_changed):
(get_affected_testfiles):
(wptrunner_args):
(setup_log_handler.as):
(setup_log_handler.LogHandler):
(is_inconsistent):
(err_string):
(process_results):
(format_comment_title):
(markdown_adjust):
(table):
(write_inconsistent):
(write_results):
(get_parser):
(main):
* web-platform-tests/ci_built_diff.sh:
* web-platform-tests/ci_stability.sh:
* web-platform-tests/common/OWNERS:
* web-platform-tests/custom-elements/reactions/DOMTokenList-expected.txt:
* web-platform-tests/custom-elements/reactions/DOMTokenList.html:
* web-platform-tests/dom/events/EventListener-invoke-legacy-expected.txt: Added.
* web-platform-tests/dom/events/EventListener-invoke-legacy.html: Added.
* web-platform-tests/dom/events/w3c-import.log:
* web-platform-tests/dom/lists/DOMTokenList-iteration-expected.txt:
* web-platform-tests/dom/lists/DOMTokenList-iteration.html:
* web-platform-tests/dom/nodes/DOMImplementation-createDocument-expected.txt:
* web-platform-tests/dom/nodes/DOMImplementation-createDocument.html:
* web-platform-tests/dom/nodes/Document-createElementNS-expected.txt:
* web-platform-tests/dom/nodes/Document-createElementNS.html:
* web-platform-tests/dom/nodes/Document-createElementNS.js:
* web-platform-tests/dom/nodes/Node-isSameNode-expected.txt:
* web-platform-tests/dom/nodes/Node-isSameNode.html:
* web-platform-tests/dom/nodes/NodeList-Iterable-expected.txt:
* web-platform-tests/dom/nodes/NodeList-Iterable.html:
* web-platform-tests/dom/ranges/Range-selectNode-expected.txt:
* web-platform-tests/dom/ranges/Range-selectNode.html:
* web-platform-tests/encrypted-media/content/video_512x288_h264-360k_multikey_key1_dashinit.mp4: Added.
* web-platform-tests/fetch/api/cors/cors-preflight.js:
(corsPreflight):
* web-platform-tests/fetch/api/headers/header-values-expected.txt: Added.
* web-platform-tests/fetch/api/headers/header-values-normalize-expected.txt: Added.
* web-platform-tests/fetch/api/headers/header-values-normalize.html: Added.
* web-platform-tests/fetch/api/headers/header-values.html: Added.
* web-platform-tests/fetch/api/headers/w3c-import.log:
* web-platform-tests/fetch/api/policies/referrer-origin-expected.txt:
* web-platform-tests/fetch/api/policies/referrer-origin-worker-expected.txt:
* web-platform-tests/fetch/api/policies/referrer-origin.js:
(promise_test):
* web-platform-tests/fetch/api/request/request-cache-default-conditional-expected.txt:
* web-platform-tests/fetch/api/request/request-cache-default-conditional.html:
* web-platform-tests/fetch/api/request/request-cache-only-if-cached-expected.txt:
* web-platform-tests/fetch/api/request/request-disturbed-expected.txt:
* web-platform-tests/fetch/api/request/request-disturbed.html:
* web-platform-tests/fetch/api/request/request-error-expected.txt:
* web-platform-tests/fetch/api/request/request-error.html:
* web-platform-tests/fetch/api/request/request-idl-expected.txt:
* 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/resources/preflight.py:
(main):
* web-platform-tests/fetch/api/response/response-idl-expected.txt:
* web-platform-tests/fetch/api/response/response-idl.html:
* web-platform-tests/fonts/OWNERS: Added.
* web-platform-tests/fonts/w3c-import.log:
* web-platform-tests/hr-time/idlharness-expected.txt:
* web-platform-tests/hr-time/idlharness.html:
* web-platform-tests/hr-time/w3c-import.log:
* web-platform-tests/hr-time/window-worker-time-origin-expected.txt: Added.
* web-platform-tests/hr-time/window-worker-time-origin.html: Added.
* web-platform-tests/html/OWNERS:
* web-platform-tests/html/browsers/browsing-the-web/history-traversal/browsing_context_name-0.html: Added.
* web-platform-tests/html/browsers/browsing-the-web/history-traversal/browsing_context_name_cross_origin.html:
* web-platform-tests/html/browsers/browsing-the-web/history-traversal/same-url-expected.txt: Added.
* web-platform-tests/html/browsers/browsing-the-web/history-traversal/same-url.html: Added.
* web-platform-tests/html/browsers/browsing-the-web/history-traversal/w3c-import.log:
* web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit-1.html: Added.
* web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit-2.html: Added.
* web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit-expected.txt: Added.
* web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit.html: Added.
* web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment-1.html: Added.
* web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment-2.html: Added.
* web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment-expected.txt: Added.
* web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment.html: Added.
* web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_same_origin-expected.txt:
* web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_same_origin.html:
* web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/w3c-import.log:
* web-platform-tests/html/browsers/browsing-the-web/read-media/pageload-image-expected.txt:
* web-platform-tests/html/browsers/browsing-the-web/read-media/pageload-image.html:
* web-platform-tests/html/browsers/browsing-the-web/read-media/pageload-video.html:
* web-platform-tests/html/browsers/browsing-the-web/scroll-to-fragid/w3c-import.log:
* web-platform-tests/html/browsers/browsing-the-web/unloading-documents/prompt/w3c-import.log:
* web-platform-tests/html/browsers/browsing-the-web/unloading-documents/unload/w3c-import.log:
* web-platform-tests/html/browsers/browsing-the-web/unloading-documents/w3c-import.log:
* web-platform-tests/html/browsers/history/the-location-interface/location-protocol-setter-non-broken-expected.txt:
* web-platform-tests/html/browsers/offline/browser-state/navigator_online_online-expected.txt:
* web-platform-tests/html/browsers/origin/cross-origin-objects/frame.html:
* web-platform-tests/html/browsers/windows/browsing-context-names/w3c-import.log:
* web-platform-tests/html/browsers/windows/nested-browsing-contexts/frameElement.sub-expected.txt:
* web-platform-tests/html/browsers/windows/nested-browsing-contexts/w3c-import.log:
* web-platform-tests/html/browsers/windows/targeting-cross-origin-nested-browsing-contexts.sub-expected.txt:
* web-platform-tests/html/dom/dynamic-markup-insertion/document-write/empty.html: Added.
* web-platform-tests/html/dom/dynamic-markup-insertion/document-write/w3c-import.log:
* web-platform-tests/html/dom/dynamic-markup-insertion/document-write/write-active-document-expected.txt: Added.
* web-platform-tests/html/dom/dynamic-markup-insertion/document-write/write-active-document.html: Added.
* web-platform-tests/html/dom/dynamic-markup-insertion/opening-the-input-stream/010-expected.txt:
* web-platform-tests/html/dom/elements-forms.js:
* web-platform-tests/html/dom/elements-misc.js:
* web-platform-tests/html/dom/interfaces-expected.txt:
* web-platform-tests/html/dom/interfaces.html:
* web-platform-tests/html/dom/reflection-misc-expected.txt:
* web-platform-tests/html/semantics/embedded-content/image-maps/contains.json:
* web-platform-tests/html/semantics/embedded-content/the-area-element/area-download-click-expected.txt: Added.
* web-platform-tests/html/semantics/embedded-content/the-area-element/area-download-click.html: Added.
* web-platform-tests/html/semantics/embedded-content/the-area-element/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/toBlob.jpeg-expected.txt:
* web-platform-tests/html/semantics/embedded-content/the-canvas-element/toBlob.jpeg.html:
* web-platform-tests/html/semantics/embedded-content/the-canvas-element/toBlob.png-expected.txt:
* web-platform-tests/html/semantics/embedded-content/the-canvas-element/toBlob.png.html:
* web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-synchronously-discard-expected.txt: Added.
* web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-synchronously-discard.html: Added.
* web-platform-tests/html/semantics/embedded-content/the-iframe-element/w3c-import.log:
* web-platform-tests/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change-expected.txt:
* web-platform-tests/html/semantics/embedded-content/the-img-element/not-rendered-dimension-getter-expected.txt: Added.
* web-platform-tests/html/semantics/embedded-content/the-img-element/not-rendered-dimension-getter.html: Added.
* web-platform-tests/html/semantics/embedded-content/the-img-element/w3c-import.log:
* web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valid.html:
* 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/form-data-set-usv-expected.txt: Added.
* web-platform-tests/html/semantics/forms/form-submission-0/form-data-set-usv-form.html: Added.
* web-platform-tests/html/semantics/forms/form-submission-0/form-data-set-usv.html: Added.
* web-platform-tests/html/semantics/forms/form-submission-0/form-echo.py: Added.
(main):
* web-platform-tests/html/semantics/forms/form-submission-0/url-encoded-expected.txt:
* web-platform-tests/html/semantics/forms/form-submission-0/w3c-import.log:
* web-platform-tests/html/semantics/forms/resetting-a-form/reset-form-event-realm-expected.txt: Added.
* web-platform-tests/html/semantics/forms/resetting-a-form/reset-form-event-realm-support.html: Added.
* web-platform-tests/html/semantics/forms/resetting-a-form/reset-form-event-realm.html: Added.
* web-platform-tests/html/semantics/forms/resetting-a-form/w3c-import.log:
* web-platform-tests/html/semantics/forms/textfieldselection/selection-not-application-textarea-expected.txt:
* web-platform-tests/html/semantics/forms/textfieldselection/selection-not-application-textarea.html:
* web-platform-tests/html/semantics/forms/textfieldselection/textfieldselection-setSelectionRange-expected.txt:
* web-platform-tests/html/semantics/forms/textfieldselection/textfieldselection-setSelectionRange.html:
* web-platform-tests/html/semantics/forms/the-button-element/button-menu-historical-expected.txt: Added.
* web-platform-tests/html/semantics/forms/the-button-element/button-menu-historical.html: Added.
* web-platform-tests/html/semantics/forms/the-button-element/w3c-import.log:
* web-platform-tests/html/semantics/forms/the-fieldset-element/disabled-001.html:
* web-platform-tests/html/semantics/forms/the-input-element/date-expected.txt:
* web-platform-tests/html/semantics/forms/the-input-element/date.html:
* web-platform-tests/html/semantics/forms/the-input-element/datetime-expected.txt:
* web-platform-tests/html/semantics/forms/the-input-element/datetime.html:
* web-platform-tests/html/semantics/forms/the-input-element/number-expected.txt:
* web-platform-tests/html/semantics/forms/the-input-element/number.html:
* web-platform-tests/html/semantics/forms/the-input-element/range-expected.txt:
* web-platform-tests/html/semantics/forms/the-input-element/range.html:
* web-platform-tests/html/semantics/forms/the-input-element/selection-expected.txt:
* web-platform-tests/html/semantics/forms/the-input-element/selection.html:
* web-platform-tests/html/semantics/forms/the-input-element/time-2-expected.txt:
* web-platform-tests/html/semantics/forms/the-input-element/time-2.html:
* web-platform-tests/html/semantics/forms/the-input-element/time-expected.txt:
* web-platform-tests/html/semantics/forms/the-input-element/time.html:
* web-platform-tests/html/semantics/forms/the-input-element/week-expected.txt:
* web-platform-tests/html/semantics/forms/the-input-element/week.html:
* web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-list-owner-menu-expected.html: Added.
* web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-list-owner-menu.html: Added.
* web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-list-owner-skip-no-boxes-expected.html: Added.
* web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-list-owner-skip-no-boxes.html: Added.
* web-platform-tests/html/semantics/grouping-content/the-li-element/w3c-import.log:
* web-platform-tests/html/semantics/links/linktypes/alternate-import.css: Added.
(body):
* web-platform-tests/html/semantics/links/linktypes/alternate.css:
(@import url(&quot;alternate-import.css&quot;);):
* web-platform-tests/html/semantics/links/linktypes/w3c-import.log:
* web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-reflect-expected.txt: Added.
* web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-reflect.html: Added.
* web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-async-classic-script-expected.txt: Added.
* web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-async-classic-script.html: Added.
* web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-external-module-script-expected.txt: Added.
* web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-external-module-script.html: Added.
* web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-inline-classic-scripts-expected.txt: Added.
* web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-inline-classic-scripts.html: Added.
* web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-inline-module-script-expected.txt: Added.
* web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-inline-module-script.html: Added.
* web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-synchronously-loaded-classic-scripts-expected.txt: Added.
* web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-synchronously-loaded-classic-scripts.html: Added.
* web-platform-tests/html/semantics/scripting-1/the-script-element/resources/cocoa-module.js: Added.
(export.default.Cocoa.prototype.taste):
(export.default.Cocoa):
* web-platform-tests/html/semantics/scripting-1/the-script-element/resources/exports-cocoa.js: Added.
* web-platform-tests/html/semantics/scripting-1/the-script-element/resources/set-script-executed.js: Added.
* web-platform-tests/html/semantics/scripting-1/the-script-element/resources/w3c-import.log:
* web-platform-tests/html/semantics/scripting-1/the-script-element/w3c-import.log:
* web-platform-tests/html/semantics/tabular-data/the-table-element/caption-methods-expected.txt:
* web-platform-tests/html/semantics/tabular-data/the-table-element/caption-methods.html:
* web-platform-tests/html/semantics/text-level-semantics/the-a-element/a-download-click-expected.txt: Added.
* web-platform-tests/html/semantics/text-level-semantics/the-a-element/a-download-click.html: Added.
* web-platform-tests/html/semantics/text-level-semantics/the-a-element/w3c-import.log:
* web-platform-tests/html/syntax/OWNERS: Added.
* web-platform-tests/html/syntax/w3c-import.log:
* web-platform-tests/html/webappapis/scripting/events/body-exposed-window-event-handlers-expected.txt: Added.
* web-platform-tests/html/webappapis/scripting/events/body-exposed-window-event-handlers.html: Added.
* web-platform-tests/html/webappapis/scripting/events/eventhandler-cancellation-expected.txt: Added.
* web-platform-tests/html/webappapis/scripting/events/eventhandler-cancellation.html: Added.
* web-platform-tests/html/webappapis/scripting/events/w3c-import.log:
* web-platform-tests/images/OWNERS:
* web-platform-tests/lint.whitelist:
* web-platform-tests/media-source/mediasource-duration-expected.txt:
* web-platform-tests/resource-timing/resource-timing-expected.txt:
* web-platform-tests/shadow-dom/HTMLSlotElement-interface-expected.txt:
* web-platform-tests/shadow-dom/HTMLSlotElement-interface.html:
* web-platform-tests/shadow-dom/event-inside-slotted-node-expected.txt:
* web-platform-tests/shadow-dom/event-inside-slotted-node.html:
* web-platform-tests/shadow-dom/event-with-related-target-expected.txt:
* web-platform-tests/shadow-dom/event-with-related-target.html:
* web-platform-tests/streams/OWNERS:
* web-platform-tests/streams/README.md: Added.
* web-platform-tests/streams/byte-length-queuing-strategy-expected.txt:
* web-platform-tests/streams/byte-length-queuing-strategy.dedicatedworker-expected.txt: Added.
* web-platform-tests/streams/byte-length-queuing-strategy.dedicatedworker.html: Added.
* web-platform-tests/streams/byte-length-queuing-strategy.html: Added.
* web-platform-tests/streams/byte-length-queuing-strategy.https-expected.txt: Removed.
* web-platform-tests/streams/byte-length-queuing-strategy.serviceworker.https-expected.txt: Added.
* web-platform-tests/streams/byte-length-queuing-strategy.serviceworker.https.html: Copied from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.https.html.
* web-platform-tests/streams/byte-length-queuing-strategy.sharedworker-expected.txt: Added.
* web-platform-tests/streams/byte-length-queuing-strategy.sharedworker.html: Added.
* web-platform-tests/streams/count-queuing-strategy-expected.txt:
* web-platform-tests/streams/count-queuing-strategy.dedicatedworker-expected.txt: Added.
* web-platform-tests/streams/count-queuing-strategy.dedicatedworker.html: Added.
* web-platform-tests/streams/count-queuing-strategy.html: Added.
* web-platform-tests/streams/count-queuing-strategy.https-expected.txt: Removed.
* web-platform-tests/streams/count-queuing-strategy.serviceworker.https-expected.txt: Added.
* web-platform-tests/streams/count-queuing-strategy.serviceworker.https.html: Copied from LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.https.html.
* web-platform-tests/streams/count-queuing-strategy.sharedworker-expected.txt: Added.
* web-platform-tests/streams/count-queuing-strategy.sharedworker.html: Added.
* web-platform-tests/streams/generate-test-wrappers.js: Added.
(const.arg.of.process.argv.slice):
(generateWrapper):
* web-platform-tests/streams/piping/close-propagation-backward-expected.txt: Added.
* web-platform-tests/streams/piping/close-propagation-backward.dedicatedworker-expected.txt: Added.
* web-platform-tests/streams/piping/close-propagation-backward.dedicatedworker.html: Added.
* web-platform-tests/streams/piping/close-propagation-backward.html: Added.
* web-platform-tests/streams/piping/close-propagation-backward.js: Added.
(promise_test):
(promise_test.t.const.rs.recordingReadableStream.cancel):
(promise_test.t.string_appeared_here.then):
(string_appeared_here.promise_test):
(Symbol):
(promise_test.t.then):
* web-platform-tests/streams/piping/close-propagation-backward.serviceworker.https-expected.txt: Added.
* web-platform-tests/streams/piping/close-propagation-backward.serviceworker.https.html: Copied from LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.https.html.
* web-platform-tests/streams/piping/close-propagation-backward.sharedworker-expected.txt: Added.
* web-platform-tests/streams/piping/close-propagation-backward.sharedworker.html: Added.
* web-platform-tests/streams/piping/close-propagation-forward-expected.txt: Added.
* web-platform-tests/streams/piping/close-propagation-forward.dedicatedworker-expected.txt: Added.
* web-platform-tests/streams/piping/close-propagation-forward.dedicatedworker.html: Added.
* web-platform-tests/streams/piping/close-propagation-forward.html: Added.
* web-platform-tests/streams/piping/close-propagation-forward.js: Added.
(promise_test):
(promise_test.t.const.rs.recordingReadableStream.start):
(promise_test.t.const.ws.recordingWritableStream.close):
(promise_test.t.string_appeared_here.then):
(string_appeared_here.promise_test):
(Symbol):
(promise_test.t.return.pipePromise.then):
(promise_test.t.setTimeout):
* web-platform-tests/streams/piping/close-propagation-forward.serviceworker.https-expected.txt: Added.
* web-platform-tests/streams/piping/close-propagation-forward.serviceworker.https.html: Copied from LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.https.html.
* web-platform-tests/streams/piping/close-propagation-forward.sharedworker-expected.txt: Added.
* web-platform-tests/streams/piping/close-propagation-forward.sharedworker.html: Added.
* web-platform-tests/streams/piping/error-propagation-backward-expected.txt: Added.
* web-platform-tests/streams/piping/error-propagation-backward.dedicatedworker-expected.txt: Added.
* web-platform-tests/streams/piping/error-propagation-backward.dedicatedworker.html: Added.
* web-platform-tests/streams/piping/error-propagation-backward.html: Added.
* web-platform-tests/streams/piping/error-propagation-backward.js: Added.
(promise_test.t.const.ws.recordingWritableStream.start):
(promise_test.t.string_appeared_here.then):
(promise_test.t.const.ws.recordingWritableStream.write):
(promise_test.t.const.rs.recordingReadableStream.cancel):
(string_appeared_here.promise_test.t.const.ws.recordingWritableStream.write):
(string_appeared_here.promise_test.t.string_appeared_here.then):
(Symbol):
(promise_test.t.const.rs.recordingReadableStream.start):
(promise_test.t.return.pipePromise.then):
(promise_test):
(promise_test.t.then):
(promise_test.t.return.writeCalledPromise.then):
* web-platform-tests/streams/piping/error-propagation-backward.serviceworker.https-expected.txt: Added.
* web-platform-tests/streams/piping/error-propagation-backward.serviceworker.https.html: Copied from LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.https.html.
* web-platform-tests/streams/piping/error-propagation-backward.sharedworker-expected.txt: Added.
* web-platform-tests/streams/piping/error-propagation-backward.sharedworker.html: Added.
* web-platform-tests/streams/piping/error-propagation-forward-expected.txt: Added.
* web-platform-tests/streams/piping/error-propagation-forward.dedicatedworker-expected.txt: Added.
* web-platform-tests/streams/piping/error-propagation-forward.dedicatedworker.html: Added.
* web-platform-tests/streams/piping/error-propagation-forward.html: Added.
* web-platform-tests/streams/piping/error-propagation-forward.js: Added.
(promise_test.t.const.rs.recordingReadableStream.start):
(promise_test.t.string_appeared_here.then):
(promise_test.t.const.ws.recordingWritableStream.abort):
(string_appeared_here.promise_test.t.const.rs.recordingReadableStream.start):
(string_appeared_here.promise_test.t.string_appeared_here.then):
(Symbol):
(promise_test.t.return.pipePromise.then):
(promise_test.t.setTimeout):
(promise_test.t.const.ws.recordingWritableStream.write):
(promise_test.t.rs.pipeTo.ws.then):
(promise_test.t.return.writeCalledPromise.then):
(promise_test.t.then):
* web-platform-tests/streams/piping/error-propagation-forward.serviceworker.https-expected.txt: Added.
* web-platform-tests/streams/piping/error-propagation-forward.serviceworker.https.html: Copied from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.https.html.
* web-platform-tests/streams/piping/error-propagation-forward.sharedworker-expected.txt: Added.
* web-platform-tests/streams/piping/error-propagation-forward.sharedworker.html: Added.
* web-platform-tests/streams/piping/flow-control-expected.txt: Added.
* web-platform-tests/streams/piping/flow-control.dedicatedworker-expected.txt: Added.
* web-platform-tests/streams/piping/flow-control.dedicatedworker.html: Added.
* web-platform-tests/streams/piping/flow-control.html: Copied from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel.https.html.
* web-platform-tests/streams/piping/flow-control.js: Added.
(promise_test.t.const.rs.recordingReadableStream.start):
(promise_test.t.return.flushAsyncEvents.then):
(promise_test.t.string_appeared_here.then):
(promise_test):
(promise_test.const.rs.recordingReadableStream.):
* web-platform-tests/streams/piping/flow-control.serviceworker.https-expected.txt: Added.
* web-platform-tests/streams/piping/flow-control.serviceworker.https.html: Copied from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.https.html.
* web-platform-tests/streams/piping/flow-control.sharedworker-expected.txt: Added.
* web-platform-tests/streams/piping/flow-control.sharedworker.html: Added.
* web-platform-tests/streams/piping/general-expected.txt: Added.
* web-platform-tests/streams/piping/general.dedicatedworker-expected.txt: Added.
* web-platform-tests/streams/piping/general.dedicatedworker.html: Added.
* web-platform-tests/streams/piping/general.html: Added.
* web-platform-tests/streams/piping/general.js: Added.
(test):
(promise_test):
(promise_test.t.rs.pipeTo.ws.then):
(false.promise_test.t.const.rs.new.ReadableStream.pull):
(false.promise_test.t.return.rs.pipeTo.new.WritableStream):
(false.promise_test.t.const.ws.new.WritableStream.write):
* web-platform-tests/streams/piping/general.serviceworker.https-expected.txt: Added.
* web-platform-tests/streams/piping/general.serviceworker.https.html: Copied from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.https.html.
* web-platform-tests/streams/piping/general.sharedworker-expected.txt: Added.
* web-platform-tests/streams/piping/general.sharedworker.html: Added.
* web-platform-tests/streams/piping/multiple-propagation-expected.txt: Added.
* web-platform-tests/streams/piping/multiple-propagation.dedicatedworker-expected.txt: Added.
* web-platform-tests/streams/piping/multiple-propagation.dedicatedworker.html: Added.
* web-platform-tests/streams/piping/multiple-propagation.html: Added.
* web-platform-tests/streams/piping/multiple-propagation.js: Added.
(promise_test.t.const.rs.recordingReadableStream.start):
(promise_test.t.const.ws.recordingWritableStream.start):
(promise_test.t.string_appeared_here.then):
(promise_test):
* web-platform-tests/streams/piping/multiple-propagation.serviceworker.https-expected.txt: Added.
* web-platform-tests/streams/piping/multiple-propagation.serviceworker.https.html: Copied from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.https.html.
* web-platform-tests/streams/piping/multiple-propagation.sharedworker-expected.txt: Added.
* web-platform-tests/streams/piping/multiple-propagation.sharedworker.html: Added.
* web-platform-tests/streams/piping/pipe-through-expected.txt: Added.
* web-platform-tests/streams/piping/pipe-through.dedicatedworker-expected.txt: Added.
* web-platform-tests/streams/piping/pipe-through.dedicatedworker.html: Added.
* web-platform-tests/streams/piping/pipe-through.html: Copied from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/pipe-through.https.html.
* web-platform-tests/streams/piping/pipe-through.js: Added.
(duckTypedPassThroughTransform):
(promise_test):
(promise_test.t.const.transform.writable.new.WritableStream.start):
(test):
* web-platform-tests/streams/piping/pipe-through.serviceworker.https-expected.txt: Added.
* web-platform-tests/streams/piping/pipe-through.serviceworker.https.html: Copied from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.https.html.
* web-platform-tests/streams/piping/pipe-through.sharedworker-expected.txt: Added.
* web-platform-tests/streams/piping/pipe-through.sharedworker.html: Added.
* web-platform-tests/streams/piping/transform-streams-expected.txt: Added.
* web-platform-tests/streams/piping/transform-streams.dedicatedworker-expected.txt: Added.
* web-platform-tests/streams/piping/transform-streams.dedicatedworker.html: Added.
* web-platform-tests/streams/piping/transform-streams.html: Added.
* web-platform-tests/streams/piping/transform-streams.js: Added.
(promise_test):
* web-platform-tests/streams/piping/transform-streams.serviceworker.https-expected.txt: Added.
* web-platform-tests/streams/piping/transform-streams.serviceworker.https.html: Copied from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.https.html.
* web-platform-tests/streams/piping/transform-streams.sharedworker-expected.txt: Added.
* web-platform-tests/streams/piping/transform-streams.sharedworker.html: Added.
* web-platform-tests/streams/piping/w3c-import.log: Added.
* web-platform-tests/streams/readable-byte-streams/general-expected.txt: Added.
* web-platform-tests/streams/readable-byte-streams/general.dedicatedworker-expected.txt: Added.
* web-platform-tests/streams/readable-byte-streams/general.dedicatedworker.html: Added.
* web-platform-tests/streams/readable-byte-streams/general.html: Added.
* web-platform-tests/streams/readable-byte-streams/general.js: Added.
(test):
(promise_test):
(promise_test.t.const.stream.new.ReadableStream.start):
(promise_test.t.return.reader.closed.then):
(promise_test.t.string_appeared_here.then):
(extractViewInfo):
(promise_test.t.const.stream.new.ReadableStream.cancel):
(promise_test.t.pump):
(promise_test.t.const.stream.new.ReadableStream.pull):
* web-platform-tests/streams/readable-byte-streams/general.serviceworker.https-expected.txt: Added.
* web-platform-tests/streams/readable-byte-streams/general.serviceworker.https.html: Copied from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.https.html.
* web-platform-tests/streams/readable-byte-streams/general.sharedworker-expected.txt: Added.
* web-platform-tests/streams/readable-byte-streams/general.sharedworker.html: Added.
* web-platform-tests/streams/readable-byte-streams/w3c-import.log: Copied from LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-area-element/w3c-import.log.
* web-platform-tests/streams/readable-streams/bad-strategies-expected.txt:
* web-platform-tests/streams/readable-streams/bad-strategies.dedicatedworker-expected.txt: Added.
* web-platform-tests/streams/readable-streams/bad-strategies.dedicatedworker.html: Added.
* web-platform-tests/streams/readable-streams/bad-strategies.html: Added.
* web-platform-tests/streams/readable-streams/bad-strategies.https-expected.txt: Removed.
* web-platform-tests/streams/readable-streams/bad-strategies.serviceworker.https-expected.txt: Added.
* web-platform-tests/streams/readable-streams/bad-strategies.serviceworker.https.html: Copied from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.https.html.
* web-platform-tests/streams/readable-streams/bad-strategies.sharedworker-expected.txt: Added.
* web-platform-tests/streams/readable-streams/bad-strategies.sharedworker.html: Added.
* web-platform-tests/streams/readable-streams/bad-underlying-sources-expected.txt:
* web-platform-tests/streams/readable-streams/bad-underlying-sources.dedicatedworker-expected.txt: Added.
* web-platform-tests/streams/readable-streams/bad-underlying-sources.dedicatedworker.html: Added.
* web-platform-tests/streams/readable-streams/bad-underlying-sources.html: Added.
* web-platform-tests/streams/readable-streams/bad-underlying-sources.https-expected.txt: Removed.
* web-platform-tests/streams/readable-streams/bad-underlying-sources.js:
(promise_test.t.const.rs.new.ReadableStream.pull):
(promise_test.t.return.Promise.resolve.then):
* web-platform-tests/streams/readable-streams/bad-underlying-sources.serviceworker.https-expected.txt: Added.
* web-platform-tests/streams/readable-streams/bad-underlying-sources.serviceworker.https.html: Copied from LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.https.html.
* web-platform-tests/streams/readable-streams/bad-underlying-sources.sharedworker-expected.txt: Added.
* web-platform-tests/streams/readable-streams/bad-underlying-sources.sharedworker.html: Added.
* web-platform-tests/streams/readable-streams/brand-checks-expected.txt:
* web-platform-tests/streams/readable-streams/brand-checks.dedicatedworker-expected.txt: Added.
* web-platform-tests/streams/readable-streams/brand-checks.dedicatedworker.html: Added.
* web-platform-tests/streams/readable-streams/brand-checks.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/brand-checks.https.html.
* web-platform-tests/streams/readable-streams/brand-checks.https-expected.txt: Removed.
* web-platform-tests/streams/readable-streams/brand-checks.serviceworker.https-expected.txt: Added.
* web-platform-tests/streams/readable-streams/brand-checks.serviceworker.https.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader.https.html.
* web-platform-tests/streams/readable-streams/brand-checks.sharedworker-expected.txt: Added.
* web-platform-tests/streams/readable-streams/brand-checks.sharedworker.html: Added.
* web-platform-tests/streams/readable-streams/cancel-expected.txt:
* web-platform-tests/streams/readable-streams/cancel.dedicatedworker-expected.txt: Added.
* web-platform-tests/streams/readable-streams/cancel.dedicatedworker.html: Added.
* web-platform-tests/streams/readable-streams/cancel.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel.https.html.
* web-platform-tests/streams/readable-streams/cancel.https-expected.txt: Removed.
* web-platform-tests/streams/readable-streams/cancel.serviceworker.https-expected.txt: Added.
* web-platform-tests/streams/readable-streams/cancel.serviceworker.https.html: Copied from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.https.html.
* web-platform-tests/streams/readable-streams/cancel.sharedworker-expected.txt: Added.
* web-platform-tests/streams/readable-streams/cancel.sharedworker.html: Added.
* web-platform-tests/streams/readable-streams/count-queuing-strategy-integration-expected.txt:
* web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.dedicatedworker-expected.txt: Added.
* web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.dedicatedworker.html: Added.
* web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.html: Added.
* web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.https-expected.txt: Removed.
* web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.https.html: Removed.
* web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.serviceworker.https-expected.txt: Added.
* web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.serviceworker.https.html: Copied from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.https.html.
* web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.sharedworker-expected.txt: Added.
* web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.sharedworker.html: Added.
* web-platform-tests/streams/readable-streams/garbage-collection-expected.txt:
* web-platform-tests/streams/readable-streams/garbage-collection.dedicatedworker-expected.txt: Added.
* web-platform-tests/streams/readable-streams/garbage-collection.dedicatedworker.html: Added.
* web-platform-tests/streams/readable-streams/garbage-collection.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/garbage-collection.https.html.
* web-platform-tests/streams/readable-streams/garbage-collection.https-expected.txt: Removed.
* web-platform-tests/streams/readable-streams/garbage-collection.serviceworker.https-expected.txt: Added.
* web-platform-tests/streams/readable-streams/garbage-collection.serviceworker.https.html: Copied from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.https.html.
* web-platform-tests/streams/readable-streams/garbage-collection.sharedworker-expected.txt: Added.
* web-platform-tests/streams/readable-streams/garbage-collection.sharedworker.html: Added.
* web-platform-tests/streams/readable-streams/general-expected.txt:
* web-platform-tests/streams/readable-streams/general.dedicatedworker-expected.txt: Added.
* web-platform-tests/streams/readable-streams/general.dedicatedworker.html: Added.
* web-platform-tests/streams/readable-streams/general.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.https.html.
* web-platform-tests/streams/readable-streams/general.https-expected.txt: Removed.
* web-platform-tests/streams/readable-streams/general.serviceworker.https-expected.txt: Added.
* web-platform-tests/streams/readable-streams/general.serviceworker.https.html: Copied from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.https.html.
* web-platform-tests/streams/readable-streams/general.sharedworker-expected.txt: Added.
* web-platform-tests/streams/readable-streams/general.sharedworker.html: Added.
* web-platform-tests/streams/readable-streams/pipe-through-expected.txt:
* web-platform-tests/streams/readable-streams/pipe-through.dedicatedworker-expected.txt: Added.
* web-platform-tests/streams/readable-streams/pipe-through.dedicatedworker.html: Added.
* web-platform-tests/streams/readable-streams/pipe-through.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/pipe-through.https.html.
* web-platform-tests/streams/readable-streams/pipe-through.https-expected.txt: Removed.
* web-platform-tests/streams/readable-streams/pipe-through.serviceworker.https-expected.txt: Added.
* web-platform-tests/streams/readable-streams/pipe-through.serviceworker.https.html: Copied from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.https.html.
* web-platform-tests/streams/readable-streams/pipe-through.sharedworker-expected.txt: Added.
* web-platform-tests/streams/readable-streams/pipe-through.sharedworker.html: Added.
* web-platform-tests/streams/readable-streams/readable-stream-reader-expected.txt:
* web-platform-tests/streams/readable-streams/readable-stream-reader.dedicatedworker-expected.txt: Added.
* web-platform-tests/streams/readable-streams/readable-stream-reader.dedicatedworker.html: Added.
* web-platform-tests/streams/readable-streams/readable-stream-reader.html: Added.
* web-platform-tests/streams/readable-streams/readable-stream-reader.https-expected.txt: Removed.
* web-platform-tests/streams/readable-streams/readable-stream-reader.serviceworker.https-expected.txt: Added.
* web-platform-tests/streams/readable-streams/readable-stream-reader.serviceworker.https.html: Copied from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.https.html.
* web-platform-tests/streams/readable-streams/readable-stream-reader.sharedworker-expected.txt: Added.
* web-platform-tests/streams/readable-streams/readable-stream-reader.sharedworker.html: Added.
* web-platform-tests/streams/readable-streams/tee-expected.txt:
* web-platform-tests/streams/readable-streams/tee.dedicatedworker-expected.txt: Added.
* web-platform-tests/streams/readable-streams/tee.dedicatedworker.html: Added.
* web-platform-tests/streams/readable-streams/tee.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/tee.https.html.
* web-platform-tests/streams/readable-streams/tee.https-expected.txt: Removed.
* web-platform-tests/streams/readable-streams/tee.serviceworker.https-expected.txt: Added.
* web-platform-tests/streams/readable-streams/tee.serviceworker.https.html: Copied from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.https.html.
* web-platform-tests/streams/readable-streams/tee.sharedworker-expected.txt: Added.
* web-platform-tests/streams/readable-streams/tee.sharedworker.html: Added.
* web-platform-tests/streams/readable-streams/templated-expected.txt:
* web-platform-tests/streams/readable-streams/templated.dedicatedworker-expected.txt: Added.
* web-platform-tests/streams/readable-streams/templated.dedicatedworker.html: Added.
* web-platform-tests/streams/readable-streams/templated.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/templated.https.html.
* web-platform-tests/streams/readable-streams/templated.https-expected.txt: Removed.
* web-platform-tests/streams/readable-streams/templated.serviceworker.https-expected.txt: Added.
* web-platform-tests/streams/readable-streams/templated.serviceworker.https.html: Copied from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.https.html.
* web-platform-tests/streams/readable-streams/templated.sharedworker-expected.txt: Added.
* web-platform-tests/streams/readable-streams/templated.sharedworker.html: Added.
* web-platform-tests/streams/readable-streams/w3c-import.log:
* web-platform-tests/streams/resources/recording-streams.js: Added.
(self.recordingReadableStream):
(self.recordingWritableStream):
* web-platform-tests/streams/resources/rs-test-templates.js:
(self.templatedRSEmpty):
(self.templatedRSClosed):
(self.templatedRSErrored):
(self.templatedRSErroredSyncOnly):
(self.templatedRSEmptyReader):
(self.templatedRSClosedReader):
(self.templatedRSErroredReader):
(self.templatedRSTwoChunksOpenReader):
(self.templatedRSTwoChunksClosedReader):
* web-platform-tests/streams/resources/test-initializer.js: Removed.
* web-platform-tests/streams/resources/test-utils.js:
(self.methodRejects):
* web-platform-tests/streams/resources/w3c-import.log:
* web-platform-tests/streams/w3c-import.log:
* web-platform-tests/test_keys_wdspec.html: Added.
* web-platform-tests/url/a-element-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/interfaces-expected.txt:
* web-platform-tests/url/setters_tests.json:
* web-platform-tests/url/url-constructor-expected.txt:
* web-platform-tests/url/url-setters-expected.txt:
* web-platform-tests/url/url-tojson-expected.txt:
* web-platform-tests/url/urltestdata.json:
* web-platform-tests/url/w3c-import.log:
* web-platform-tests/user-timing/resources/webperftestharness.js:
(has_required_interfaces):
* web-platform-tests/user-timing/test_user_timing_clear_marks.html:
* web-platform-tests/user-timing/test_user_timing_clear_measures.html:
* web-platform-tests/user-timing/test_user_timing_mark.html:
* web-platform-tests/user-timing/test_user_timing_mark_exceptions.html:
* web-platform-tests/user-timing/test_user_timing_measure.html:
* web-platform-tests/user-timing/test_user_timing_measure_exceptions.html:
* web-platform-tests/user-timing/test_user_timing_measure_navigation_timing-expected.txt:
* web-platform-tests/user-timing/test_user_timing_measure_navigation_timing.html:
* web-platform-tests/w3c-import.log:
* web-platform-tests/webrtc/datachannel-emptystring-expected.txt:
* web-platform-tests/webrtc/no-media-call-expected.txt:
* web-platform-tests/webrtc/promises-call-expected.txt:

LayoutTests:

* TestExpectations: Marking some tests as failing/skipping.
* tests-options.json:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsTestExpectations">trunk/LayoutTests/TestExpectations</a></li>
<li><a href="#trunkLayoutTestsimportedw3cChangeLog">trunk/LayoutTests/imported/w3c/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsimportedw3cresourcesTestRepositories">trunk/LayoutTests/imported/w3c/resources/TestRepositories</a></li>
<li><a href="#trunkLayoutTestsimportedw3cresourcesimportexpectationsjson">trunk/LayoutTests/imported/w3c/resources/import-expectations.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cresourcesresourcefilesjson">trunk/LayoutTests/imported/w3c/resources/resource-files.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBOWNERS">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/OWNERS</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbkeyrangeincludesexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbkeyrange-includes-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbkeyrangeincludeshtm">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbkeyrange-includes.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbversionchangeeventhtm">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbversionchangeevent.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBsupportjs">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/support.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsREADMEmd">trunk/LayoutTests/imported/w3c/web-platform-tests/README.md</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsXMLHttpRequestabortduringdonehtm">trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/abort-during-done.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsXMLHttpRequestresourcescorsenabledpy">trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/resources/corsenabled.py</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsXMLHttpRequestresponsexmldocumentpropertiesexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/responsexml-document-properties-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsXMLHttpRequestsendentitybodydocumentexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-entity-body-document-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsXMLHttpRequestsendredirectpostuploadexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-redirect-post-upload-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsXMLHttpRequestsendredirecttocorshtm">trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-redirect-to-cors.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsXMLHttpRequestsetrequestheaderbogusvalueexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/setrequestheader-bogus-value-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsXMLHttpRequestsetrequestheaderbogusvaluehtm">trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/setrequestheader-bogus-value.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsXMLHttpRequestw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscheck_stabilitypy">trunk/LayoutTests/imported/w3c/web-platform-tests/check_stability.py</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsci_built_diffsh">trunk/LayoutTests/imported/w3c/web-platform-tests/ci_built_diff.sh</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsci_stabilitysh">trunk/LayoutTests/imported/w3c/web-platform-tests/ci_stability.sh</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscommonOWNERS">trunk/LayoutTests/imported/w3c/web-platform-tests/common/OWNERS</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscustomelementsreactionsDOMTokenListexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/custom-elements/reactions/DOMTokenList-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscustomelementsreactionsDOMTokenListhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/custom-elements/reactions/DOMTokenList.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomeventsw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomlistsDOMTokenListiterationexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/lists/DOMTokenList-iteration-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomlistsDOMTokenListiterationhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/lists/DOMTokenList-iteration.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDOMImplementationcreateDocumentexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DOMImplementation-createDocument-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDOMImplementationcreateDocumenthtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DOMImplementation-createDocument.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateElementNSexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createElementNS-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateElementNShtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createElementNS.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateElementNSjs">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createElementNS.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodeisSameNodeexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isSameNode-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodeisSameNodehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isSameNode.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodeListIterableexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/NodeList-Iterable-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodeListIterablehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/NodeList-Iterable.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangeselectNodeexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-selectNode-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangeselectNodehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-selectNode.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightjs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapiheadersw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapipoliciesreferreroriginexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/policies/referrer-origin-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapipoliciesreferreroriginworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/policies/referrer-origin-worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapipoliciesreferreroriginjs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/policies/referrer-origin.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapirequestrequestcachedefaultconditionalexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-cache-default-conditional-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapirequestrequestcachedefaultconditionalhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-cache-default-conditional.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapirequestrequestcacheonlyifcachedexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-cache-only-if-cached-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapirequestrequestdisturbedexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-disturbed-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapirequestrequestdisturbedhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-disturbed.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapirequestrequesterrorexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-error-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapirequestrequesterrorhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-error.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapirequestrequestidlexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-idl-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapirequestrequestidlhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-idl.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapirequestrequestinit001subexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-init-001.sub-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapirequestrequestinit001subhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-init-001.sub.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapiresourcespreflightpy">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/resources/preflight.py</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapiresponseresponseidlexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/response/response-idl-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapiresponseresponseidlhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/response/response-idl.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfontsw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/fonts/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshrtimeidlharnessexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/idlharness-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshrtimeidlharnesshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/idlharness.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshrtimew3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlOWNERS">trunk/LayoutTests/imported/w3c/web-platform-tests/html/OWNERS</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersbrowsingthewebhistorytraversalbrowsing_context_name_cross_originhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/history-traversal/browsing_context_name_cross_origin.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersbrowsingthewebhistorytraversalw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/history-traversal/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersbrowsingthewebnavigatingacrossdocumentsnavigation_unload_same_originexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_same_origin-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersbrowsingthewebnavigatingacrossdocumentsnavigation_unload_same_originhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_same_origin.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersbrowsingthewebnavigatingacrossdocumentsw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersbrowsingthewebreadmediapageloadimageexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/read-media/pageload-image-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersbrowsingthewebreadmediapageloadimagehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/read-media/pageload-image.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersbrowsingthewebreadmediapageloadvideohtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/read-media/pageload-video.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersbrowsingthewebscrolltofragidw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/scroll-to-fragid/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersbrowsingthewebunloadingdocumentspromptw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/prompt/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersbrowsingthewebunloadingdocumentsunloadw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/unload/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersbrowsingthewebunloadingdocumentsw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsershistorythelocationinterfacelocationprotocolsetternonbrokenexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/location-protocol-setter-non-broken-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersofflinebrowserstatenavigator_online_onlineexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/offline/browser-state/navigator_online_online-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersorigincrossoriginobjectsframehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/origin/cross-origin-objects/frame.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnamesw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsnestedbrowsingcontextsframeElementsubexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/nested-browsing-contexts/frameElement.sub-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsnestedbrowsingcontextsw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/nested-browsing-contexts/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowstargetingcrossoriginnestedbrowsingcontextssubexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/targeting-cross-origin-nested-browsing-contexts.sub-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmldomdynamicmarkupinsertiondocumentwritew3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/dynamic-markup-insertion/document-write/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmldomdynamicmarkupinsertionopeningtheinputstream010expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/dynamic-markup-insertion/opening-the-input-stream/010-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmldomelementsformsjs">trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/elements-forms.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmldomelementsmiscjs">trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/elements-misc.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmldominterfacesexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/interfaces-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmldominterfaceshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/interfaces.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmldomreflectionmiscexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/reflection-misc-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsembeddedcontentimagemapscontainsjson">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/image-maps/contains.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsembeddedcontenttheareaelementw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-area-element/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsembeddedcontentthecanvaselementtoBlobjpegexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toBlob.jpeg-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsembeddedcontentthecanvaselementtoBlobjpeghtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toBlob.jpeg.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsembeddedcontentthecanvaselementtoBlobpngexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toBlob.png-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsembeddedcontentthecanvaselementtoBlobpnghtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toBlob.png.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsembeddedcontenttheiframeelementw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-iframe-element/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsembeddedcontenttheimgelementenvironmentchangesviewportchangeexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsembeddedcontenttheimgelementw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformsconstraintsformvalidationvalidityvalidhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valid.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformsconstraintsformvalidationwillValidateexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-willValidate-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformsconstraintsformvalidationwillValidatehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-willValidate.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformsformcontrolinfrastructureformexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/form-control-infrastructure/form-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformsformcontrolinfrastructureformhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/form-control-infrastructure/form.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformsformsubmission0urlencodedexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/form-submission-0/url-encoded-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformsformsubmission0w3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/form-submission-0/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformsresettingaformw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/resetting-a-form/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformstextfieldselectionselectionnotapplicationtextareaexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection-not-application-textarea-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformstextfieldselectionselectionnotapplicationtextareahtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection-not-application-textarea.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformstextfieldselectiontextfieldselectionsetSelectionRangeexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/textfieldselection-setSelectionRange-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformstextfieldselectiontextfieldselectionsetSelectionRangehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/textfieldselection-setSelectionRange.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformsthebuttonelementw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-button-element/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformsthefieldsetelementdisabled001html">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-fieldset-element/disabled-001.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformstheinputelementdateexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/date-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformstheinputelementdatehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/date.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformstheinputelementdatetimeexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/datetime-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformstheinputelementdatetimehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/datetime.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformstheinputelementnumberexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/number-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformstheinputelementnumberhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/number.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformstheinputelementrangeexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/range-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformstheinputelementrangehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/range.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformstheinputelementselectionexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/selection-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformstheinputelementselectionhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/selection.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformstheinputelementtime2expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/time-2-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformstheinputelementtime2html">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/time-2.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformstheinputelementtimeexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/time-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformstheinputelementtimehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/time.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformstheinputelementweekexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/week-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformstheinputelementweekhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/week.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsgroupingcontentthelielementw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/grouping-content/the-li-element/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticslinkslinktypesalternatecss">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/links/linktypes/alternate.css</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticslinkslinktypesw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/links/linktypes/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsscripting1thescriptelementresourcesw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/resources/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsscripting1thescriptelementw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticstabulardatathetableelementcaptionmethodsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/tabular-data/the-table-element/caption-methods-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticstabulardatathetableelementcaptionmethodshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/tabular-data/the-table-element/caption-methods.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticstextlevelsemanticstheaelementw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/text-level-semantics/the-a-element/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsyntaxw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/html/syntax/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlwebappapisscriptingeventsw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/scripting/events/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsimagesOWNERS">trunk/LayoutTests/imported/w3c/web-platform-tests/images/OWNERS</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestslintwhitelist">trunk/LayoutTests/imported/w3c/web-platform-tests/lint.whitelist</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsmediasourcemediasourcedurationexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/media-source/mediasource-duration-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourcetimingresourcetimingexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource-timing-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsshadowdomHTMLSlotElementinterfaceexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/shadow-dom/HTMLSlotElement-interface-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsshadowdomHTMLSlotElementinterfacehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/shadow-dom/HTMLSlotElement-interface.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsshadowdomeventinsideslottednodeexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/shadow-dom/event-inside-slotted-node-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsshadowdomeventinsideslottednodehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/shadow-dom/event-inside-slotted-node.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsshadowdomeventwithrelatedtargetexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/shadow-dom/event-with-related-target-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsshadowdomeventwithrelatedtargethtml">trunk/LayoutTests/imported/w3c/web-platform-tests/shadow-dom/event-with-related-target.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsOWNERS">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/OWNERS</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsbytelengthqueuingstrategyexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/byte-length-queuing-strategy-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamscountqueuingstrategyexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadstrategiesexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadunderlyingsourcesexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadunderlyingsourcesjs">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbrandchecksexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/brand-checks-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamscancelexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamscountqueuingstrategyintegrationexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/count-queuing-strategy-integration-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsgarbagecollectionexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/garbage-collection-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsgeneralexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamspipethroughexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/pipe-through-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsreadablestreamreaderexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsteeexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/tee-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamstemplatedexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/templated-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsresourcesrstesttemplatesjs">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/resources/rs-test-templates.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsresourcestestutilsjs">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/resources/test-utils.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsresourcesw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/resources/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsurlaelementexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsurlaelementoriginxhtmlxhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-origin-xhtml.xhtml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsurlaelementoriginhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-origin.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsurlaelementxhtmlexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-xhtml-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsurlaelementxhtmlxhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-xhtml.xhtml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsurlaelementhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsurlsetters_testsjson">trunk/LayoutTests/imported/w3c/web-platform-tests/url/setters_tests.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsurlurlconstructorexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/url/url-constructor-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsurlurlsettersexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/url/url-setters-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsurlurltestdatajson">trunk/LayoutTests/imported/w3c/web-platform-tests/url/urltestdata.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsurlw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/url/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingresourceswebperftestharnessjs">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/resources/webperftestharness.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingtest_user_timing_clear_markshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/test_user_timing_clear_marks.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingtest_user_timing_clear_measureshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/test_user_timing_clear_measures.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingtest_user_timing_markhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/test_user_timing_mark.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingtest_user_timing_mark_exceptionshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/test_user_timing_mark_exceptions.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingtest_user_timing_measurehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/test_user_timing_measure.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingtest_user_timing_measure_exceptionshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/test_user_timing_measure_exceptions.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingtest_user_timing_measure_navigation_timingexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/test_user_timing_measure_navigation_timing-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingtest_user_timing_measure_navigation_timinghtml">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/test_user_timing_measure_navigation_timing.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatorwk2importedw3cwebplatformtestshtmlsemanticsformsconstraintsformvalidationvalidityvalidexpectedtxt">trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valid-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatorwk2importedw3cwebplatformtestshtmlsemanticsformsconstraintsformvalidationwillValidateexpectedtxt">trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-willValidate-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatorwk2importedw3cwebplatformtestshtmlsemanticsformsformcontrolinfrastructureformexpectedtxt">trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/form-control-infrastructure/form-expected.txt</a></li>
<li><a href="#trunkLayoutTeststestsoptionsjson">trunk/LayoutTests/tests-options.json</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBbindingsinjectkeyexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/bindings-inject-key-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBbindingsinjectkeyhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/bindings-inject-key.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBclonebeforekeypathevalexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/clone-before-keypath-eval-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBclonebeforekeypathevalhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/clone-before-keypath-eval.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBdeleterequestqueueexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/delete-request-queue-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBdeleterequestqueuehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/delete-request-queue.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBerrorattributesexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/error-attributes-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBerrorattributeshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/error-attributes.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbbinarykeydetachedexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idb-binary-key-detached-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbbinarykeydetachedhtm">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idb-binary-key-detached.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbbinarykeyroundtripexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idb-binary-key-roundtrip-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbbinarykeyroundtriphtm">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idb-binary-key-roundtrip.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbcursoradvanceexceptionorderexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-advance-exception-order-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbcursoradvanceexceptionorderhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-advance-exception-order.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbcursorcontinueexceptionorderexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-continue-exception-order-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbcursorcontinueexceptionorderhtm">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-continue-exception-order.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbcursorcontinuePrimaryKeyexceptionsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-continuePrimaryKey-exceptions-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbcursorcontinuePrimaryKeyexceptionshtm">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-continuePrimaryKey-exceptions.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbcursorcontinuePrimaryKeyexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-continuePrimaryKey-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbcursorcontinuePrimaryKeyhtm">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-continuePrimaryKey.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbcursordeleteexceptionorderexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-delete-exception-order-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbcursordeleteexceptionorderhtm">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-delete-exception-order.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbcursorupdateexceptionorderexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-update-exception-order-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbcursorupdateexceptionorderhtm">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-update-exception-order.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbdatabasecreateObjectStoreexceptionorderexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbdatabase-createObjectStore-exception-order-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbdatabasecreateObjectStoreexceptionorderhtm">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbdatabase-createObjectStore-exception-order.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbdatabasedeleteObjectStoreexceptionorderexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbdatabase-deleteObjectStore-exception-order-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbdatabasedeleteObjectStoreexceptionorderhtm">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbdatabase-deleteObjectStore-exception-order.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbdatabasetransactionexceptionorderexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbdatabase-transaction-exception-order-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbdatabasetransactionexceptionorderhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbdatabase-transaction-exception-order.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbindexgetAllenforcerangeexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbindex-getAll-enforcerange-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbindexgetAllenforcerangehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbindex-getAll-enforcerange.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbindexgetAllKeysenforcerangeexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbindex-getAllKeys-enforcerange-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbindexgetAllKeysenforcerangehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbindex-getAllKeys-enforcerange.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbindexqueryexceptionorderexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbindex-query-exception-order-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbindexqueryexceptionorderhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbindex-query-exception-order.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbobjectstoreaddputexceptionorderexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-add-put-exception-order-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbobjectstoreaddputexceptionorderhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-add-put-exception-order.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbobjectstoreclearexceptionorderexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-clear-exception-order-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbobjectstoreclearexceptionorderhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-clear-exception-order.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbobjectstoredeleteexceptionorderexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-delete-exception-order-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbobjectstoredeleteexceptionorderhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-delete-exception-order.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbobjectstoredeleteIndexexceptionorderexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-deleteIndex-exception-order-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbobjectstoredeleteIndexexceptionorderhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-deleteIndex-exception-order.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbobjectstoregetAllenforcerangeexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-getAll-enforcerange-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbobjectstoregetAllenforcerangehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-getAll-enforcerange.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbobjectstoregetAllKeysenforcerangeexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-getAllKeys-enforcerange-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbobjectstoregetAllKeysenforcerangehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-getAllKeys-enforcerange.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbobjectstorequeryexceptionorderexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-query-exception-order-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbobjectstorequeryexceptionorderhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-query-exception-order.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbobjectstore_getKeyexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore_getKey-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbobjectstore_getKeyhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore_getKey.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbrequestonupgradeneededexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbrequest-onupgradeneeded-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbrequestonupgradeneededhtm">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbrequest-onupgradeneeded.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbtransactionobjectStoreexceptionorderexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbtransaction-objectStore-exception-order-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbtransactionobjectStoreexceptionorderhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbtransaction-objectStore-exception-order.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBkeyconversionexceptionsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/key-conversion-exceptions-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBkeyconversionexceptionshtm">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/key-conversion-exceptions.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBkeypathexceptionshtm">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/keypath-exceptions.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBkeypathspecialidentifiersexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/keypath-special-identifiers-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBkeypathspecialidentifiershtm">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/keypath-special-identifiers.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBopenrequestqueueexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/open-request-queue-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBopenrequestqueuehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/open-request-queue.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsXMLHttpRequesthistoricalexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/historical-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsXMLHttpRequesthistoricalhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/historical.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventListenerinvokelegacyexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventListener-invoke-legacy-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventListenerinvokelegacyhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventListener-invoke-legacy.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapiheadersheadervaluesexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/header-values-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapiheadersheadervaluesnormalizeexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/header-values-normalize-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapiheadersheadervaluesnormalizehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/header-values-normalize.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapiheadersheadervalueshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/header-values.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfontsOWNERS">trunk/LayoutTests/imported/w3c/web-platform-tests/fonts/OWNERS</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshrtimewindowworkertimeoriginexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/window-worker-time-origin-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshrtimewindowworkertimeoriginhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/window-worker-time-origin.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersbrowsingthewebhistorytraversalbrowsing_context_name0html">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/history-traversal/browsing_context_name-0.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersbrowsingthewebhistorytraversalsameurlexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/history-traversal/same-url-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersbrowsingthewebhistorytraversalsameurlhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/history-traversal/same-url.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersbrowsingthewebnavigatingacrossdocumentsnavigationunloadformsubmit1html">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit-1.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersbrowsingthewebnavigatingacrossdocumentsnavigationunloadformsubmit2html">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit-2.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersbrowsingthewebnavigatingacrossdocumentsnavigationunloadformsubmitexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersbrowsingthewebnavigatingacrossdocumentsnavigationunloadformsubmithtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersbrowsingthewebnavigatingacrossdocumentsnavigationunloadsameoriginfragment1html">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment-1.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersbrowsingthewebnavigatingacrossdocumentsnavigationunloadsameoriginfragment2html">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment-2.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersbrowsingthewebnavigatingacrossdocumentsnavigationunloadsameoriginfragmentexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersbrowsingthewebnavigatingacrossdocumentsnavigationunloadsameoriginfragmenthtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmldomdynamicmarkupinsertiondocumentwriteemptyhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/dynamic-markup-insertion/document-write/empty.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmldomdynamicmarkupinsertiondocumentwritewriteactivedocumentexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/dynamic-markup-insertion/document-write/write-active-document-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmldomdynamicmarkupinsertiondocumentwritewriteactivedocumenthtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/dynamic-markup-insertion/document-write/write-active-document.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsembeddedcontenttheareaelementareadownloadclickexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-area-element/area-download-click-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsembeddedcontenttheareaelementareadownloadclickhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-area-element/area-download-click.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsembeddedcontenttheiframeelementiframesynchronouslydiscardexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-synchronously-discard-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsembeddedcontenttheiframeelementiframesynchronouslydiscardhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-synchronously-discard.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsembeddedcontenttheimgelementnotrendereddimensiongetterexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/not-rendered-dimension-getter-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsembeddedcontenttheimgelementnotrendereddimensiongetterhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/not-rendered-dimension-getter.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformsformsubmission0formdatasetusvexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/form-submission-0/form-data-set-usv-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformsformsubmission0formdatasetusvformhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/form-submission-0/form-data-set-usv-form.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformsformsubmission0formdatasetusvhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/form-submission-0/form-data-set-usv.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformsformsubmission0formechopy">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/form-submission-0/form-echo.py</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformsresettingaformresetformeventrealmexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/resetting-a-form/reset-form-event-realm-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformsresettingaformresetformeventrealmsupporthtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/resetting-a-form/reset-form-event-realm-support.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformsresettingaformresetformeventrealmhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/resetting-a-form/reset-form-event-realm.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformsthebuttonelementbuttonmenuhistoricalexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-button-element/button-menu-historical-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformsthebuttonelementbuttonmenuhistoricalhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-button-element/button-menu-historical.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsgroupingcontentthelielementgroupinglireftestlistownermenuexpectedhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-list-owner-menu-expected.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsgroupingcontentthelielementgroupinglireftestlistownermenuhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-list-owner-menu.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsgroupingcontentthelielementgroupinglireftestlistownerskipnoboxesexpectedhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-list-owner-skip-no-boxes-expected.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsgroupingcontentthelielementgroupinglireftestlistownerskipnoboxeshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-list-owner-skip-no-boxes.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticslinkslinktypesalternateimportcss">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/links/linktypes/alternate-import.css</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsscripting1thescriptelementnomodulereflectexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-reflect-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsscripting1thescriptelementnomodulereflecthtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-reflect.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsscripting1thescriptelementnomodulesetonasyncclassicscriptexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-async-classic-script-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsscripting1thescriptelementnomodulesetonasyncclassicscripthtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-async-classic-script.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsscripting1thescriptelementnomodulesetonexternalmodulescriptexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-external-module-script-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsscripting1thescriptelementnomodulesetonexternalmodulescripthtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-external-module-script.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsscripting1thescriptelementnomodulesetoninlineclassicscriptsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-inline-classic-scripts-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsscripting1thescriptelementnomodulesetoninlineclassicscriptshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-inline-classic-scripts.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsscripting1thescriptelementnomodulesetoninlinemodulescriptexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-inline-module-script-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsscripting1thescriptelementnomodulesetoninlinemodulescripthtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-inline-module-script.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsscripting1thescriptelementnomodulesetonsynchronouslyloadedclassicscriptsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-synchronously-loaded-classic-scripts-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsscripting1thescriptelementnomodulesetonsynchronouslyloadedclassicscriptshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-synchronously-loaded-classic-scripts.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsscripting1thescriptelementresourcescocoamodulejs">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/resources/cocoa-module.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsscripting1thescriptelementresourcesexportscocoajs">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/resources/exports-cocoa.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsscripting1thescriptelementresourcessetscriptexecutedjs">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/resources/set-script-executed.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticstextlevelsemanticstheaelementadownloadclickexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/text-level-semantics/the-a-element/a-download-click-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticstextlevelsemanticstheaelementadownloadclickhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/text-level-semantics/the-a-element/a-download-click.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsyntaxOWNERS">trunk/LayoutTests/imported/w3c/web-platform-tests/html/syntax/OWNERS</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlwebappapisscriptingeventsbodyexposedwindoweventhandlersexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/scripting/events/body-exposed-window-event-handlers-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlwebappapisscriptingeventsbodyexposedwindoweventhandlershtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/scripting/events/body-exposed-window-event-handlers.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlwebappapisscriptingeventseventhandlercancellationexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/scripting/events/eventhandler-cancellation-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlwebappapisscriptingeventseventhandlercancellationhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/scripting/events/eventhandler-cancellation.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsREADMEmd">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/README.md</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsbytelengthqueuingstrategydedicatedworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/byte-length-queuing-strategy.dedicatedworker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsbytelengthqueuingstrategydedicatedworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/byte-length-queuing-strategy.dedicatedworker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsbytelengthqueuingstrategyhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/byte-length-queuing-strategy.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsbytelengthqueuingstrategyserviceworkerhttpsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/byte-length-queuing-strategy.serviceworker.https-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsbytelengthqueuingstrategyserviceworkerhttpshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/byte-length-queuing-strategy.serviceworker.https.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsbytelengthqueuingstrategysharedworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/byte-length-queuing-strategy.sharedworker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsbytelengthqueuingstrategysharedworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/byte-length-queuing-strategy.sharedworker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamscountqueuingstrategydedicatedworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.dedicatedworker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamscountqueuingstrategydedicatedworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.dedicatedworker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamscountqueuingstrategyhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamscountqueuingstrategyserviceworkerhttpsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.serviceworker.https-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamscountqueuingstrategyserviceworkerhttpshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.serviceworker.https.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamscountqueuingstrategysharedworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.sharedworker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamscountqueuingstrategysharedworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.sharedworker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsgeneratetestwrappersjs">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/generate-test-wrappers.js</a></li>
<li>trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/</li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingclosepropagationbackwardexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-backward-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingclosepropagationbackwarddedicatedworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-backward.dedicatedworker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingclosepropagationbackwarddedicatedworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-backward.dedicatedworker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingclosepropagationbackwardhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-backward.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingclosepropagationbackwardjs">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-backward.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingclosepropagationbackwardserviceworkerhttpsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-backward.serviceworker.https-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingclosepropagationbackwardserviceworkerhttpshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-backward.serviceworker.https.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingclosepropagationbackwardsharedworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-backward.sharedworker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingclosepropagationbackwardsharedworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-backward.sharedworker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingclosepropagationforwardexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-forward-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingclosepropagationforwarddedicatedworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-forward.dedicatedworker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingclosepropagationforwarddedicatedworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-forward.dedicatedworker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingclosepropagationforwardhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-forward.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingclosepropagationforwardjs">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-forward.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingclosepropagationforwardserviceworkerhttpsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-forward.serviceworker.https-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingclosepropagationforwardserviceworkerhttpshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-forward.serviceworker.https.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingclosepropagationforwardsharedworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-forward.sharedworker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingclosepropagationforwardsharedworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-forward.sharedworker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingerrorpropagationbackwardexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-backward-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingerrorpropagationbackwarddedicatedworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-backward.dedicatedworker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingerrorpropagationbackwarddedicatedworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-backward.dedicatedworker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingerrorpropagationbackwardhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-backward.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingerrorpropagationbackwardjs">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-backward.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingerrorpropagationbackwardserviceworkerhttpsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-backward.serviceworker.https-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingerrorpropagationbackwardserviceworkerhttpshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-backward.serviceworker.https.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingerrorpropagationbackwardsharedworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-backward.sharedworker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingerrorpropagationbackwardsharedworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-backward.sharedworker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingerrorpropagationforwardexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-forward-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingerrorpropagationforwarddedicatedworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-forward.dedicatedworker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingerrorpropagationforwarddedicatedworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-forward.dedicatedworker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingerrorpropagationforwardhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-forward.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingerrorpropagationforwardjs">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-forward.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingerrorpropagationforwardserviceworkerhttpsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-forward.serviceworker.https-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingerrorpropagationforwardserviceworkerhttpshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-forward.serviceworker.https.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingerrorpropagationforwardsharedworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-forward.sharedworker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingerrorpropagationforwardsharedworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-forward.sharedworker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingflowcontrolexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/flow-control-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingflowcontroldedicatedworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/flow-control.dedicatedworker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingflowcontroldedicatedworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/flow-control.dedicatedworker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingflowcontrolhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/flow-control.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingflowcontroljs">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/flow-control.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingflowcontrolserviceworkerhttpsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/flow-control.serviceworker.https-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingflowcontrolserviceworkerhttpshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/flow-control.serviceworker.https.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingflowcontrolsharedworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/flow-control.sharedworker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingflowcontrolsharedworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/flow-control.sharedworker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipinggeneralexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/general-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipinggeneraldedicatedworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/general.dedicatedworker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipinggeneraldedicatedworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/general.dedicatedworker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipinggeneralhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/general.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipinggeneraljs">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/general.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipinggeneralserviceworkerhttpsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/general.serviceworker.https-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipinggeneralserviceworkerhttpshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/general.serviceworker.https.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipinggeneralsharedworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/general.sharedworker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipinggeneralsharedworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/general.sharedworker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingmultiplepropagationexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/multiple-propagation-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingmultiplepropagationdedicatedworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/multiple-propagation.dedicatedworker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingmultiplepropagationdedicatedworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/multiple-propagation.dedicatedworker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingmultiplepropagationhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/multiple-propagation.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingmultiplepropagationjs">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/multiple-propagation.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingmultiplepropagationserviceworkerhttpsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/multiple-propagation.serviceworker.https-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingmultiplepropagationserviceworkerhttpshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/multiple-propagation.serviceworker.https.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingmultiplepropagationsharedworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/multiple-propagation.sharedworker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingmultiplepropagationsharedworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/multiple-propagation.sharedworker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingpipethroughexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/pipe-through-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingpipethroughdedicatedworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/pipe-through.dedicatedworker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingpipethroughdedicatedworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/pipe-through.dedicatedworker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingpipethroughhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/pipe-through.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingpipethroughjs">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/pipe-through.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingpipethroughserviceworkerhttpsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/pipe-through.serviceworker.https-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingpipethroughserviceworkerhttpshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/pipe-through.serviceworker.https.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingpipethroughsharedworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/pipe-through.sharedworker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingpipethroughsharedworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/pipe-through.sharedworker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingtransformstreamsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/transform-streams-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingtransformstreamsdedicatedworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/transform-streams.dedicatedworker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingtransformstreamsdedicatedworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/transform-streams.dedicatedworker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingtransformstreamshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/transform-streams.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingtransformstreamsjs">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/transform-streams.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingtransformstreamsserviceworkerhttpsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/transform-streams.serviceworker.https-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingtransformstreamsserviceworkerhttpshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/transform-streams.serviceworker.https.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingtransformstreamssharedworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/transform-streams.sharedworker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingtransformstreamssharedworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/transform-streams.sharedworker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/w3c-import.log</a></li>
<li>trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/</li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablebytestreamsgeneralexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablebytestreamsgeneraldedicatedworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.dedicatedworker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablebytestreamsgeneraldedicatedworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.dedicatedworker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablebytestreamsgeneralhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablebytestreamsgeneraljs">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablebytestreamsgeneralserviceworkerhttpsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.serviceworker.https-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablebytestreamsgeneralserviceworkerhttpshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.serviceworker.https.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablebytestreamsgeneralsharedworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.sharedworker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablebytestreamsgeneralsharedworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.sharedworker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablebytestreamsw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadstrategiesdedicatedworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.dedicatedworker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadstrategiesdedicatedworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.dedicatedworker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadstrategieshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadstrategiesserviceworkerhttpsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.serviceworker.https-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadstrategiesserviceworkerhttpshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.serviceworker.https.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadstrategiessharedworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.sharedworker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadstrategiessharedworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.sharedworker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadunderlyingsourcesdedicatedworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.dedicatedworker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadunderlyingsourcesdedicatedworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.dedicatedworker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadunderlyingsourceshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadunderlyingsourcesserviceworkerhttpsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.serviceworker.https-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadunderlyingsourcesserviceworkerhttpshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.serviceworker.https.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadunderlyingsourcessharedworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.sharedworker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadunderlyingsourcessharedworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.sharedworker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbrandchecksdedicatedworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/brand-checks.dedicatedworker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbrandchecksdedicatedworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/brand-checks.dedicatedworker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbrandcheckshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/brand-checks.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbrandchecksserviceworkerhttpsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/brand-checks.serviceworker.https-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbrandchecksserviceworkerhttpshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/brand-checks.serviceworker.https.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbrandcheckssharedworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/brand-checks.sharedworker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbrandcheckssharedworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/brand-checks.sharedworker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamscanceldedicatedworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel.dedicatedworker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamscanceldedicatedworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel.dedicatedworker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamscancelhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamscancelserviceworkerhttpsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel.serviceworker.https-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamscancelserviceworkerhttpshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel.serviceworker.https.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamscancelsharedworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel.sharedworker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamscancelsharedworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel.sharedworker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamscountqueuingstrategyintegrationdedicatedworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.dedicatedworker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamscountqueuingstrategyintegrationdedicatedworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.dedicatedworker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamscountqueuingstrategyintegrationhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamscountqueuingstrategyintegrationserviceworkerhttpsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.serviceworker.https-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamscountqueuingstrategyintegrationserviceworkerhttpshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.serviceworker.https.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamscountqueuingstrategyintegrationsharedworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.sharedworker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamscountqueuingstrategyintegrationsharedworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.sharedworker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsgarbagecollectiondedicatedworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/garbage-collection.dedicatedworker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsgarbagecollectiondedicatedworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/garbage-collection.dedicatedworker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsgarbagecollectionhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/garbage-collection.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsgarbagecollectionserviceworkerhttpsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/garbage-collection.serviceworker.https-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsgarbagecollectionserviceworkerhttpshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/garbage-collection.serviceworker.https.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsgarbagecollectionsharedworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/garbage-collection.sharedworker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsgarbagecollectionsharedworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/garbage-collection.sharedworker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsgeneraldedicatedworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.dedicatedworker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsgeneraldedicatedworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.dedicatedworker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsgeneralhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsgeneralserviceworkerhttpsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.serviceworker.https-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsgeneralserviceworkerhttpshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.serviceworker.https.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsgeneralsharedworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.sharedworker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsgeneralsharedworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.sharedworker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamspipethroughdedicatedworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/pipe-through.dedicatedworker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamspipethroughdedicatedworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/pipe-through.dedicatedworker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamspipethroughhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/pipe-through.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamspipethroughserviceworkerhttpsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/pipe-through.serviceworker.https-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamspipethroughserviceworkerhttpshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/pipe-through.serviceworker.https.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamspipethroughsharedworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/pipe-through.sharedworker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamspipethroughsharedworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/pipe-through.sharedworker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsreadablestreamreaderdedicatedworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader.dedicatedworker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsreadablestreamreaderdedicatedworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader.dedicatedworker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsreadablestreamreaderhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsreadablestreamreaderserviceworkerhttpsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader.serviceworker.https-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsreadablestreamreaderserviceworkerhttpshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader.serviceworker.https.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsreadablestreamreadersharedworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader.sharedworker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsreadablestreamreadersharedworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader.sharedworker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsteededicatedworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/tee.dedicatedworker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsteededicatedworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/tee.dedicatedworker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsteehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/tee.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsteeserviceworkerhttpsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/tee.serviceworker.https-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsteeserviceworkerhttpshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/tee.serviceworker.https.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsteesharedworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/tee.sharedworker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsteesharedworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/tee.sharedworker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamstemplateddedicatedworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/templated.dedicatedworker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamstemplateddedicatedworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/templated.dedicatedworker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamstemplatedhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/templated.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamstemplatedserviceworkerhttpsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/templated.serviceworker.https-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamstemplatedserviceworkerhttpshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/templated.serviceworker.https.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamstemplatedsharedworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/templated.sharedworker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamstemplatedsharedworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/templated.sharedworker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsresourcesrecordingstreamsjs">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/resources/recording-streams.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformteststest_keys_wdspechtml">trunk/LayoutTests/imported/w3c/web-platform-tests/test_keys_wdspec.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatorwk2importedw3cwebplatformtestshtmlsemanticsformstheinputelementdateexpectedtxt">trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/date-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatorwk2importedw3cwebplatformtestshtmlsemanticsformstheinputelementdatetimeexpectedtxt">trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/datetime-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatorwk2importedw3cwebplatformtestshtmlsemanticsformstheinputelementtime2expectedtxt">trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/time-2-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatorwk2importedw3cwebplatformtestshtmlsemanticsformstheinputelementtimeexpectedtxt">trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/time-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatorwk2importedw3cwebplatformtestshtmlsemanticsformstheinputelementweekexpectedtxt">trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/week-expected.txt</a></li>
<li>trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/url/</li>
<li><a href="#trunkLayoutTestsplatformiossimulatorwk2importedw3cwebplatformtestsurlinterfacesexpectedtxt">trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/url/interfaces-expected.txt</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsbytelengthqueuingstrategyhttpsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/byte-length-queuing-strategy.https-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsbytelengthqueuingstrategyhttpshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/byte-length-queuing-strategy.https.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamscountqueuingstrategyhttpsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.https-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamscountqueuingstrategyhttpshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.https.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadstrategieshttpsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.https-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadstrategieshttpshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.https.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadunderlyingsourceshttpsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.https-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadunderlyingsourceshttpshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.https.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbrandcheckshttpsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/brand-checks.https-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbrandcheckshttpshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/brand-checks.https.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamscancelhttpsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel.https-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamscancelhttpshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel.https.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamscountqueuingstrategyintegrationhttpsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.https-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamscountqueuingstrategyintegrationhttpshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.https.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsgarbagecollectionhttpsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/garbage-collection.https-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsgarbagecollectionhttpshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/garbage-collection.https.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsgeneralhttpsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.https-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsgeneralhttpshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.https.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamspipethroughhttpsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/pipe-through.https-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamspipethroughhttpshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/pipe-through.https.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsreadablestreamreaderhttpsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader.https-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsreadablestreamreaderhttpshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader.https.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsteehttpsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/tee.https-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsteehttpshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/tee.https.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamstemplatedhttpsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/templated.https-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamstemplatedhttpshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/templated.https.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsresourcestestinitializerjs">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/resources/test-initializer.js</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/ChangeLog        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,3 +1,13 @@
</span><ins>+2017-02-11  Youenn Fablet  &lt;youennf@gmail.com&gt;
+
+        Refresh WPT tests up to 06c6c52e05e05483d3c844168a417ee27a554eb7
+        https://bugs.webkit.org/show_bug.cgi?id=168175
+
+        Reviewed by Sam Weinig.
+
+        * TestExpectations: Marking some tests as failing/skipping.
+        * tests-options.json:
+
</ins><span class="cx"> 2017-02-11  Sam Weinig  &lt;sam@webkit.org&gt;
</span><span class="cx"> 
</span><span class="cx">         Remove custom bindings for XSLTProcessor.idl
</span></span></pre></div>
<a id="trunkLayoutTestsTestExpectations"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/TestExpectations (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/TestExpectations        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/TestExpectations        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -856,6 +856,9 @@
</span><span class="cx"> # In debug builds, runs too slowly for the test timeout.
</span><span class="cx"> [ Debug ] imported/w3c/web-platform-tests/IndexedDB/idbindex-multientry-big.htm [ Failure ]
</span><span class="cx"> 
</span><ins>+# Test is crashing
+imported/w3c/web-platform-tests/IndexedDB/keypath-exceptions.htm [ Skip ]
+
</ins><span class="cx"> # SQLite backend tests that timeout
</span><span class="cx"> storage/indexeddb/modern/transaction-scheduler-1.html [ Skip ]
</span><span class="cx"> storage/indexeddb/modern/transaction-scheduler-2.html [ Skip ]
</span><span class="lines">@@ -1018,7 +1021,13 @@
</span><span class="cx"> 
</span><span class="cx"> webkit.org/b/167428 fast/backgrounds/background-repeat-x-y-parse.html [ Failure ]
</span><span class="cx"> 
</span><del>-webkit.org/b/1644041 imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-details-element/toggleEvent.html [ Pass Failure ]
</del><ins>+imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-details-element/toggleEvent.html [ Pass Failure ]
+webkit.org/b/168175 imported/w3c/web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-list-owner-skip-no-boxes.html [ ImageOnlyFailure ]
+webkit.org/b/168175 imported/w3c/web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-list-owner-menu.html [ ImageOnlyFailure ]
+webkit.org/b/168175 imported/w3c/web-platform-tests/html/semantics/embedded-content/the-area-element/area-download-click.html [ Pass Failure ]
+webkit.org/b/168175 imported/w3c/web-platform-tests/html/browsers/browsing-the-web/history-traversal/same-url.html [ Pass Failure ]
+webkit.org/b/168175 imported/w3c/web-platform-tests/html/browsers/offline/browser-state/navigator_online_online.html [ Pass Failure ]
+webkit.org/b/168175 imported/w3c/web-platform-tests/html/semantics/text-level-semantics/the-a-element/a-download-click.html [ Timeout Pass ]
</ins><span class="cx"> 
</span><span class="cx"> webkit.org/b/168066 performance-api/performance-now-api.html [ Pass Failure ]
</span><span class="cx"> webkit.org/b/168005 performance-api/performance-now-time-origin-in-worker.html [ Pass Failure ]
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/ChangeLog (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/ChangeLog        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/ChangeLog        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,3 +1,697 @@
</span><ins>+2017-02-11  Youenn Fablet  &lt;youennf@gmail.com&gt;
+
+        Refresh WPT tests up to 06c6c52e05e05483d3c844168a417ee27a554eb7
+        https://bugs.webkit.org/show_bug.cgi?id=168175
+
+        Reviewed by Sam Weinig.
+
+        * resources/TestRepositories:
+        * resources/import-expectations.json:
+        * resources/resource-files.json:
+        * web-platform-tests/IndexedDB/OWNERS:
+        * web-platform-tests/IndexedDB/bindings-inject-key-expected.txt: Added.
+        * web-platform-tests/IndexedDB/bindings-inject-key.html: Added.
+        * web-platform-tests/IndexedDB/clone-before-keypath-eval-expected.txt: Added.
+        * web-platform-tests/IndexedDB/clone-before-keypath-eval.html: Added.
+        * web-platform-tests/IndexedDB/delete-request-queue-expected.txt: Added.
+        * web-platform-tests/IndexedDB/delete-request-queue.html: Added.
+        * web-platform-tests/IndexedDB/error-attributes-expected.txt: Added.
+        * web-platform-tests/IndexedDB/error-attributes.html: Added.
+        * web-platform-tests/IndexedDB/idb-binary-key-detached-expected.txt: Added.
+        * web-platform-tests/IndexedDB/idb-binary-key-detached.htm: Added.
+        * web-platform-tests/IndexedDB/idb-binary-key-roundtrip-expected.txt: Added.
+        * web-platform-tests/IndexedDB/idb-binary-key-roundtrip.htm: Added.
+        * web-platform-tests/IndexedDB/idbcursor-advance-exception-order-expected.txt: Added.
+        * web-platform-tests/IndexedDB/idbcursor-advance-exception-order.html: Added.
+        * web-platform-tests/IndexedDB/idbcursor-continue-exception-order-expected.txt: Added.
+        * web-platform-tests/IndexedDB/idbcursor-continue-exception-order.htm: Added.
+        * web-platform-tests/IndexedDB/idbcursor-continuePrimaryKey-exceptions-expected.txt: Added.
+        * web-platform-tests/IndexedDB/idbcursor-continuePrimaryKey-exceptions.htm: Added.
+        * web-platform-tests/IndexedDB/idbcursor-continuePrimaryKey-expected.txt: Added.
+        * web-platform-tests/IndexedDB/idbcursor-continuePrimaryKey.htm: Added.
+        * web-platform-tests/IndexedDB/idbcursor-delete-exception-order-expected.txt: Added.
+        * web-platform-tests/IndexedDB/idbcursor-delete-exception-order.htm: Added.
+        * web-platform-tests/IndexedDB/idbcursor-update-exception-order-expected.txt: Added.
+        * web-platform-tests/IndexedDB/idbcursor-update-exception-order.htm: Added.
+        * web-platform-tests/IndexedDB/idbdatabase-createObjectStore-exception-order-expected.txt: Added.
+        * web-platform-tests/IndexedDB/idbdatabase-createObjectStore-exception-order.htm: Added.
+        * web-platform-tests/IndexedDB/idbdatabase-deleteObjectStore-exception-order-expected.txt: Added.
+        * web-platform-tests/IndexedDB/idbdatabase-deleteObjectStore-exception-order.htm: Added.
+        * web-platform-tests/IndexedDB/idbdatabase-transaction-exception-order-expected.txt: Added.
+        * web-platform-tests/IndexedDB/idbdatabase-transaction-exception-order.html: Added.
+        * web-platform-tests/IndexedDB/idbindex-getAll-enforcerange-expected.txt: Added.
+        * web-platform-tests/IndexedDB/idbindex-getAll-enforcerange.html: Added.
+        * web-platform-tests/IndexedDB/idbindex-getAllKeys-enforcerange-expected.txt: Added.
+        * web-platform-tests/IndexedDB/idbindex-getAllKeys-enforcerange.html: Added.
+        * web-platform-tests/IndexedDB/idbindex-query-exception-order-expected.txt: Added.
+        * web-platform-tests/IndexedDB/idbindex-query-exception-order.html: Added.
+        * web-platform-tests/IndexedDB/idbkeyrange-includes-expected.txt:
+        * web-platform-tests/IndexedDB/idbkeyrange-includes.htm:
+        * web-platform-tests/IndexedDB/idbobjectstore-add-put-exception-order-expected.txt: Added.
+        * web-platform-tests/IndexedDB/idbobjectstore-add-put-exception-order.html: Added.
+        * web-platform-tests/IndexedDB/idbobjectstore-clear-exception-order-expected.txt: Added.
+        * web-platform-tests/IndexedDB/idbobjectstore-clear-exception-order.html: Added.
+        * web-platform-tests/IndexedDB/idbobjectstore-delete-exception-order-expected.txt: Added.
+        * web-platform-tests/IndexedDB/idbobjectstore-delete-exception-order.html: Added.
+        * web-platform-tests/IndexedDB/idbobjectstore-deleteIndex-exception-order-expected.txt: Added.
+        * web-platform-tests/IndexedDB/idbobjectstore-deleteIndex-exception-order.html: Added.
+        * web-platform-tests/IndexedDB/idbobjectstore-getAll-enforcerange-expected.txt: Added.
+        * web-platform-tests/IndexedDB/idbobjectstore-getAll-enforcerange.html: Added.
+        * web-platform-tests/IndexedDB/idbobjectstore-getAllKeys-enforcerange-expected.txt: Added.
+        * web-platform-tests/IndexedDB/idbobjectstore-getAllKeys-enforcerange.html: Added.
+        * web-platform-tests/IndexedDB/idbobjectstore-query-exception-order-expected.txt: Added.
+        * web-platform-tests/IndexedDB/idbobjectstore-query-exception-order.html: Added.
+        * web-platform-tests/IndexedDB/idbobjectstore_getKey-expected.txt: Added.
+        * web-platform-tests/IndexedDB/idbobjectstore_getKey.html: Added.
+        * web-platform-tests/IndexedDB/idbrequest-onupgradeneeded-expected.txt: Added.
+        * web-platform-tests/IndexedDB/idbrequest-onupgradeneeded.htm: Added.
+        * web-platform-tests/IndexedDB/idbtransaction-objectStore-exception-order-expected.txt: Added.
+        * web-platform-tests/IndexedDB/idbtransaction-objectStore-exception-order.html: Added.
+        * web-platform-tests/IndexedDB/idbversionchangeevent.htm:
+        * web-platform-tests/IndexedDB/key-conversion-exceptions-expected.txt: Added.
+        * web-platform-tests/IndexedDB/key-conversion-exceptions.htm: Added.
+        * web-platform-tests/IndexedDB/keypath-exceptions-expected.txt: Added.
+        * web-platform-tests/IndexedDB/keypath-exceptions.htm: Added.
+        * web-platform-tests/IndexedDB/keypath-special-identifiers-expected.txt: Added.
+        * web-platform-tests/IndexedDB/keypath-special-identifiers.htm: Added.
+        * web-platform-tests/IndexedDB/open-request-queue-expected.txt: Added.
+        * web-platform-tests/IndexedDB/open-request-queue.html: Added.
+        * web-platform-tests/IndexedDB/support.js:
+        (auto_fail):
+        (createdb_for_multiple_tests):
+        (assert_key_equals):
+        (indexeddb_test):
+        * web-platform-tests/IndexedDB/w3c-import.log:
+        * web-platform-tests/README.md:
+        * web-platform-tests/XMLHttpRequest/abort-during-done.htm:
+        * web-platform-tests/XMLHttpRequest/historical-expected.txt: Added.
+        * web-platform-tests/XMLHttpRequest/historical.html: Added.
+        * web-platform-tests/XMLHttpRequest/resources/corsenabled.py:
+        (main):
+        * web-platform-tests/XMLHttpRequest/response-method-expected.txt:
+        * web-platform-tests/XMLHttpRequest/responsexml-document-properties-expected.txt:
+        * web-platform-tests/XMLHttpRequest/send-entity-body-document-expected.txt:
+        * web-platform-tests/XMLHttpRequest/send-redirect-post-upload-expected.txt:
+        * web-platform-tests/XMLHttpRequest/send-redirect-to-cors.htm:
+        * web-platform-tests/XMLHttpRequest/setrequestheader-bogus-value-expected.txt:
+        * web-platform-tests/XMLHttpRequest/setrequestheader-bogus-value.htm:
+        * web-platform-tests/XMLHttpRequest/w3c-import.log:
+        * web-platform-tests/check_stability.py:
+        (do_delayed_imports):
+        (setup_logging):
+        (setup_action_filter.as):
+        (setup_action_filter.LogActionFilter):
+        (setup_action_filter.LogActionFilter.__init__):
+        (setup_action_filter.LogActionFilter.__call__):
+        (TravisFold):
+        (TravisFold.__init__):
+        (TravisFold.__enter__):
+        (TravisFold.__exit__):
+        (FilteredIO):
+        (FilteredIO.__init__):
+        (FilteredIO.__getattr__):
+        (FilteredIO.disable):
+        (FilteredIO.write):
+        (replace_streams):
+        (replace_streams.on_write):
+        (Browser):
+        (Browser.install):
+        (Browser.install_webdriver):
+        (Browser.version):
+        (Browser.wptrunner_args):
+        (Firefox):
+        (Firefox.install):
+        (Firefox._latest_geckodriver_version):
+        (Firefox.install_webdriver):
+        (Firefox.version):
+        (Firefox.wptrunner_args):
+        (Chrome):
+        (Chrome.install):
+        (Chrome.install_webdriver):
+        (Chrome.version):
+        (Chrome.wptrunner_args):
+        (get):
+        (call):
+        (get_git_cmd):
+        (seekable):
+        (untar):
+        (unzip):
+        (pwd):
+        (fetch_wpt_master):
+        (get_sha1):
+        (build_manifest):
+        (install_wptrunner):
+        (get_files_changed):
+        (get_affected_testfiles):
+        (wptrunner_args):
+        (setup_log_handler.as):
+        (setup_log_handler.LogHandler):
+        (is_inconsistent):
+        (err_string):
+        (process_results):
+        (format_comment_title):
+        (markdown_adjust):
+        (table):
+        (write_inconsistent):
+        (write_results):
+        (get_parser):
+        (main):
+        * web-platform-tests/ci_built_diff.sh:
+        * web-platform-tests/ci_stability.sh:
+        * web-platform-tests/common/OWNERS:
+        * web-platform-tests/custom-elements/reactions/DOMTokenList-expected.txt:
+        * web-platform-tests/custom-elements/reactions/DOMTokenList.html:
+        * web-platform-tests/dom/events/EventListener-invoke-legacy-expected.txt: Added.
+        * web-platform-tests/dom/events/EventListener-invoke-legacy.html: Added.
+        * web-platform-tests/dom/events/w3c-import.log:
+        * web-platform-tests/dom/lists/DOMTokenList-iteration-expected.txt:
+        * web-platform-tests/dom/lists/DOMTokenList-iteration.html:
+        * web-platform-tests/dom/nodes/DOMImplementation-createDocument-expected.txt:
+        * web-platform-tests/dom/nodes/DOMImplementation-createDocument.html:
+        * web-platform-tests/dom/nodes/Document-createElementNS-expected.txt:
+        * web-platform-tests/dom/nodes/Document-createElementNS.html:
+        * web-platform-tests/dom/nodes/Document-createElementNS.js:
+        * web-platform-tests/dom/nodes/Node-isSameNode-expected.txt:
+        * web-platform-tests/dom/nodes/Node-isSameNode.html:
+        * web-platform-tests/dom/nodes/NodeList-Iterable-expected.txt:
+        * web-platform-tests/dom/nodes/NodeList-Iterable.html:
+        * web-platform-tests/dom/ranges/Range-selectNode-expected.txt:
+        * web-platform-tests/dom/ranges/Range-selectNode.html:
+        * web-platform-tests/encrypted-media/content/video_512x288_h264-360k_multikey_key1_dashinit.mp4: Added.
+        * web-platform-tests/fetch/api/cors/cors-preflight.js:
+        (corsPreflight):
+        * web-platform-tests/fetch/api/headers/header-values-expected.txt: Added.
+        * web-platform-tests/fetch/api/headers/header-values-normalize-expected.txt: Added.
+        * web-platform-tests/fetch/api/headers/header-values-normalize.html: Added.
+        * web-platform-tests/fetch/api/headers/header-values.html: Added.
+        * web-platform-tests/fetch/api/headers/w3c-import.log:
+        * web-platform-tests/fetch/api/policies/referrer-origin-expected.txt:
+        * web-platform-tests/fetch/api/policies/referrer-origin-worker-expected.txt:
+        * web-platform-tests/fetch/api/policies/referrer-origin.js:
+        (promise_test):
+        * web-platform-tests/fetch/api/request/request-cache-default-conditional-expected.txt:
+        * web-platform-tests/fetch/api/request/request-cache-default-conditional.html:
+        * web-platform-tests/fetch/api/request/request-cache-only-if-cached-expected.txt:
+        * web-platform-tests/fetch/api/request/request-disturbed-expected.txt:
+        * web-platform-tests/fetch/api/request/request-disturbed.html:
+        * web-platform-tests/fetch/api/request/request-error-expected.txt:
+        * web-platform-tests/fetch/api/request/request-error.html:
+        * web-platform-tests/fetch/api/request/request-idl-expected.txt:
+        * 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/resources/preflight.py:
+        (main):
+        * web-platform-tests/fetch/api/response/response-idl-expected.txt:
+        * web-platform-tests/fetch/api/response/response-idl.html:
+        * web-platform-tests/fonts/OWNERS: Added.
+        * web-platform-tests/fonts/w3c-import.log:
+        * web-platform-tests/hr-time/idlharness-expected.txt:
+        * web-platform-tests/hr-time/idlharness.html:
+        * web-platform-tests/hr-time/w3c-import.log:
+        * web-platform-tests/hr-time/window-worker-time-origin-expected.txt: Added.
+        * web-platform-tests/hr-time/window-worker-time-origin.html: Added.
+        * web-platform-tests/html/OWNERS:
+        * web-platform-tests/html/browsers/browsing-the-web/history-traversal/browsing_context_name-0.html: Added.
+        * web-platform-tests/html/browsers/browsing-the-web/history-traversal/browsing_context_name_cross_origin.html:
+        * web-platform-tests/html/browsers/browsing-the-web/history-traversal/same-url-expected.txt: Added.
+        * web-platform-tests/html/browsers/browsing-the-web/history-traversal/same-url.html: Added.
+        * web-platform-tests/html/browsers/browsing-the-web/history-traversal/w3c-import.log:
+        * web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit-1.html: Added.
+        * web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit-2.html: Added.
+        * web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit-expected.txt: Added.
+        * web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit.html: Added.
+        * web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment-1.html: Added.
+        * web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment-2.html: Added.
+        * web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment-expected.txt: Added.
+        * web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment.html: Added.
+        * web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_same_origin-expected.txt:
+        * web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_same_origin.html:
+        * web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/w3c-import.log:
+        * web-platform-tests/html/browsers/browsing-the-web/read-media/pageload-image-expected.txt:
+        * web-platform-tests/html/browsers/browsing-the-web/read-media/pageload-image.html:
+        * web-platform-tests/html/browsers/browsing-the-web/read-media/pageload-video.html:
+        * web-platform-tests/html/browsers/browsing-the-web/scroll-to-fragid/w3c-import.log:
+        * web-platform-tests/html/browsers/browsing-the-web/unloading-documents/prompt/w3c-import.log:
+        * web-platform-tests/html/browsers/browsing-the-web/unloading-documents/unload/w3c-import.log:
+        * web-platform-tests/html/browsers/browsing-the-web/unloading-documents/w3c-import.log:
+        * web-platform-tests/html/browsers/history/the-location-interface/location-protocol-setter-non-broken-expected.txt:
+        * web-platform-tests/html/browsers/offline/browser-state/navigator_online_online-expected.txt:
+        * web-platform-tests/html/browsers/origin/cross-origin-objects/frame.html:
+        * web-platform-tests/html/browsers/windows/browsing-context-names/w3c-import.log:
+        * web-platform-tests/html/browsers/windows/nested-browsing-contexts/frameElement.sub-expected.txt:
+        * web-platform-tests/html/browsers/windows/nested-browsing-contexts/w3c-import.log:
+        * web-platform-tests/html/browsers/windows/targeting-cross-origin-nested-browsing-contexts.sub-expected.txt:
+        * web-platform-tests/html/dom/dynamic-markup-insertion/document-write/empty.html: Added.
+        * web-platform-tests/html/dom/dynamic-markup-insertion/document-write/w3c-import.log:
+        * web-platform-tests/html/dom/dynamic-markup-insertion/document-write/write-active-document-expected.txt: Added.
+        * web-platform-tests/html/dom/dynamic-markup-insertion/document-write/write-active-document.html: Added.
+        * web-platform-tests/html/dom/dynamic-markup-insertion/opening-the-input-stream/010-expected.txt:
+        * web-platform-tests/html/dom/elements-forms.js:
+        * web-platform-tests/html/dom/elements-misc.js:
+        * web-platform-tests/html/dom/interfaces-expected.txt:
+        * web-platform-tests/html/dom/interfaces.html:
+        * web-platform-tests/html/dom/reflection-misc-expected.txt:
+        * web-platform-tests/html/semantics/embedded-content/image-maps/contains.json:
+        * web-platform-tests/html/semantics/embedded-content/the-area-element/area-download-click-expected.txt: Added.
+        * web-platform-tests/html/semantics/embedded-content/the-area-element/area-download-click.html: Added.
+        * web-platform-tests/html/semantics/embedded-content/the-area-element/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/toBlob.jpeg-expected.txt:
+        * web-platform-tests/html/semantics/embedded-content/the-canvas-element/toBlob.jpeg.html:
+        * web-platform-tests/html/semantics/embedded-content/the-canvas-element/toBlob.png-expected.txt:
+        * web-platform-tests/html/semantics/embedded-content/the-canvas-element/toBlob.png.html:
+        * web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-synchronously-discard-expected.txt: Added.
+        * web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-synchronously-discard.html: Added.
+        * web-platform-tests/html/semantics/embedded-content/the-iframe-element/w3c-import.log:
+        * web-platform-tests/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change-expected.txt:
+        * web-platform-tests/html/semantics/embedded-content/the-img-element/not-rendered-dimension-getter-expected.txt: Added.
+        * web-platform-tests/html/semantics/embedded-content/the-img-element/not-rendered-dimension-getter.html: Added.
+        * web-platform-tests/html/semantics/embedded-content/the-img-element/w3c-import.log:
+        * web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valid.html:
+        * 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/form-data-set-usv-expected.txt: Added.
+        * web-platform-tests/html/semantics/forms/form-submission-0/form-data-set-usv-form.html: Added.
+        * web-platform-tests/html/semantics/forms/form-submission-0/form-data-set-usv.html: Added.
+        * web-platform-tests/html/semantics/forms/form-submission-0/form-echo.py: Added.
+        (main):
+        * web-platform-tests/html/semantics/forms/form-submission-0/url-encoded-expected.txt:
+        * web-platform-tests/html/semantics/forms/form-submission-0/w3c-import.log:
+        * web-platform-tests/html/semantics/forms/resetting-a-form/reset-form-event-realm-expected.txt: Added.
+        * web-platform-tests/html/semantics/forms/resetting-a-form/reset-form-event-realm-support.html: Added.
+        * web-platform-tests/html/semantics/forms/resetting-a-form/reset-form-event-realm.html: Added.
+        * web-platform-tests/html/semantics/forms/resetting-a-form/w3c-import.log:
+        * web-platform-tests/html/semantics/forms/textfieldselection/selection-not-application-textarea-expected.txt:
+        * web-platform-tests/html/semantics/forms/textfieldselection/selection-not-application-textarea.html:
+        * web-platform-tests/html/semantics/forms/textfieldselection/textfieldselection-setSelectionRange-expected.txt:
+        * web-platform-tests/html/semantics/forms/textfieldselection/textfieldselection-setSelectionRange.html:
+        * web-platform-tests/html/semantics/forms/the-button-element/button-menu-historical-expected.txt: Added.
+        * web-platform-tests/html/semantics/forms/the-button-element/button-menu-historical.html: Added.
+        * web-platform-tests/html/semantics/forms/the-button-element/w3c-import.log:
+        * web-platform-tests/html/semantics/forms/the-fieldset-element/disabled-001.html:
+        * web-platform-tests/html/semantics/forms/the-input-element/date-expected.txt:
+        * web-platform-tests/html/semantics/forms/the-input-element/date.html:
+        * web-platform-tests/html/semantics/forms/the-input-element/datetime-expected.txt:
+        * web-platform-tests/html/semantics/forms/the-input-element/datetime.html:
+        * web-platform-tests/html/semantics/forms/the-input-element/number-expected.txt:
+        * web-platform-tests/html/semantics/forms/the-input-element/number.html:
+        * web-platform-tests/html/semantics/forms/the-input-element/range-expected.txt:
+        * web-platform-tests/html/semantics/forms/the-input-element/range.html:
+        * web-platform-tests/html/semantics/forms/the-input-element/selection-expected.txt:
+        * web-platform-tests/html/semantics/forms/the-input-element/selection.html:
+        * web-platform-tests/html/semantics/forms/the-input-element/time-2-expected.txt:
+        * web-platform-tests/html/semantics/forms/the-input-element/time-2.html:
+        * web-platform-tests/html/semantics/forms/the-input-element/time-expected.txt:
+        * web-platform-tests/html/semantics/forms/the-input-element/time.html:
+        * web-platform-tests/html/semantics/forms/the-input-element/week-expected.txt:
+        * web-platform-tests/html/semantics/forms/the-input-element/week.html:
+        * web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-list-owner-menu-expected.html: Added.
+        * web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-list-owner-menu.html: Added.
+        * web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-list-owner-skip-no-boxes-expected.html: Added.
+        * web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-list-owner-skip-no-boxes.html: Added.
+        * web-platform-tests/html/semantics/grouping-content/the-li-element/w3c-import.log:
+        * web-platform-tests/html/semantics/links/linktypes/alternate-import.css: Added.
+        (body):
+        * web-platform-tests/html/semantics/links/linktypes/alternate.css:
+        (@import url(&quot;alternate-import.css&quot;);):
+        * web-platform-tests/html/semantics/links/linktypes/w3c-import.log:
+        * web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-reflect-expected.txt: Added.
+        * web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-reflect.html: Added.
+        * web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-async-classic-script-expected.txt: Added.
+        * web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-async-classic-script.html: Added.
+        * web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-external-module-script-expected.txt: Added.
+        * web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-external-module-script.html: Added.
+        * web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-inline-classic-scripts-expected.txt: Added.
+        * web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-inline-classic-scripts.html: Added.
+        * web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-inline-module-script-expected.txt: Added.
+        * web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-inline-module-script.html: Added.
+        * web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-synchronously-loaded-classic-scripts-expected.txt: Added.
+        * web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-synchronously-loaded-classic-scripts.html: Added.
+        * web-platform-tests/html/semantics/scripting-1/the-script-element/resources/cocoa-module.js: Added.
+        (export.default.Cocoa.prototype.taste):
+        (export.default.Cocoa):
+        * web-platform-tests/html/semantics/scripting-1/the-script-element/resources/exports-cocoa.js: Added.
+        * web-platform-tests/html/semantics/scripting-1/the-script-element/resources/set-script-executed.js: Added.
+        * web-platform-tests/html/semantics/scripting-1/the-script-element/resources/w3c-import.log:
+        * web-platform-tests/html/semantics/scripting-1/the-script-element/w3c-import.log:
+        * web-platform-tests/html/semantics/tabular-data/the-table-element/caption-methods-expected.txt:
+        * web-platform-tests/html/semantics/tabular-data/the-table-element/caption-methods.html:
+        * web-platform-tests/html/semantics/text-level-semantics/the-a-element/a-download-click-expected.txt: Added.
+        * web-platform-tests/html/semantics/text-level-semantics/the-a-element/a-download-click.html: Added.
+        * web-platform-tests/html/semantics/text-level-semantics/the-a-element/w3c-import.log:
+        * web-platform-tests/html/syntax/OWNERS: Added.
+        * web-platform-tests/html/syntax/w3c-import.log:
+        * web-platform-tests/html/webappapis/scripting/events/body-exposed-window-event-handlers-expected.txt: Added.
+        * web-platform-tests/html/webappapis/scripting/events/body-exposed-window-event-handlers.html: Added.
+        * web-platform-tests/html/webappapis/scripting/events/eventhandler-cancellation-expected.txt: Added.
+        * web-platform-tests/html/webappapis/scripting/events/eventhandler-cancellation.html: Added.
+        * web-platform-tests/html/webappapis/scripting/events/w3c-import.log:
+        * web-platform-tests/images/OWNERS:
+        * web-platform-tests/lint.whitelist:
+        * web-platform-tests/media-source/mediasource-duration-expected.txt:
+        * web-platform-tests/resource-timing/resource-timing-expected.txt:
+        * web-platform-tests/shadow-dom/HTMLSlotElement-interface-expected.txt:
+        * web-platform-tests/shadow-dom/HTMLSlotElement-interface.html:
+        * web-platform-tests/shadow-dom/event-inside-slotted-node-expected.txt:
+        * web-platform-tests/shadow-dom/event-inside-slotted-node.html:
+        * web-platform-tests/shadow-dom/event-with-related-target-expected.txt:
+        * web-platform-tests/shadow-dom/event-with-related-target.html:
+        * web-platform-tests/streams/OWNERS:
+        * web-platform-tests/streams/README.md: Added.
+        * web-platform-tests/streams/byte-length-queuing-strategy-expected.txt:
+        * web-platform-tests/streams/byte-length-queuing-strategy.dedicatedworker-expected.txt: Added.
+        * web-platform-tests/streams/byte-length-queuing-strategy.dedicatedworker.html: Added.
+        * web-platform-tests/streams/byte-length-queuing-strategy.html: Added.
+        * web-platform-tests/streams/byte-length-queuing-strategy.https-expected.txt: Removed.
+        * web-platform-tests/streams/byte-length-queuing-strategy.serviceworker.https-expected.txt: Added.
+        * web-platform-tests/streams/byte-length-queuing-strategy.serviceworker.https.html: Copied from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.https.html.
+        * web-platform-tests/streams/byte-length-queuing-strategy.sharedworker-expected.txt: Added.
+        * web-platform-tests/streams/byte-length-queuing-strategy.sharedworker.html: Added.
+        * web-platform-tests/streams/count-queuing-strategy-expected.txt:
+        * web-platform-tests/streams/count-queuing-strategy.dedicatedworker-expected.txt: Added.
+        * web-platform-tests/streams/count-queuing-strategy.dedicatedworker.html: Added.
+        * web-platform-tests/streams/count-queuing-strategy.html: Added.
+        * web-platform-tests/streams/count-queuing-strategy.https-expected.txt: Removed.
+        * web-platform-tests/streams/count-queuing-strategy.serviceworker.https-expected.txt: Added.
+        * web-platform-tests/streams/count-queuing-strategy.serviceworker.https.html: Copied from LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.https.html.
+        * web-platform-tests/streams/count-queuing-strategy.sharedworker-expected.txt: Added.
+        * web-platform-tests/streams/count-queuing-strategy.sharedworker.html: Added.
+        * web-platform-tests/streams/generate-test-wrappers.js: Added.
+        (const.arg.of.process.argv.slice):
+        (generateWrapper):
+        * web-platform-tests/streams/piping/close-propagation-backward-expected.txt: Added.
+        * web-platform-tests/streams/piping/close-propagation-backward.dedicatedworker-expected.txt: Added.
+        * web-platform-tests/streams/piping/close-propagation-backward.dedicatedworker.html: Added.
+        * web-platform-tests/streams/piping/close-propagation-backward.html: Added.
+        * web-platform-tests/streams/piping/close-propagation-backward.js: Added.
+        (promise_test):
+        (promise_test.t.const.rs.recordingReadableStream.cancel):
+        (promise_test.t.string_appeared_here.then):
+        (string_appeared_here.promise_test):
+        (Symbol):
+        (promise_test.t.then):
+        * web-platform-tests/streams/piping/close-propagation-backward.serviceworker.https-expected.txt: Added.
+        * web-platform-tests/streams/piping/close-propagation-backward.serviceworker.https.html: Copied from LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.https.html.
+        * web-platform-tests/streams/piping/close-propagation-backward.sharedworker-expected.txt: Added.
+        * web-platform-tests/streams/piping/close-propagation-backward.sharedworker.html: Added.
+        * web-platform-tests/streams/piping/close-propagation-forward-expected.txt: Added.
+        * web-platform-tests/streams/piping/close-propagation-forward.dedicatedworker-expected.txt: Added.
+        * web-platform-tests/streams/piping/close-propagation-forward.dedicatedworker.html: Added.
+        * web-platform-tests/streams/piping/close-propagation-forward.html: Added.
+        * web-platform-tests/streams/piping/close-propagation-forward.js: Added.
+        (promise_test):
+        (promise_test.t.const.rs.recordingReadableStream.start):
+        (promise_test.t.const.ws.recordingWritableStream.close):
+        (promise_test.t.string_appeared_here.then):
+        (string_appeared_here.promise_test):
+        (Symbol):
+        (promise_test.t.return.pipePromise.then):
+        (promise_test.t.setTimeout):
+        * web-platform-tests/streams/piping/close-propagation-forward.serviceworker.https-expected.txt: Added.
+        * web-platform-tests/streams/piping/close-propagation-forward.serviceworker.https.html: Copied from LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.https.html.
+        * web-platform-tests/streams/piping/close-propagation-forward.sharedworker-expected.txt: Added.
+        * web-platform-tests/streams/piping/close-propagation-forward.sharedworker.html: Added.
+        * web-platform-tests/streams/piping/error-propagation-backward-expected.txt: Added.
+        * web-platform-tests/streams/piping/error-propagation-backward.dedicatedworker-expected.txt: Added.
+        * web-platform-tests/streams/piping/error-propagation-backward.dedicatedworker.html: Added.
+        * web-platform-tests/streams/piping/error-propagation-backward.html: Added.
+        * web-platform-tests/streams/piping/error-propagation-backward.js: Added.
+        (promise_test.t.const.ws.recordingWritableStream.start):
+        (promise_test.t.string_appeared_here.then):
+        (promise_test.t.const.ws.recordingWritableStream.write):
+        (promise_test.t.const.rs.recordingReadableStream.cancel):
+        (string_appeared_here.promise_test.t.const.ws.recordingWritableStream.write):
+        (string_appeared_here.promise_test.t.string_appeared_here.then):
+        (Symbol):
+        (promise_test.t.const.rs.recordingReadableStream.start):
+        (promise_test.t.return.pipePromise.then):
+        (promise_test):
+        (promise_test.t.then):
+        (promise_test.t.return.writeCalledPromise.then):
+        * web-platform-tests/streams/piping/error-propagation-backward.serviceworker.https-expected.txt: Added.
+        * web-platform-tests/streams/piping/error-propagation-backward.serviceworker.https.html: Copied from LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.https.html.
+        * web-platform-tests/streams/piping/error-propagation-backward.sharedworker-expected.txt: Added.
+        * web-platform-tests/streams/piping/error-propagation-backward.sharedworker.html: Added.
+        * web-platform-tests/streams/piping/error-propagation-forward-expected.txt: Added.
+        * web-platform-tests/streams/piping/error-propagation-forward.dedicatedworker-expected.txt: Added.
+        * web-platform-tests/streams/piping/error-propagation-forward.dedicatedworker.html: Added.
+        * web-platform-tests/streams/piping/error-propagation-forward.html: Added.
+        * web-platform-tests/streams/piping/error-propagation-forward.js: Added.
+        (promise_test.t.const.rs.recordingReadableStream.start):
+        (promise_test.t.string_appeared_here.then):
+        (promise_test.t.const.ws.recordingWritableStream.abort):
+        (string_appeared_here.promise_test.t.const.rs.recordingReadableStream.start):
+        (string_appeared_here.promise_test.t.string_appeared_here.then):
+        (Symbol):
+        (promise_test.t.return.pipePromise.then):
+        (promise_test.t.setTimeout):
+        (promise_test.t.const.ws.recordingWritableStream.write):
+        (promise_test.t.rs.pipeTo.ws.then):
+        (promise_test.t.return.writeCalledPromise.then):
+        (promise_test.t.then):
+        * web-platform-tests/streams/piping/error-propagation-forward.serviceworker.https-expected.txt: Added.
+        * web-platform-tests/streams/piping/error-propagation-forward.serviceworker.https.html: Copied from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.https.html.
+        * web-platform-tests/streams/piping/error-propagation-forward.sharedworker-expected.txt: Added.
+        * web-platform-tests/streams/piping/error-propagation-forward.sharedworker.html: Added.
+        * web-platform-tests/streams/piping/flow-control-expected.txt: Added.
+        * web-platform-tests/streams/piping/flow-control.dedicatedworker-expected.txt: Added.
+        * web-platform-tests/streams/piping/flow-control.dedicatedworker.html: Added.
+        * web-platform-tests/streams/piping/flow-control.html: Copied from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel.https.html.
+        * web-platform-tests/streams/piping/flow-control.js: Added.
+        (promise_test.t.const.rs.recordingReadableStream.start):
+        (promise_test.t.return.flushAsyncEvents.then):
+        (promise_test.t.string_appeared_here.then):
+        (promise_test):
+        (promise_test.const.rs.recordingReadableStream.):
+        * web-platform-tests/streams/piping/flow-control.serviceworker.https-expected.txt: Added.
+        * web-platform-tests/streams/piping/flow-control.serviceworker.https.html: Copied from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.https.html.
+        * web-platform-tests/streams/piping/flow-control.sharedworker-expected.txt: Added.
+        * web-platform-tests/streams/piping/flow-control.sharedworker.html: Added.
+        * web-platform-tests/streams/piping/general-expected.txt: Added.
+        * web-platform-tests/streams/piping/general.dedicatedworker-expected.txt: Added.
+        * web-platform-tests/streams/piping/general.dedicatedworker.html: Added.
+        * web-platform-tests/streams/piping/general.html: Added.
+        * web-platform-tests/streams/piping/general.js: Added.
+        (test):
+        (promise_test):
+        (promise_test.t.rs.pipeTo.ws.then):
+        (false.promise_test.t.const.rs.new.ReadableStream.pull):
+        (false.promise_test.t.return.rs.pipeTo.new.WritableStream):
+        (false.promise_test.t.const.ws.new.WritableStream.write):
+        * web-platform-tests/streams/piping/general.serviceworker.https-expected.txt: Added.
+        * web-platform-tests/streams/piping/general.serviceworker.https.html: Copied from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.https.html.
+        * web-platform-tests/streams/piping/general.sharedworker-expected.txt: Added.
+        * web-platform-tests/streams/piping/general.sharedworker.html: Added.
+        * web-platform-tests/streams/piping/multiple-propagation-expected.txt: Added.
+        * web-platform-tests/streams/piping/multiple-propagation.dedicatedworker-expected.txt: Added.
+        * web-platform-tests/streams/piping/multiple-propagation.dedicatedworker.html: Added.
+        * web-platform-tests/streams/piping/multiple-propagation.html: Added.
+        * web-platform-tests/streams/piping/multiple-propagation.js: Added.
+        (promise_test.t.const.rs.recordingReadableStream.start):
+        (promise_test.t.const.ws.recordingWritableStream.start):
+        (promise_test.t.string_appeared_here.then):
+        (promise_test):
+        * web-platform-tests/streams/piping/multiple-propagation.serviceworker.https-expected.txt: Added.
+        * web-platform-tests/streams/piping/multiple-propagation.serviceworker.https.html: Copied from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.https.html.
+        * web-platform-tests/streams/piping/multiple-propagation.sharedworker-expected.txt: Added.
+        * web-platform-tests/streams/piping/multiple-propagation.sharedworker.html: Added.
+        * web-platform-tests/streams/piping/pipe-through-expected.txt: Added.
+        * web-platform-tests/streams/piping/pipe-through.dedicatedworker-expected.txt: Added.
+        * web-platform-tests/streams/piping/pipe-through.dedicatedworker.html: Added.
+        * web-platform-tests/streams/piping/pipe-through.html: Copied from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/pipe-through.https.html.
+        * web-platform-tests/streams/piping/pipe-through.js: Added.
+        (duckTypedPassThroughTransform):
+        (promise_test):
+        (promise_test.t.const.transform.writable.new.WritableStream.start):
+        (test):
+        * web-platform-tests/streams/piping/pipe-through.serviceworker.https-expected.txt: Added.
+        * web-platform-tests/streams/piping/pipe-through.serviceworker.https.html: Copied from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.https.html.
+        * web-platform-tests/streams/piping/pipe-through.sharedworker-expected.txt: Added.
+        * web-platform-tests/streams/piping/pipe-through.sharedworker.html: Added.
+        * web-platform-tests/streams/piping/transform-streams-expected.txt: Added.
+        * web-platform-tests/streams/piping/transform-streams.dedicatedworker-expected.txt: Added.
+        * web-platform-tests/streams/piping/transform-streams.dedicatedworker.html: Added.
+        * web-platform-tests/streams/piping/transform-streams.html: Added.
+        * web-platform-tests/streams/piping/transform-streams.js: Added.
+        (promise_test):
+        * web-platform-tests/streams/piping/transform-streams.serviceworker.https-expected.txt: Added.
+        * web-platform-tests/streams/piping/transform-streams.serviceworker.https.html: Copied from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.https.html.
+        * web-platform-tests/streams/piping/transform-streams.sharedworker-expected.txt: Added.
+        * web-platform-tests/streams/piping/transform-streams.sharedworker.html: Added.
+        * web-platform-tests/streams/piping/w3c-import.log: Added.
+        * web-platform-tests/streams/readable-byte-streams/general-expected.txt: Added.
+        * web-platform-tests/streams/readable-byte-streams/general.dedicatedworker-expected.txt: Added.
+        * web-platform-tests/streams/readable-byte-streams/general.dedicatedworker.html: Added.
+        * web-platform-tests/streams/readable-byte-streams/general.html: Added.
+        * web-platform-tests/streams/readable-byte-streams/general.js: Added.
+        (test):
+        (promise_test):
+        (promise_test.t.const.stream.new.ReadableStream.start):
+        (promise_test.t.return.reader.closed.then):
+        (promise_test.t.string_appeared_here.then):
+        (extractViewInfo):
+        (promise_test.t.const.stream.new.ReadableStream.cancel):
+        (promise_test.t.pump):
+        (promise_test.t.const.stream.new.ReadableStream.pull):
+        * web-platform-tests/streams/readable-byte-streams/general.serviceworker.https-expected.txt: Added.
+        * web-platform-tests/streams/readable-byte-streams/general.serviceworker.https.html: Copied from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.https.html.
+        * web-platform-tests/streams/readable-byte-streams/general.sharedworker-expected.txt: Added.
+        * web-platform-tests/streams/readable-byte-streams/general.sharedworker.html: Added.
+        * web-platform-tests/streams/readable-byte-streams/w3c-import.log: Copied from LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-area-element/w3c-import.log.
+        * web-platform-tests/streams/readable-streams/bad-strategies-expected.txt:
+        * web-platform-tests/streams/readable-streams/bad-strategies.dedicatedworker-expected.txt: Added.
+        * web-platform-tests/streams/readable-streams/bad-strategies.dedicatedworker.html: Added.
+        * web-platform-tests/streams/readable-streams/bad-strategies.html: Added.
+        * web-platform-tests/streams/readable-streams/bad-strategies.https-expected.txt: Removed.
+        * web-platform-tests/streams/readable-streams/bad-strategies.serviceworker.https-expected.txt: Added.
+        * web-platform-tests/streams/readable-streams/bad-strategies.serviceworker.https.html: Copied from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.https.html.
+        * web-platform-tests/streams/readable-streams/bad-strategies.sharedworker-expected.txt: Added.
+        * web-platform-tests/streams/readable-streams/bad-strategies.sharedworker.html: Added.
+        * web-platform-tests/streams/readable-streams/bad-underlying-sources-expected.txt:
+        * web-platform-tests/streams/readable-streams/bad-underlying-sources.dedicatedworker-expected.txt: Added.
+        * web-platform-tests/streams/readable-streams/bad-underlying-sources.dedicatedworker.html: Added.
+        * web-platform-tests/streams/readable-streams/bad-underlying-sources.html: Added.
+        * web-platform-tests/streams/readable-streams/bad-underlying-sources.https-expected.txt: Removed.
+        * web-platform-tests/streams/readable-streams/bad-underlying-sources.js:
+        (promise_test.t.const.rs.new.ReadableStream.pull):
+        (promise_test.t.return.Promise.resolve.then):
+        * web-platform-tests/streams/readable-streams/bad-underlying-sources.serviceworker.https-expected.txt: Added.
+        * web-platform-tests/streams/readable-streams/bad-underlying-sources.serviceworker.https.html: Copied from LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.https.html.
+        * web-platform-tests/streams/readable-streams/bad-underlying-sources.sharedworker-expected.txt: Added.
+        * web-platform-tests/streams/readable-streams/bad-underlying-sources.sharedworker.html: Added.
+        * web-platform-tests/streams/readable-streams/brand-checks-expected.txt:
+        * web-platform-tests/streams/readable-streams/brand-checks.dedicatedworker-expected.txt: Added.
+        * web-platform-tests/streams/readable-streams/brand-checks.dedicatedworker.html: Added.
+        * web-platform-tests/streams/readable-streams/brand-checks.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/brand-checks.https.html.
+        * web-platform-tests/streams/readable-streams/brand-checks.https-expected.txt: Removed.
+        * web-platform-tests/streams/readable-streams/brand-checks.serviceworker.https-expected.txt: Added.
+        * web-platform-tests/streams/readable-streams/brand-checks.serviceworker.https.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader.https.html.
+        * web-platform-tests/streams/readable-streams/brand-checks.sharedworker-expected.txt: Added.
+        * web-platform-tests/streams/readable-streams/brand-checks.sharedworker.html: Added.
+        * web-platform-tests/streams/readable-streams/cancel-expected.txt:
+        * web-platform-tests/streams/readable-streams/cancel.dedicatedworker-expected.txt: Added.
+        * web-platform-tests/streams/readable-streams/cancel.dedicatedworker.html: Added.
+        * web-platform-tests/streams/readable-streams/cancel.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel.https.html.
+        * web-platform-tests/streams/readable-streams/cancel.https-expected.txt: Removed.
+        * web-platform-tests/streams/readable-streams/cancel.serviceworker.https-expected.txt: Added.
+        * web-platform-tests/streams/readable-streams/cancel.serviceworker.https.html: Copied from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.https.html.
+        * web-platform-tests/streams/readable-streams/cancel.sharedworker-expected.txt: Added.
+        * web-platform-tests/streams/readable-streams/cancel.sharedworker.html: Added.
+        * web-platform-tests/streams/readable-streams/count-queuing-strategy-integration-expected.txt:
+        * web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.dedicatedworker-expected.txt: Added.
+        * web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.dedicatedworker.html: Added.
+        * web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.html: Added.
+        * web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.https-expected.txt: Removed.
+        * web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.https.html: Removed.
+        * web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.serviceworker.https-expected.txt: Added.
+        * web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.serviceworker.https.html: Copied from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.https.html.
+        * web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.sharedworker-expected.txt: Added.
+        * web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.sharedworker.html: Added.
+        * web-platform-tests/streams/readable-streams/garbage-collection-expected.txt:
+        * web-platform-tests/streams/readable-streams/garbage-collection.dedicatedworker-expected.txt: Added.
+        * web-platform-tests/streams/readable-streams/garbage-collection.dedicatedworker.html: Added.
+        * web-platform-tests/streams/readable-streams/garbage-collection.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/garbage-collection.https.html.
+        * web-platform-tests/streams/readable-streams/garbage-collection.https-expected.txt: Removed.
+        * web-platform-tests/streams/readable-streams/garbage-collection.serviceworker.https-expected.txt: Added.
+        * web-platform-tests/streams/readable-streams/garbage-collection.serviceworker.https.html: Copied from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.https.html.
+        * web-platform-tests/streams/readable-streams/garbage-collection.sharedworker-expected.txt: Added.
+        * web-platform-tests/streams/readable-streams/garbage-collection.sharedworker.html: Added.
+        * web-platform-tests/streams/readable-streams/general-expected.txt:
+        * web-platform-tests/streams/readable-streams/general.dedicatedworker-expected.txt: Added.
+        * web-platform-tests/streams/readable-streams/general.dedicatedworker.html: Added.
+        * web-platform-tests/streams/readable-streams/general.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.https.html.
+        * web-platform-tests/streams/readable-streams/general.https-expected.txt: Removed.
+        * web-platform-tests/streams/readable-streams/general.serviceworker.https-expected.txt: Added.
+        * web-platform-tests/streams/readable-streams/general.serviceworker.https.html: Copied from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.https.html.
+        * web-platform-tests/streams/readable-streams/general.sharedworker-expected.txt: Added.
+        * web-platform-tests/streams/readable-streams/general.sharedworker.html: Added.
+        * web-platform-tests/streams/readable-streams/pipe-through-expected.txt:
+        * web-platform-tests/streams/readable-streams/pipe-through.dedicatedworker-expected.txt: Added.
+        * web-platform-tests/streams/readable-streams/pipe-through.dedicatedworker.html: Added.
+        * web-platform-tests/streams/readable-streams/pipe-through.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/pipe-through.https.html.
+        * web-platform-tests/streams/readable-streams/pipe-through.https-expected.txt: Removed.
+        * web-platform-tests/streams/readable-streams/pipe-through.serviceworker.https-expected.txt: Added.
+        * web-platform-tests/streams/readable-streams/pipe-through.serviceworker.https.html: Copied from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.https.html.
+        * web-platform-tests/streams/readable-streams/pipe-through.sharedworker-expected.txt: Added.
+        * web-platform-tests/streams/readable-streams/pipe-through.sharedworker.html: Added.
+        * web-platform-tests/streams/readable-streams/readable-stream-reader-expected.txt:
+        * web-platform-tests/streams/readable-streams/readable-stream-reader.dedicatedworker-expected.txt: Added.
+        * web-platform-tests/streams/readable-streams/readable-stream-reader.dedicatedworker.html: Added.
+        * web-platform-tests/streams/readable-streams/readable-stream-reader.html: Added.
+        * web-platform-tests/streams/readable-streams/readable-stream-reader.https-expected.txt: Removed.
+        * web-platform-tests/streams/readable-streams/readable-stream-reader.serviceworker.https-expected.txt: Added.
+        * web-platform-tests/streams/readable-streams/readable-stream-reader.serviceworker.https.html: Copied from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.https.html.
+        * web-platform-tests/streams/readable-streams/readable-stream-reader.sharedworker-expected.txt: Added.
+        * web-platform-tests/streams/readable-streams/readable-stream-reader.sharedworker.html: Added.
+        * web-platform-tests/streams/readable-streams/tee-expected.txt:
+        * web-platform-tests/streams/readable-streams/tee.dedicatedworker-expected.txt: Added.
+        * web-platform-tests/streams/readable-streams/tee.dedicatedworker.html: Added.
+        * web-platform-tests/streams/readable-streams/tee.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/tee.https.html.
+        * web-platform-tests/streams/readable-streams/tee.https-expected.txt: Removed.
+        * web-platform-tests/streams/readable-streams/tee.serviceworker.https-expected.txt: Added.
+        * web-platform-tests/streams/readable-streams/tee.serviceworker.https.html: Copied from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.https.html.
+        * web-platform-tests/streams/readable-streams/tee.sharedworker-expected.txt: Added.
+        * web-platform-tests/streams/readable-streams/tee.sharedworker.html: Added.
+        * web-platform-tests/streams/readable-streams/templated-expected.txt:
+        * web-platform-tests/streams/readable-streams/templated.dedicatedworker-expected.txt: Added.
+        * web-platform-tests/streams/readable-streams/templated.dedicatedworker.html: Added.
+        * web-platform-tests/streams/readable-streams/templated.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/templated.https.html.
+        * web-platform-tests/streams/readable-streams/templated.https-expected.txt: Removed.
+        * web-platform-tests/streams/readable-streams/templated.serviceworker.https-expected.txt: Added.
+        * web-platform-tests/streams/readable-streams/templated.serviceworker.https.html: Copied from LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.https.html.
+        * web-platform-tests/streams/readable-streams/templated.sharedworker-expected.txt: Added.
+        * web-platform-tests/streams/readable-streams/templated.sharedworker.html: Added.
+        * web-platform-tests/streams/readable-streams/w3c-import.log:
+        * web-platform-tests/streams/resources/recording-streams.js: Added.
+        (self.recordingReadableStream):
+        (self.recordingWritableStream):
+        * web-platform-tests/streams/resources/rs-test-templates.js:
+        (self.templatedRSEmpty):
+        (self.templatedRSClosed):
+        (self.templatedRSErrored):
+        (self.templatedRSErroredSyncOnly):
+        (self.templatedRSEmptyReader):
+        (self.templatedRSClosedReader):
+        (self.templatedRSErroredReader):
+        (self.templatedRSTwoChunksOpenReader):
+        (self.templatedRSTwoChunksClosedReader):
+        * web-platform-tests/streams/resources/test-initializer.js: Removed.
+        * web-platform-tests/streams/resources/test-utils.js:
+        (self.methodRejects):
+        * web-platform-tests/streams/resources/w3c-import.log:
+        * web-platform-tests/streams/w3c-import.log:
+        * web-platform-tests/test_keys_wdspec.html: Added.
+        * web-platform-tests/url/a-element-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/interfaces-expected.txt:
+        * web-platform-tests/url/setters_tests.json:
+        * web-platform-tests/url/url-constructor-expected.txt:
+        * web-platform-tests/url/url-setters-expected.txt:
+        * web-platform-tests/url/url-tojson-expected.txt:
+        * web-platform-tests/url/urltestdata.json:
+        * web-platform-tests/url/w3c-import.log:
+        * web-platform-tests/user-timing/resources/webperftestharness.js:
+        (has_required_interfaces):
+        * web-platform-tests/user-timing/test_user_timing_clear_marks.html:
+        * web-platform-tests/user-timing/test_user_timing_clear_measures.html:
+        * web-platform-tests/user-timing/test_user_timing_mark.html:
+        * web-platform-tests/user-timing/test_user_timing_mark_exceptions.html:
+        * web-platform-tests/user-timing/test_user_timing_measure.html:
+        * web-platform-tests/user-timing/test_user_timing_measure_exceptions.html:
+        * web-platform-tests/user-timing/test_user_timing_measure_navigation_timing-expected.txt:
+        * web-platform-tests/user-timing/test_user_timing_measure_navigation_timing.html:
+        * web-platform-tests/w3c-import.log:
+        * web-platform-tests/webrtc/datachannel-emptystring-expected.txt:
+        * web-platform-tests/webrtc/no-media-call-expected.txt:
+        * web-platform-tests/webrtc/promises-call-expected.txt:
+
</ins><span class="cx"> 2017-02-11  Chris Dumez  &lt;cdumez@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Implement URL's toJSON()
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cresourcesTestRepositories"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/resources/TestRepositories (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/resources/TestRepositories        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/resources/TestRepositories        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -15,7 +15,7 @@
</span><span class="cx">     {
</span><span class="cx">         &quot;name&quot;: &quot;web-platform-tests&quot;,
</span><span class="cx">         &quot;url&quot;: &quot;https://github.com/w3c/web-platform-tests.git&quot;,
</span><del>-        &quot;revision&quot;: &quot;73f4ad361ca56d890b5f46d62c3bc84371a77e10&quot;,
</del><ins>+        &quot;revision&quot;: &quot;06c6c52e05e05483d3c844168a417ee27a554eb7&quot;,
</ins><span class="cx">         &quot;paths_to_skip&quot;: [
</span><span class="cx">             &quot;conformance-checkers&quot;,
</span><span class="cx">             &quot;docs&quot;,
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cresourcesimportexpectationsjson"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/resources/import-expectations.json (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/resources/import-expectations.json        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/resources/import-expectations.json        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -61,7 +61,7 @@
</span><span class="cx"> [&quot;web-platform-tests/DOM-parsing&quot;, &quot;skip&quot;],
</span><span class="cx"> [&quot;web-platform-tests/FileAPI&quot;, &quot;skip&quot;],
</span><span class="cx"> [&quot;web-platform-tests/IndexedDB&quot;, &quot;import&quot;],
</span><del>-[&quot;web-platform-tests/WebCryptoAPI&quot;, &quot;import&quot;],
</del><ins>+[&quot;web-platform-tests/WebCryptoAPI&quot;, &quot;skip&quot;],
</ins><span class="cx"> [&quot;web-platform-tests/WebIDL&quot;, &quot;import&quot;],
</span><span class="cx"> [&quot;web-platform-tests/WebIDL/invalid&quot;, &quot;skip&quot;],
</span><span class="cx"> [&quot;web-platform-tests/WebIDL/valid&quot;, &quot;skip&quot;],
</span><span class="lines">@@ -90,11 +90,13 @@
</span><span class="cx"> [&quot;web-platform-tests/annotation-vocab&quot;, &quot;skip&quot;],
</span><span class="cx"> [&quot;web-platform-tests/animation-timing&quot;, &quot;skip&quot;],
</span><span class="cx"> [&quot;web-platform-tests/app-uri&quot;, &quot;skip&quot;],
</span><ins>+[&quot;web-platform-tests/assumptions&quot;, &quot;skip&quot;],
</ins><span class="cx"> [&quot;web-platform-tests/auxclick&quot;, &quot;skip&quot;],
</span><span class="cx"> [&quot;web-platform-tests/battery-status&quot;, &quot;skip&quot;],
</span><span class="cx"> [&quot;web-platform-tests/bluetooth&quot;, &quot;skip&quot;],
</span><span class="cx"> [&quot;web-platform-tests/browser-payment-api&quot;, &quot;skip&quot;],
</span><span class="cx"> [&quot;web-platform-tests/clear-site-data&quot;, &quot;skip&quot;],
</span><ins>+[&quot;web-platform-tests/clipboard&quot;, &quot;skip&quot;],
</ins><span class="cx"> [&quot;web-platform-tests/compat&quot;, &quot;skip&quot;],
</span><span class="cx"> [&quot;web-platform-tests/console&quot;, &quot;skip&quot;],
</span><span class="cx"> [&quot;web-platform-tests/content-security-policy&quot;, &quot;skip&quot;],
</span><span class="lines">@@ -199,6 +201,7 @@
</span><span class="cx"> [&quot;web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/&quot;, &quot;skip&quot;],
</span><span class="cx"> [&quot;web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh&quot;, &quot;import&quot;],
</span><span class="cx"> [&quot;web-platform-tests/html/semantics/embedded-content-0&quot;, &quot;skip&quot;],
</span><ins>+[&quot;web-platform-tests/html/semantics/embedded-content/image-maps/image-map-processing-model&quot;, &quot;skip&quot;],
</ins><span class="cx"> [&quot;web-platform-tests/html/semantics/embedded-content/media-elements/error-codes&quot;, &quot;skip&quot;],
</span><span class="cx"> [&quot;web-platform-tests/html/semantics/embedded-content/media-elements/loading-the-media-resource&quot;, &quot;skip&quot;],
</span><span class="cx"> [&quot;web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/cors&quot;, &quot;skip&quot;],
</span><span class="lines">@@ -226,6 +229,7 @@
</span><span class="cx"> [&quot;web-platform-tests/html/semantics/forms/textfieldselection/select-event.html&quot;, &quot;skip&quot;],
</span><span class="cx"> [&quot;web-platform-tests/html/semantics/forms/textfieldselection/textfieldselection-setRangeText.html&quot;, &quot;skip&quot;],
</span><span class="cx"> [&quot;web-platform-tests/html/semantics/interactive-elements/the-details-element/toggleEvent.html&quot;, &quot;skip&quot;],
</span><ins>+[&quot;web-platform-tests/html/semantics/interactive-elements/the-summary-element&quot;, &quot;skip&quot;],
</ins><span class="cx"> [&quot;web-platform-tests/html/semantics/links/links-created-by-a-and-area-elements&quot;, &quot;skip&quot;],
</span><span class="cx"> [&quot;web-platform-tests/html/semantics/scripting-1/the-script-element/script-for-event.xhtml&quot;, &quot;skip&quot;],
</span><span class="cx"> [&quot;web-platform-tests/html/semantics/scripting-1/the-script-element/script-text.xhtml&quot;, &quot;skip&quot;],
</span><span class="lines">@@ -250,6 +254,7 @@
</span><span class="cx"> [&quot;web-platform-tests/mathml&quot;, &quot;skip&quot;],
</span><span class="cx"> [&quot;web-platform-tests/mediacapture-record&quot;, &quot;skip&quot;],
</span><span class="cx"> [&quot;web-platform-tests/mediacapture-streams&quot;, &quot;skip&quot;],
</span><ins>+[&quot;web-platform-tests/mediasession&quot;, &quot;skip&quot;],
</ins><span class="cx"> [&quot;web-platform-tests/microdata&quot;, &quot;skip&quot;],
</span><span class="cx"> [&quot;web-platform-tests/mixed-content&quot;, &quot;skip&quot;],
</span><span class="cx"> [&quot;web-platform-tests/navigation-timing&quot;, &quot;skip&quot;],
</span><span class="lines">@@ -267,6 +272,7 @@
</span><span class="cx"> [&quot;web-platform-tests/proximity&quot;, &quot;skip&quot;],
</span><span class="cx"> [&quot;web-platform-tests/quirks-mode&quot;, &quot;skip&quot;],
</span><span class="cx"> [&quot;web-platform-tests/referrer-policy&quot;, &quot;skip&quot;],
</span><ins>+[&quot;web-platform-tests/remote-playback&quot;, &quot;skip&quot;],
</ins><span class="cx"> [&quot;web-platform-tests/resource-timing&quot;, &quot;import&quot;],
</span><span class="cx"> [&quot;web-platform-tests/screen-orientation&quot;, &quot;skip&quot;],
</span><span class="cx"> [&quot;web-platform-tests/secure-contexts&quot;, &quot;skip&quot;],
</span><span class="lines">@@ -278,6 +284,7 @@
</span><span class="cx"> [&quot;web-platform-tests/shadow-dom/untriaged&quot;, &quot;skip&quot;],
</span><span class="cx"> [&quot;web-platform-tests/subresource-integrity&quot;, &quot;skip&quot;],
</span><span class="cx"> [&quot;web-platform-tests/svg&quot;, &quot;skip&quot;],
</span><ins>+[&quot;web-platform-tests/svg-aam&quot;, &quot;skip&quot;],
</ins><span class="cx"> [&quot;web-platform-tests/testharness_runner.html&quot;, &quot;skip&quot;],
</span><span class="cx"> [&quot;web-platform-tests/touch-events&quot;, &quot;import&quot;],
</span><span class="cx"> [&quot;web-platform-tests/typedarrays&quot;, &quot;skip&quot;],
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cresourcesresourcefilesjson"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/resources/resource-files.json (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/resources/resource-files.json        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/resources/resource-files.json        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -32,6 +32,7 @@
</span><span class="cx">         &quot;web-platform-tests/fetch/api/response/multi-globals/relevant/relevant.html&quot;,
</span><span class="cx">         &quot;web-platform-tests/html/browsers/browsing-the-web/history-traversal/001-1.html&quot;,
</span><span class="cx">         &quot;web-platform-tests/html/browsers/browsing-the-web/history-traversal/001-2.html&quot;,
</span><ins>+        &quot;web-platform-tests/html/browsers/browsing-the-web/history-traversal/browsing_context_name-0.html&quot;,
</ins><span class="cx">         &quot;web-platform-tests/html/browsers/browsing-the-web/history-traversal/browsing_context_name-1.html&quot;,
</span><span class="cx">         &quot;web-platform-tests/html/browsers/browsing-the-web/history-traversal/browsing_context_name-2.html&quot;,
</span><span class="cx">         &quot;web-platform-tests/html/browsers/browsing-the-web/history-traversal/browsing_context_name-3.html&quot;,
</span><span class="lines">@@ -58,6 +59,10 @@
</span><span class="cx">         &quot;web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/click.html&quot;,
</span><span class="cx">         &quot;web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/empty_fragment_iframe.html&quot;,
</span><span class="cx">         &quot;web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/href.html&quot;,
</span><ins>+        &quot;web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit-1.html&quot;,
+        &quot;web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit-2.html&quot;,
+        &quot;web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment-1.html&quot;,
+        &quot;web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment-2.html&quot;,
</ins><span class="cx">         &quot;web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_data_url-1.html&quot;,
</span><span class="cx">         &quot;web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_same_origin-1.html&quot;,
</span><span class="cx">         &quot;web-platform-tests/html/browsers/browsing-the-web/unloading-documents/base.html&quot;,
</span><span class="lines">@@ -189,6 +194,7 @@
</span><span class="cx">         &quot;web-platform-tests/html/browsers/windows/support-post-to-opener.html&quot;,
</span><span class="cx">         &quot;web-platform-tests/html/browsers/windows/support-window-name-echo.html&quot;,
</span><span class="cx">         &quot;web-platform-tests/html/browsers/windows/targeting-multiple-cross-origin-manual.sub.html&quot;,
</span><ins>+        &quot;web-platform-tests/html/dom/dynamic-markup-insertion/document-write/empty.html&quot;,
</ins><span class="cx">         &quot;web-platform-tests/html/dom/dynamic-markup-insertion/document-write/nested-document-write-1.html&quot;,
</span><span class="cx">         &quot;web-platform-tests/html/dom/dynamic-markup-insertion/document-write/nested-document-write-2.html&quot;,
</span><span class="cx">         &quot;web-platform-tests/html/dom/dynamic-markup-insertion/opening-the-input-stream/004-1.html&quot;,
</span><span class="lines">@@ -222,6 +228,8 @@
</span><span class="cx">         &quot;web-platform-tests/html/semantics/embedded-content/the-object-element/test1.html&quot;,
</span><span class="cx">         &quot;web-platform-tests/html/semantics/embedded-content/the-object-element/test2.html&quot;,
</span><span class="cx">         &quot;web-platform-tests/html/semantics/forms/attributes-common-to-form-controls/dirname-ltr-iframe.html&quot;,
</span><ins>+        &quot;web-platform-tests/html/semantics/forms/form-submission-0/form-data-set-usv-form.html&quot;,
+        &quot;web-platform-tests/html/semantics/forms/resetting-a-form/reset-form-event-realm-support.html&quot;,
</ins><span class="cx">         &quot;web-platform-tests/html/semantics/forms/the-button-element/button-activate-frame.html&quot;,
</span><span class="cx">         &quot;web-platform-tests/html/semantics/scripting-1/the-script-element/script-not-executed-after-shutdown-child.html&quot;,
</span><span class="cx">         &quot;web-platform-tests/html/semantics/scripting-1/the-script-element/support/script-onerror-insertion-point-1-helper.html&quot;,
</span><span class="lines">@@ -243,6 +251,7 @@
</span><span class="cx">         &quot;web-platform-tests/html/webappapis/scripting/events/onerroreventhandler-frame.html&quot;,
</span><span class="cx">         &quot;web-platform-tests/mathml/relations/html5-tree/unique-identifier-1-iframe.html&quot;,
</span><span class="cx">         &quot;web-platform-tests/resource-timing/iframe-setdomain.sub.html&quot;,
</span><ins>+        &quot;web-platform-tests/test_keys_wdspec.html&quot;,
</ins><span class="cx">         &quot;web-platform-tests/upgrade-insecure-requests/support/post-origin-to-parent.html&quot;
</span><span class="cx">     ]
</span><span class="cx"> }
</span><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBOWNERS"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/OWNERS (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/OWNERS        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/OWNERS        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,4 +1,4 @@
</span><del>-@Velmont
</del><ins>+@odinho
</ins><span class="cx"> @inexorabletash
</span><span class="cx"> @chunywang
</span><span class="cx"> @dumbmatter
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBbindingsinjectkeyexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/bindings-inject-key-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/bindings-inject-key-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/bindings-inject-key-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+
+PASS Returning keys to script should bypass prototype setters 
+PASS Returning values to script should bypass prototype setters 
+PASS Returning values to script should bypass prototype chain 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBbindingsinjectkeyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/bindings-inject-key.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/bindings-inject-key.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/bindings-inject-key.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,104 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;IndexedDB: ES bindings - Inject a key into a value&lt;/title&gt;
+&lt;meta name=&quot;help&quot; href=&quot;https://w3c.github.io/IndexedDB/#inject-key-into-value&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+indexeddb_test(
+  (t, db) =&gt; {
+    db.createObjectStore('store');
+  },
+  (t, db) =&gt; {
+    const tx = db.transaction('store', 'readwrite');
+    const request = tx.objectStore('store').put(
+        'value', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'key']);
+
+    const setter_called = false;
+    Object.defineProperty(Object.prototype, '10', {
+      configurable: true,
+      set: t.step_func((value) =&gt; { setter_called = true; }),
+    });
+    request.onerror = t.unreached_func('request should not fail');
+    request.onsuccess = t.step_func(() =&gt; {
+      const result = request.result;
+      assert_false(setter_called,
+                   'Setter should not be called for key result.');
+      assert_true(
+          result.hasOwnProperty('10'),
+          'Result should have own-property overriding prototype setter.');
+      assert_equals(result[10], 'key',
+                    'Result should have expected property.');
+
+      delete Object.prototype['10'];
+      t.done();
+    });
+  },
+  'Returning keys to script should bypass prototype setters'
+);
+
+indexeddb_test(
+  (t, db) =&gt; {
+    db.createObjectStore('store', {autoIncrement: true, keyPath: 'id'});
+  },
+  (t, db) =&gt; {
+    const tx = db.transaction('store', 'readwrite');
+    tx.objectStore('store').put({});
+    const request = tx.objectStore('store').get(1);
+
+    const setter_called = false;
+    Object.defineProperty(Object.prototype, 'id', {
+      configurable: true,
+      set: t.step_func(function(value) { setter_called = true; }),
+    });
+    request.onerror = t.unreached_func('request should not fail');
+    request.onsuccess = t.step_func(function() {
+        const result = request.result;
+      assert_false(setter_called,
+                   'Setter should not be called for key result.');
+      assert_true(
+          result.hasOwnProperty('id'),
+          'Result should have own-property overriding prototype setter.');
+      assert_equals(result.id, 1,
+                    'Own property should match primary key generator value');
+
+      delete Object.prototype['id'];
+      t.done();
+    });
+  },
+  'Returning values to script should bypass prototype setters'
+);
+
+indexeddb_test(
+  (t, db) =&gt; {
+    db.createObjectStore('store', {autoIncrement: true, keyPath: 'a.b.c'});
+  },
+  (t, db) =&gt; {
+    const tx = db.transaction('store', 'readwrite');
+    tx.objectStore('store').put({});
+    const request = tx.objectStore('store').get(1);
+
+    Object.prototype.a = {b: {c: 'on proto'}};
+
+    request.onerror = t.unreached_func('request should not fail');
+    request.onsuccess = t.step_func(function() {
+      const result = request.result;
+      assert_true(result.hasOwnProperty('a'),
+                  'Result should have own-properties overriding prototype.');
+      assert_true(result.a.hasOwnProperty('b'),
+                  'Result should have own-properties overriding prototype.');
+      assert_true(result.a.b.hasOwnProperty('c'),
+                  'Result should have own-properties overriding prototype.');
+      assert_equals(result.a.b.c, 1,
+                    'Own property should match primary key generator value');
+      assert_equals(Object.prototype.a.b.c, 'on proto',
+                  'Prototype should not be modified');
+      t.done();
+    });
+  },
+  'Returning values to script should bypass prototype chain'
+);
+
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBclonebeforekeypathevalexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/clone-before-keypath-eval-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/clone-before-keypath-eval-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/clone-before-keypath-eval-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+
+FAIL Key generator and key path validity check operates on a clone assert_equals: put() operation should access primary key property once expected 1 but got 2
+FAIL Failing key path validity check operates on a clone assert_equals: put() operation should access primary key property once expected 1 but got 2
+PASS Index key path evaluations operate on a clone 
+FAIL Store and index key path evaluations operate on the same clone assert_equals: put() should access primary key property once expected 1 but got 2
+FAIL Cursor update checks and keypath evaluations operate on a clone Failed to execute 'update' on 'IDBCursor': The effective object store of this cursor uses in-line keys and evaluating the key path of the value parameter results in a different value than the cursor's effective key.
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBclonebeforekeypathevalhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/clone-before-keypath-eval.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/clone-before-keypath-eval.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/clone-before-keypath-eval.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,135 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;IndexedDB: &lt;/title&gt;
+&lt;meta name=&quot;help&quot; href=&quot;https://w3c.github.io/IndexedDB/#dom-idbobjectstore-put&quot;&gt;
+&lt;meta name=&quot;help&quot; href=&quot;https://w3c.github.io/IndexedDB/#dom-idbcursor-update&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+function ProbeObject() {
+  this.id_count = 0;
+  this.invalid_id_count = 0;
+  this.prop_count = 0;
+  Object.defineProperties(this, {
+    id: {
+      enumerable: true,
+      get() {
+        ++this.id_count;
+        return 1000 + this.id_count;
+      },
+    },
+    invalid_id: {
+      enumerable: true,
+      get() {
+        ++this.invalid_id_count;
+        return {};
+      },
+    },
+    prop: {
+      enumerable: true,
+      get() {
+        ++this.prop_count;
+        return 2000 + this.prop_count;
+      },
+    },
+  });
+}
+
+indexeddb_test(
+  (t, db) =&gt; {
+    db.createObjectStore('store', {keyPath: 'id', autoIncrement: true});
+  },
+  (t, db) =&gt; {
+    const tx = db.transaction('store', 'readwrite');
+    const store = tx.objectStore('store');
+    const obj = new ProbeObject();
+    store.put(obj);
+    assert_equals(
+        obj.id_count, 1,
+        'put() operation should access primary key property once');
+    assert_equals(
+        obj.prop_count, 1,
+        'put() operation should access other properties once');
+    t.done();
+  }, 'Key generator and key path validity check operates on a clone');
+
+indexeddb_test(
+  (t, db) =&gt; {
+    db.createObjectStore('store', {keyPath: 'invalid_id', autoIncrement: true});
+  },
+  (t, db) =&gt; {
+    const tx = db.transaction('store', 'readwrite');
+    const store = tx.objectStore('store');
+    const obj = new ProbeObject();
+    assert_throws('DataError', () =&gt; { store.put(obj); },
+                  'put() should throw if primary key cannot be injected');
+    assert_equals(
+        obj.invalid_id_count, 1,
+        'put() operation should access primary key property once');
+    assert_equals(
+        obj.prop_count, 1,
+        'put() operation should access other properties once');
+    t.done();
+  }, 'Failing key path validity check operates on a clone');
+
+indexeddb_test(
+  (t, db) =&gt; {
+    const store = db.createObjectStore('store');
+    store.createIndex('index', 'prop');
+  },
+  (t, db) =&gt; {
+    const tx = db.transaction('store', 'readwrite');
+    const store = tx.objectStore('store');
+    const obj = new ProbeObject();
+    store.put(obj, 'key');
+    assert_equals(
+        obj.prop_count, 1, 'put() should access index key property once');
+    assert_equals(
+        obj.id_count, 1,
+        'put() operation should access other properties once');
+    t.done();
+  }, 'Index key path evaluations operate on a clone');
+
+indexeddb_test(
+  (t, db) =&gt; {
+    const store = db.createObjectStore('store', {keyPath: 'id'});
+    store.createIndex('index', 'prop');
+  },
+  (t, db) =&gt; {
+    const tx = db.transaction('store', 'readwrite');
+    const store = tx.objectStore('store');
+    const obj = new ProbeObject();
+    store.put(obj);
+    assert_equals(
+        obj.id_count, 1, 'put() should access primary key property once');
+    assert_equals(
+        obj.prop_count, 1, 'put() should access index key property once');
+    t.done();
+  }, 'Store and index key path evaluations operate on the same clone');
+
+indexeddb_test(
+  (t, db) =&gt; {
+    const store = db.createObjectStore('store', {keyPath: 'id'});
+    store.createIndex('index', 'prop');
+  },
+  (t, db) =&gt; {
+    const tx = db.transaction('store', 'readwrite');
+    const store = tx.objectStore('store');
+    store.put(new ProbeObject());
+
+    store.openCursor().onsuccess = t.step_func((event) =&gt; {
+      const cursor = event.target.result;
+
+      const obj = new ProbeObject();
+      cursor.update(obj);
+      assert_equals(
+          obj.id_count, 1, 'put() should access primary key property once');
+      assert_equals(
+          obj.prop_count, 1, 'put() should access index key property once');
+
+      t.done();
+    });
+  }, 'Cursor update checks and keypath evaluations operate on a clone');
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBdeleterequestqueueexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/delete-request-queue-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/delete-request-queue-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/delete-request-queue-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS Deletes are processed in order 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBdeleterequestqueuehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/delete-request-queue.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/delete-request-queue.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/delete-request-queue.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,27 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;IndexedDB: delete requests are processed as a FIFO queue&lt;/title&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://w3c.github.io/IndexedDB/#request-connection-queue&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+let saw;
+indexeddb_test(
+    (t, db) =&gt; {
+        saw = expect(t, ['delete1', 'delete2']);
+        let r = indexedDB.deleteDatabase(db.name);
+        r.onerror = t.unreached_func('delete should succeed');
+        r.onsuccess = t.step_func(e =&gt; saw('delete1'));
+    },
+    (t, db) =&gt; {
+        let r = indexedDB.deleteDatabase(db.name);
+        r.onerror = t.unreached_func('delete should succeed');
+        r.onsuccess = t.step_func(e =&gt; saw('delete2'));
+
+        db.close();
+    },
+    'Deletes are processed in order');
+
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBerrorattributesexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/error-attributes-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/error-attributes-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/error-attributes-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+FAIL IDBRequest and IDBTransaction error properties should be DOMExceptions assert_true: expected true got false
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBerrorattributeshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/error-attributes.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/error-attributes.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/error-attributes.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,38 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;IndexedDB: Error attributes are DOMExceptions&lt;/title&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://w3c.github.io/IndexedDB/#idbrequest&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+indexeddb_test(
+    function(t, db) {
+        db.createObjectStore('store');
+    },
+    function(t, db) {
+        var tx = db.transaction('store', 'readwrite');
+        var store = tx.objectStore('store');
+        var r1 = store.add('value', 'key');
+        r1.onerror = t.unreached_func('first add should succeed');
+
+        var r2 = store.add('value', 'key');
+        r2.onsuccess = t.unreached_func('second add should fail');
+
+        r2.onerror = t.step_func(function() {
+            assert_true(r2.error instanceof DOMException);
+            assert_equals(r2.error.name, 'ConstraintError');
+        });
+
+        tx.oncomplete = t.unreached_func('transaction should not complete');
+        tx.onabort = t.step_func(function() {
+            assert_true(tx.error instanceof DOMException);
+            assert_equals(tx.error.name, 'ConstraintError');
+            t.done();
+        });
+    },
+    'IDBRequest and IDBTransaction error properties should be DOMExceptions'
+);
+
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbbinarykeydetachedexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idb-binary-key-detached-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idb-binary-key-detached-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idb-binary-key-detached-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+FAIL Detached ArrayBuffer assert_throws: function &quot;() =&gt; { store.put('', buffer); }&quot; did not throw
+FAIL Detached TypedArray assert_throws: function &quot;() =&gt; { store.put('', array); }&quot; did not throw
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbbinarykeydetachedhtm"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idb-binary-key-detached.htm (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idb-binary-key-detached.htm                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idb-binary-key-detached.htm        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,51 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;IndexedDB: Detached buffers supplied as binary keys&lt;/title&gt;
+&lt;meta name=&quot;help&quot; href=&quot;http://w3c.github.io/IndexedDB/#convert-a-value-to-a-key&quot;&gt;
+&lt;meta name=&quot;help&quot; href=&quot;https://heycam.github.io/webidl/#dfn-get-buffer-source-copy&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+indexeddb_test(
+  (t, db) =&gt; { db.createObjectStore('store'); },
+  (t, db) =&gt; {
+    const tx = db.transaction('store', 'readwrite');
+    const store = tx.objectStore('store');
+
+    const buffer = new Uint8Array([1,2,3,4]).buffer;
+    assert_equals(buffer.byteLength, 4);
+
+    // Detach the ArrayBuffer by transferring it to a worker.
+    const worker = new Worker(URL.createObjectURL(new Blob([])));
+    worker.postMessage('', [buffer]);
+    assert_equals(buffer.byteLength, 0);
+
+    assert_throws(new TypeError, () =&gt; { store.put('', buffer); });
+    t.done();
+  },
+  'Detached ArrayBuffer'
+);
+
+indexeddb_test(
+  (t, db) =&gt; { db.createObjectStore('store'); },
+  (t, db) =&gt; {
+    const tx = db.transaction('store', 'readwrite');
+    const store = tx.objectStore('store');
+
+    const array = new Uint8Array([1,2,3,4]);
+    assert_equals(array.length, 4);
+
+    // Detach the ArrayBuffer by transferring it to a worker.
+    const worker = new Worker(URL.createObjectURL(new Blob([])));
+    worker.postMessage('', [array.buffer]);
+    assert_equals(array.length, 0);
+
+    assert_throws(new TypeError, () =&gt; { store.put('', array); });
+    t.done();
+  },
+  'Detached TypedArray'
+);
+
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbbinarykeyroundtripexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idb-binary-key-roundtrip-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idb-binary-key-roundtrip-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idb-binary-key-roundtrip-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+
+PASS Binary keys can be supplied using the view type Uint8Array 
+PASS Binary keys can be supplied using the view type Uint8ClampedArray 
+PASS Binary keys can be supplied using the view type Int8Array 
+PASS Binary keys can be supplied using the view type Uint16Array 
+PASS Binary keys can be supplied using the view type Int16Array 
+PASS Binary keys can be supplied using the view type Uint32Array 
+PASS Binary keys can be supplied using the view type Int32Array 
+PASS Binary keys can be supplied using the view type Float32Array 
+PASS Binary keys can be supplied using the view type Float64Array 
+PASS ArrayBuffer can be used to supply a binary key 
+PASS DataView can be used to supply a binary key 
+PASS DataView with explicit offset can be used to supply a binary key 
+PASS DataView with explicit offset and length can be used to supply a binary key 
+PASS Uint8Array with explicit offset can be used to supply a binary key 
+PASS Uint8Array with explicit offset and length can be used to supply a binary key 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbbinarykeyroundtriphtm"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idb-binary-key-roundtrip.htm (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idb-binary-key-roundtrip.htm                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idb-binary-key-roundtrip.htm        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,115 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;IndexedDB: Binary keys written to a database and read back&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+const sample = [0x44, 0x33, 0x22, 0x11, 0xFF, 0xEE, 0xDD, 0xCC];
+const buffer = new Uint8Array(sample).buffer;
+
+function assert_key_valid(a, message) {
+  assert_equals(indexedDB.cmp(a, a), 0, message);
+}
+
+function assert_buffer_equals(a, b, message) {
+  assert_array_equals(
+      Array.from(new Uint8Array(a)), Array.from(new Uint8Array(b)), message);
+}
+
+// Verifies that a JavaScript value round-trips through IndexedDB as a key.
+function check_key_roundtrip_and_done(t, db, key, key_buffer) {
+  const tx = db.transaction('store', 'readwrite');
+  const store = tx.objectStore('store');
+
+  // Verify put with key
+  const put_request = store.put('value', key);
+  put_request.onerror = t.unreached_func('put should succeed');
+
+  // Verify get with key
+  const get_request = store.get(key);
+  get_request.onerror = t.unreached_func('get should succeed');
+  get_request.onsuccess = t.step_func(() =&gt; {
+    assert_equals(
+        get_request.result, 'value',
+        'get should retrieve the value given to put');
+
+    // Verify iteration returning key
+    const cursor_request = store.openCursor();
+    cursor_request.onerror = t.unreached_func('openCursor should succeed');
+    cursor_request.onsuccess = t.step_func(() =&gt; {
+      assert_not_equals(
+          cursor_request.result, null, 'cursor should be present');
+      const retrieved_key = cursor_request.result.key;
+      assert_true(
+          retrieved_key instanceof ArrayBuffer,
+          'IndexedDB binary keys should be returned in ArrayBuffer instances');
+      assert_key_equals(
+          retrieved_key, key,
+          'The key returned by IndexedDB should equal the key given to put()');
+      assert_buffer_equals(
+          retrieved_key, key_buffer,
+          'The ArrayBuffer returned by IndexedDB should equal the buffer ' +
+          'backing the key given to put()');
+
+      t.done();
+    });
+  });
+}
+
+// Checks that IndexedDB handles the given view type for binary keys correctly.
+function view_type_test(type) {
+  indexeddb_test(
+    (t, db) =&gt; { db.createObjectStore('store'); },
+    (t, db) =&gt; {
+      const key = new self[type](buffer);
+      assert_key_valid(key, `${type} should be usable as an IndexedDB key`);
+      assert_key_equals(key, buffer,
+          'Binary keys with the same data but different view types should be ' +
+          ' equal');
+      check_key_roundtrip_and_done(t, db, key, buffer);
+    },
+    `Binary keys can be supplied using the view type ${type}`,
+  );
+}
+
+[
+  'Uint8Array',
+  'Uint8ClampedArray',
+  'Int8Array',
+  'Uint16Array',
+  'Int16Array',
+  'Uint32Array',
+  'Int32Array',
+  'Float32Array',
+  'Float64Array'
+].forEach((type) =&gt; { view_type_test(type); });
+
+// Checks that IndexedDB
+function value_test(value_description, value, value_buffer) {
+  indexeddb_test(
+    (t, db) =&gt; { db.createObjectStore('store'); },
+    (t, db) =&gt; {
+      assert_key_valid(
+          value, value_description + ' should be usable as an valid key');
+      check_key_roundtrip_and_done(t, db, value, value_buffer);
+    },
+    `${value_description} can be used to supply a binary key`
+  );
+}
+
+value_test('ArrayBuffer', buffer, buffer);
+value_test('DataView', new DataView(buffer), buffer);
+value_test('DataView with explicit offset', new DataView(buffer, 3),
+           new Uint8Array([0x11, 0xFF, 0xEE, 0xDD, 0xCC]).buffer);
+value_test('DataView with explicit offset and length',
+           new DataView(buffer, 3, 4),
+           new Uint8Array([0x11, 0xFF, 0xEE, 0xDD]).buffer);
+value_test('Uint8Array with explicit offset', new Uint8Array(buffer, 3),
+           new Uint8Array([0x11, 0xFF, 0xEE, 0xDD, 0xCC]).buffer);
+value_test('Uint8Array with explicit offset and length',
+           new Uint8Array(buffer, 3, 4),
+           new Uint8Array([0x11, 0xFF, 0xEE, 0xDD]).buffer);
+
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbcursoradvanceexceptionorderexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-advance-exception-order-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-advance-exception-order-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-advance-exception-order-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+
+PASS IDBCursor.advance exception order: TypeError vs. TransactionInactiveError 
+PASS IDBCursor.advance exception order: TransactionInactiveError vs. InvalidStateError #1 
+PASS IDBCursor.advance exception order: TransactionInactiveError vs. InvalidStateError #2 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbcursoradvanceexceptionorderhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-advance-exception-order.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-advance-exception-order.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-advance-exception-order.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,91 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;IndexedDB: IDBCursor advance() Exception Ordering&lt;/title&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://w3c.github.io/IndexedDB/#dom-idbcursor-advance&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+indexeddb_test(
+  (t, db) =&gt; {
+    const store = db.createObjectStore('s');
+    store.put('value', 'key');
+  },
+  (t, db) =&gt; {
+    const tx = db.transaction('s');
+    const store = tx.objectStore('s');
+
+    const r = store.openKeyCursor();
+    r.onsuccess = t.step_func(() =&gt; {
+      r.onsuccess = null;
+
+      const cursor = r.result;
+
+      setTimeout(t.step_func(() =&gt; {
+        assert_throws(new TypeError, () =&gt; { cursor.advance(0); },
+                      '&quot;zero&quot; check (TypeError) should precede ' +
+                      '&quot;not active&quot; check (TransactionInactiveError)');
+        t.done();
+      }), 0);
+    });
+  },
+  'IDBCursor.advance exception order: TypeError vs. TransactionInactiveError'
+);
+
+indexeddb_test(
+  (t, db) =&gt; {
+    const store = db.createObjectStore('s');
+
+    const s = db.createObjectStore('s2');
+    s.put('value', 'key');
+
+    const r = s.openKeyCursor();
+    r.onsuccess = t.step_func(() =&gt; {
+      r.onsuccess = null;
+
+      const cursor = r.result;
+      db.deleteObjectStore('s2');
+
+      setTimeout(t.step_func(() =&gt; {
+        assert_throws('TransactionInactiveError', () =&gt; { cursor.advance(1); },
+                      '&quot;not active&quot; check (TransactionInactiveError) ' +
+                      'should precede &quot;deleted&quot; check (InvalidStateError)');
+        t.done();
+      }), 0);
+    });
+  },
+  (t, db) =&gt; {},
+  'IDBCursor.advance exception order: ' +
+  'TransactionInactiveError vs. InvalidStateError #1'
+);
+
+indexeddb_test(
+  (t, db) =&gt; {
+    const store = db.createObjectStore('s');
+    store.put('value', 'key');
+  },
+  (t, db) =&gt; {
+    const tx = db.transaction('s');
+    const store = tx.objectStore('s');
+
+    const r = store.openKeyCursor();
+    r.onsuccess = t.step_func(() =&gt; {
+      r.onsuccess = null;
+
+      const cursor = r.result;
+      cursor.advance(1);
+
+      setTimeout(t.step_func(() =&gt; {
+        assert_throws('TransactionInactiveError', () =&gt; { cursor.advance(1); },
+                      '&quot;not active&quot; check (TransactionInactiveError) ' +
+                      'should precede &quot;got value&quot; check (InvalidStateError)');
+        t.done();
+      }), 0);
+    });
+  },
+  'IDBCursor.advance exception order: ' +
+  'TransactionInactiveError vs. InvalidStateError #2'
+);
+
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbcursorcontinueexceptionorderexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-continue-exception-order-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-continue-exception-order-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-continue-exception-order-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+
+PASS IDBCursor.continue exception order: TransactionInactiveError vs. DataError 
+PASS IDBCursor.continue exception order: TransactionInactiveError vs. InvalidStateError 
+PASS IDBCursor.continue exception order: InvalidStateError vs. DataError 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbcursorcontinueexceptionorderhtm"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-continue-exception-order.htm (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-continue-exception-order.htm                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-continue-exception-order.htm        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,81 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IndexedDB: IDBCursor continue() Exception Ordering&lt;/title&gt;
+&lt;meta charset=utf-8&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://w3c.github.io/IndexedDB/#dom-idbcursor-continue&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+indexeddb_test(
+  (t, db) =&gt; {
+    const s = db.createObjectStore('s');
+    s.put('value', 'key');
+  },
+  (t, db) =&gt; {
+    const s = db.transaction('s', 'readonly').objectStore('s');
+    const r = s.openKeyCursor();
+    r.onsuccess = t.step_func(() =&gt; {
+      r.onsuccess = null;
+      const cursor = r.result;
+      setTimeout(t.step_func(() =&gt; {
+        assert_throws('TransactionInactiveError', () =&gt; {
+          cursor.continue({not: &quot;a valid key&quot;});
+        }, '&quot;Transaction inactive&quot; check (TransactionInactiveError) ' +
+           'should precede &quot;invalid key&quot; check (DataError)');
+        t.done();
+      }), 0);
+    });
+  },
+  'IDBCursor.continue exception order: TransactionInactiveError vs. DataError'
+);
+
+indexeddb_test(
+  (t, db) =&gt; {
+    const s = db.createObjectStore('s');
+    s.put('value', 'key');
+  },
+  (t, db) =&gt; {
+    const s = db.transaction('s', 'readonly').objectStore('s');
+    const r = s.openKeyCursor();
+    r.onsuccess = t.step_func(() =&gt; {
+      r.onsuccess = null;
+      const cursor = r.result;
+      cursor.continue();
+      r.onsuccess = t.step_func(() =&gt; {
+        setTimeout(t.step_func(() =&gt; {
+          assert_throws('TransactionInactiveError', () =&gt; {
+            cursor.continue();
+          }, '&quot;Transaction inactive&quot; check (TransactionInactiveError) ' +
+             'should precede &quot;got value flag&quot; check (InvalidStateError)');
+          t.done();
+        }), 0);
+      });
+    });
+  },
+  'IDBCursor.continue exception order: TransactionInactiveError vs. InvalidStateError'
+);
+
+indexeddb_test(
+  (t, db) =&gt; {
+    const s = db.createObjectStore('s');
+    s.put('value', 'key');
+  },
+  (t, db) =&gt; {
+    const s = db.transaction('s', 'readonly').objectStore('s');
+    const r = s.openKeyCursor();
+    r.onsuccess = t.step_func(() =&gt; {
+      r.onsuccess = null;
+      const cursor = r.result;
+      cursor.continue();
+      assert_throws('InvalidStateError', () =&gt; {
+        cursor.continue({not: &quot;a valid key&quot;});
+      }, '&quot;got value flag&quot; check (InvalidStateError) should precede ' +
+         '&quot;invalid key&quot; check (DataError)');
+      t.done();
+    });
+  },
+  'IDBCursor.continue exception order: InvalidStateError vs. DataError'
+);
+
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbcursorcontinuePrimaryKeyexceptionsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-continuePrimaryKey-exceptions-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-continuePrimaryKey-exceptions-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-continuePrimaryKey-exceptions-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+
+PASS IDBCursor continuePrimaryKey() on object store cursor 
+PASS IDBCursor continuePrimaryKey() on &quot;nextunique&quot; cursor 
+PASS IDBCursor continuePrimaryKey() on &quot;prevunique&quot; cursor 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbcursorcontinuePrimaryKeyexceptionshtm"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-continuePrimaryKey-exceptions.htm (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-continuePrimaryKey-exceptions.htm                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-continuePrimaryKey-exceptions.htm        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,99 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=&quot;utf-8&quot; /&gt;
+&lt;title&gt;IndexedDB: IDBCursor continuePrimaryKey() exception throwing&lt;/title&gt;
+&lt;link rel=&quot;help&quot;
+      href=&quot;https://w3c.github.io/IndexedDB/#dom-idbcursor-continueprimarykey&quot; /&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+async_test(function(t) {
+    var dbname = document.location + '-' + t.name;
+    var del = indexedDB.deleteDatabase(dbname);
+    del.onerror = t.unreached_func('deleteDatabase should succeed');
+    var open = indexedDB.open(dbname);
+    open.onerror = t.unreached_func('open should succeed');
+
+    open.onupgradeneeded = t.step_func(function() {
+        var db = open.result;
+        var store = db.createObjectStore('store');
+        store.put('a', 1).onerror = t.unreached_func('put should not fail');
+        var request = store.openCursor();
+        request.onerror = t.unreached_func('openCursor should not fail');
+        request.onsuccess = t.step_func(function() {
+            var cursor = request.result;
+            assert_class_string(cursor, 'IDBCursorWithValue',
+                'result should be a cursor');
+
+            assert_throws('InvalidAccessError', function() {
+                cursor.continuePrimaryKey(2, 2);
+            }, 'continuePrimaryKey() should throw if source is not an index');
+        });
+    });
+
+    open.onsuccess = t.step_func(function() {
+        var db = open.result;
+        db.close();
+        t.done();
+    });
+
+}, 'IDBCursor continuePrimaryKey() on object store cursor');
+
+[
+    {
+        direction: 'nextunique',
+        expected_key: 1, expected_primaryKey: 'a',
+        continue_key: 2, continue_primaryKey: 'a'
+    },
+    {
+        direction: 'prevunique',
+        expected_key: 3, expected_primaryKey: 'a',
+        continue_key: 2, continue_primaryKey: 'a'
+    }
+].forEach(function(testcase) {
+    async_test(function(t) {
+        var dbname = document.location + '-' + t.name;
+        var del = indexedDB.deleteDatabase(dbname);
+        del.onerror = t.unreached_func('deleteDatabase should succeed');
+        var open = indexedDB.open(dbname);
+        open.onerror = t.unreached_func('open should succeed');
+
+        open.onupgradeneeded = t.step_func(function() {
+            var db = open.result;
+            var store = db.createObjectStore('store', {keyPath: 'pk'});
+            var index = store.createIndex('index', 'ik', {multiEntry: true});
+            store.put({pk: 'a', ik: [1,2,3]}).onerror =
+            t.unreached_func('put should not fail');
+            store.put({pk: 'b', ik: [1,2,3]}).onerror =
+            t.unreached_func('put should not fail');
+            var request = index.openKeyCursor(null, testcase.direction);
+            request.onerror = t.unreached_func('openCursor should not fail');
+            request.onsuccess = t.step_func(function() {
+                var cursor = request.result;
+                assert_class_string(cursor, 'IDBCursor',
+                    'result should be a cursor');
+                assert_equals(cursor.direction, testcase.direction,
+                    'direction should be as specified');
+                assert_equals(cursor.key, testcase.expected_key,
+                    'key should match');
+                assert_equals(cursor.primaryKey, testcase.expected_primaryKey,
+                    'primaryKey should match');
+
+                assert_throws('InvalidAccessError', function() {
+                    cursor.continuePrimaryKey(
+                        testcase.continue_key,
+                        testcase.continue_primaryKey);
+                }, 'continuePrimaryKey() should throw if direction is unique');
+            });
+        });
+
+        open.onsuccess = t.step_func(function() {
+            var db = open.result;
+            db.close();
+            t.done();
+        });
+
+    }, 'IDBCursor continuePrimaryKey() on &quot;' + testcase.direction + '&quot; cursor');
+});
+
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbcursorcontinuePrimaryKeyexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-continuePrimaryKey-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-continuePrimaryKey-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-continuePrimaryKey-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IndexedDB: IDBCursor method continuePrimaryKey() 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbcursorcontinuePrimaryKeyhtm"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-continuePrimaryKey.htm (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-continuePrimaryKey.htm                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-continuePrimaryKey.htm        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,134 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=&quot;utf8&quot;&gt;
+&lt;title&gt;IndexedDB: IDBCursor method continuePrimaryKey()&lt;/title&gt;
+&lt;link rel=&quot;help&quot;
+      href=&quot;http://w3c.github.io/IndexedDB/#dom-idbcursor-continueprimarykey&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+
+indexeddb_test(
+    (t, db, txn) =&gt; {
+      const store = db.createObjectStore('store');
+      const index = store.createIndex('index', 'indexKey', {multiEntry: true});
+
+      store.put({indexKey: ['a', 'b']}, 1);
+      store.put({indexKey: ['a', 'b']}, 2);
+      store.put({indexKey: ['a', 'b']}, 3);
+      store.put({indexKey: ['b']}, 4);
+
+      const expectedIndexEntries = [
+        {key: &quot;a&quot;, primaryKey: 1},
+        {key: &quot;a&quot;, primaryKey: 2},
+        {key: &quot;a&quot;, primaryKey: 3},
+        {key: &quot;b&quot;, primaryKey: 1},
+        {key: &quot;b&quot;, primaryKey: 2},
+        {key: &quot;b&quot;, primaryKey: 3},
+        {key: &quot;b&quot;, primaryKey: 4},
+      ];
+
+      const request = index.openCursor();
+      request.onerror = t.unreached_func('IDBIndex.openCursor should not fail');
+      request.onsuccess = t.step_func(() =&gt; {
+        const cursor = request.result;
+        const expectedEntry = expectedIndexEntries.shift();
+        if (expectedEntry) {
+          assert_equals(cursor.key, expectedEntry.key,
+              'The index entry keys should reflect the object store contents');
+          assert_equals(cursor.primaryKey, expectedEntry.primaryKey,
+              'The index entry primary keys should reflect the object store ' +
+              'contents');
+          cursor.continue();
+        } else {
+          assert_equals(cursor, null,
+              'The index should not have entries that do not reflect the ' +
+              'object store contents');
+        }
+      });
+    },
+    (t, db) =&gt; {
+      const testCases = [
+        // Continuing index key
+        { call: cursor =&gt; { cursor.continue(); },
+          result: { key: &quot;a&quot;, primaryKey: 2 } },
+        { call: cursor =&gt; { cursor.continue('a'); },
+          exception: 'DataError' },
+        { call: cursor =&gt; { cursor.continue('b'); },
+          result: { key: &quot;b&quot;, primaryKey: 1 } },
+        { call: cursor =&gt; { cursor.continue('c'); }, result: null },
+
+        // Called w/ index key and primary key:
+        { call: cursor =&gt; { cursor.continuePrimaryKey('a', 3); },
+          result: { key: 'a', primaryKey: 3 } },
+        { call: cursor =&gt; { cursor.continuePrimaryKey('a', 4); },
+          result: { key: 'b', primaryKey: 1 } },
+        { call: cursor =&gt; { cursor.continuePrimaryKey('b', 1); },
+          result: {key: 'b', primaryKey: 1} },
+        { call: cursor =&gt; { cursor.continuePrimaryKey('b', 4); },
+          result: {key: 'b', primaryKey: 4} },
+        { call: cursor =&gt; { cursor.continuePrimaryKey('b', 5); },
+          result: null },
+        { call: cursor =&gt; { cursor.continuePrimaryKey('c', 1); },
+          result: null },
+
+        // Called w/ primary key but w/o index key
+        { call: cursor =&gt; { cursor.continuePrimaryKey(null, 1); },
+          exception: 'DataError' },
+        { call: cursor =&gt; { cursor.continuePrimaryKey(null, 2); },
+          exception: 'DataError' },
+        { call: cursor =&gt; { cursor.continuePrimaryKey(null, 3); },
+          exception: 'DataError' },
+        { call: cursor =&gt; { cursor.continuePrimaryKey(null, 4); },
+          exception: 'DataError' },
+        { call: cursor =&gt; { cursor.continuePrimaryKey(null, 5); },
+          exception: 'DataError' },
+
+        // Called w/ index key but w/o primary key
+        { call: cursor =&gt; { cursor.continuePrimaryKey('a', null); },
+          exception: 'DataError' },
+      ];
+
+      const verifyContinueCalls = () =&gt; {
+        if (!testCases.length) {
+          t.done();
+          return;
+        }
+
+        const testCase = testCases.shift();
+
+        const txn = db.transaction('store');
+        txn.oncomplete = t.step_func(verifyContinueCalls);
+
+        const request = txn.objectStore('store').index('index').openCursor();
+        let calledContinue = false;
+        request.onerror =
+            t.unreached_func('IDBIndex.openCursor should not fail');
+        request.onsuccess = t.step_func(() =&gt; {
+          const cursor = request.result;
+          if (calledContinue) {
+            if (testCase.result) {
+              assert_equals(cursor.key, testCase.result.key,
+                  `${testCase.call.toString()} - result key`);
+              assert_equals(cursor.primaryKey, testCase.result.primaryKey,
+                  `${testCase.call.toString()} - result primary key`);
+            } else {
+              assert_equals(cursor, null);
+            }
+          } else {
+            calledContinue = true;
+            if('exception' in testCase) {
+              assert_throws(
+                  testCase.exception, () =&gt; { testCase.call(cursor); },
+                  testCase.call.toString());
+            } else {
+              testCase.call(cursor);
+            }
+          }
+        });
+      };
+      verifyContinueCalls();
+    });
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbcursordeleteexceptionorderexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-delete-exception-order-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-delete-exception-order-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-delete-exception-order-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+
+PASS IDBCursor.delete exception order: TransactionInactiveError vs. ReadOnlyError 
+PASS IDBCursor.delete exception order: ReadOnlyError vs. InvalidStateError #1 
+PASS IDBCursor.delete exception order: ReadOnlyError vs. InvalidStateError #2 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbcursordeleteexceptionorderhtm"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-delete-exception-order.htm (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-delete-exception-order.htm                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-delete-exception-order.htm        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,76 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IndexedDB: IDBCursor delete() Exception Ordering&lt;/title&gt;
+&lt;meta charset=utf-8&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://w3c.github.io/IndexedDB/#dom-idbcursor-delete&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+indexeddb_test(
+  (t, db) =&gt; {
+    const s = db.createObjectStore('s');
+    s.put('value', 'key');
+  },
+  (t, db) =&gt; {
+    const s = db.transaction('s', 'readonly').objectStore('s');
+    const r = s.openCursor();
+    r.onsuccess = t.step_func(() =&gt; {
+      r.onsuccess = null;
+      const cursor = r.result;
+      setTimeout(t.step_func(() =&gt; {
+        assert_throws('TransactionInactiveError', () =&gt; {
+          cursor.delete();
+        }, '&quot;Transaction inactive&quot; check (TransactionInactivError) ' +
+           'should precede &quot;read only&quot; check (ReadOnlyError)');
+        t.done();
+      }), 0);
+    });
+  },
+  'IDBCursor.delete exception order: TransactionInactiveError vs. ReadOnlyError'
+);
+
+indexeddb_test(
+  (t, db) =&gt; {
+    const s = db.createObjectStore('s');
+    s.put('value', 'key');
+  },
+  (t, db) =&gt; {
+    const s = db.transaction('s', 'readonly').objectStore('s');
+    const r = s.openCursor();
+    r.onsuccess = t.step_func(() =&gt; {
+      r.onsuccess = null;
+      const cursor = r.result;
+      cursor.continue();
+      assert_throws('ReadOnlyError', () =&gt; {
+        cursor.delete();
+      }, '&quot;Read only&quot; check (ReadOnlyError) should precede ' +
+         '&quot;got value flag&quot; (InvalidStateError) check');
+      t.done();
+    });
+  },
+  'IDBCursor.delete exception order: ReadOnlyError vs. InvalidStateError #1'
+);
+
+indexeddb_test(
+  (t, db) =&gt; {
+    const s = db.createObjectStore('s');
+    s.put('value', 'key');
+  },
+  (t, db) =&gt; {
+    const s = db.transaction('s', 'readonly').objectStore('s');
+    const r = s.openKeyCursor();
+    r.onsuccess = t.step_func(() =&gt; {
+      r.onsuccess = null;
+      const cursor = r.result;
+      assert_throws('ReadOnlyError', () =&gt; {
+        cursor.delete();
+      }, '&quot;Read only&quot; check (ReadOnlyError) should precede ' +
+         '&quot;key only flag&quot; (InvalidStateError) check');
+      t.done();
+    });
+  },
+  'IDBCursor.delete exception order: ReadOnlyError vs. InvalidStateError #2'
+);
+
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbcursorupdateexceptionorderexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-update-exception-order-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-update-exception-order-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-update-exception-order-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+
+PASS IDBCursor.update exception order: TransactionInactiveError vs. ReadOnlyError 
+PASS IDBCursor.update exception order: ReadOnlyError vs. InvalidStateError #1 
+PASS IDBCursor.update exception order: ReadOnlyError vs. InvalidStateError #2 
+PASS IDBCursor.update exception order: InvalidStateError vs. DataError 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbcursorupdateexceptionorderhtm"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-update-exception-order.htm (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-update-exception-order.htm                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-update-exception-order.htm        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,98 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IndexedDB: IDBCursor update() Exception Ordering&lt;/title&gt;
+&lt;meta charset=utf-8&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://w3c.github.io/IndexedDB/#dom-idbcursor-update&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+indexeddb_test(
+  (t, db) =&gt; {
+    const s = db.createObjectStore('s');
+    s.put('value', 'key');
+  },
+  (t, db) =&gt; {
+    const s = db.transaction('s', 'readonly').objectStore('s');
+    const r = s.openCursor();
+    r.onsuccess = t.step_func(() =&gt; {
+      r.onsuccess = null;
+      const cursor = r.result;
+      setTimeout(t.step_func(() =&gt; {
+        assert_throws('TransactionInactiveError', () =&gt; {
+          cursor.update('value2');
+        }, '&quot;Transaction inactive&quot; check (TransactionInactiveError) ' +
+           'should precede &quot;read only&quot; check (ReadOnlyError)');
+        t.done();
+      }), 0);
+    });
+  },
+  'IDBCursor.update exception order: TransactionInactiveError vs. ReadOnlyError'
+);
+
+indexeddb_test(
+  (t, db) =&gt; {
+    const s = db.createObjectStore('s');
+    s.put('value', 'key');
+  },
+  (t, db) =&gt; {
+    const s = db.transaction('s', 'readonly').objectStore('s');
+    const r = s.openCursor();
+    r.onsuccess = t.step_func(() =&gt; {
+      r.onsuccess = null;
+      const cursor = r.result;
+      cursor.continue();
+      assert_throws('ReadOnlyError', () =&gt; {
+        cursor.update('value2');
+      }, '&quot;Read only&quot; check (ReadOnlyError) should precede '+
+         '&quot;got value flag&quot; check (InvalidStateError)');
+      t.done();
+    });
+  },
+  'IDBCursor.update exception order: ReadOnlyError vs. InvalidStateError #1'
+);
+
+indexeddb_test(
+  (t, db) =&gt; {
+    const s = db.createObjectStore('s');
+    s.put('value', 'key');
+  },
+  (t, db) =&gt; {
+    const s = db.transaction('s', 'readonly').objectStore('s');
+    const r = s.openKeyCursor();
+    r.onsuccess = t.step_func(() =&gt; {
+      r.onsuccess = null;
+      const cursor = r.result;
+      assert_throws('ReadOnlyError', () =&gt; {
+        cursor.update('value2');
+      }, '&quot;Read only&quot; check (ReadOnlyError) should precede '+
+         '&quot;key only flag&quot; check (InvalidStateError)');
+      t.done();
+    });
+  },
+  'IDBCursor.update exception order: ReadOnlyError vs. InvalidStateError #2'
+);
+
+indexeddb_test(
+  (t, db) =&gt; {
+    const s = db.createObjectStore('s', {keyPath: 'id'});
+    s.put({id: 123, data: 'value'});
+  },
+  (t, db) =&gt; {
+    const s = db.transaction('s', 'readwrite').objectStore('s');
+    const r = s.openCursor();
+    r.onsuccess = t.step_func(() =&gt; {
+      r.onsuccess = null;
+      const cursor = r.result;
+      cursor.continue();
+      assert_throws('InvalidStateError', () =&gt; {
+        cursor.update({id: 123, data: 'value2'});
+      }, '&quot;Got value flag&quot; check (InvalidStateError) should precede ' +
+         '&quot;modified key&quot; check (DataError)');
+      t.done();
+    });
+  },
+  'IDBCursor.update exception order: InvalidStateError vs. DataError'
+);
+
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbdatabasecreateObjectStoreexceptionorderexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbdatabase-createObjectStore-exception-order-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbdatabase-createObjectStore-exception-order-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbdatabase-createObjectStore-exception-order-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,8 @@
</span><ins>+
+PASS IDBDatabase.createObjectStore exception order: InvalidStateError vs. TransactionInactiveError 
+PASS IDBDatabase.createObjectStore exception order: TransactionInactiveError vs. SyntaxError 
+FAIL IDBDatabase.createObjectStore exception order: SyntaxError vs. ConstraintError assert_throws: &quot;Invalid key path&quot; check (SyntaxError) should precede &quot;duplicate store name&quot; check (ConstraintError) function &quot;() =&gt; {
+      db.createObjectStore('s', {keyPath: 'not a valid key path'});
+    }&quot; threw object &quot;ConstraintError (DOM IDBDatabase Exception): Failed to execute 'createObjectStore' on 'IDBDatabase': An object store with the specified name already exists.&quot; that is not a DOMException SyntaxError: property &quot;code&quot; is equal to 0, expected 12
+PASS IDBDatabase.createObjectStore exception order: ConstraintError vs. InvalidAccessError 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbdatabasecreateObjectStoreexceptionorderhtm"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbdatabase-createObjectStore-exception-order.htm (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbdatabase-createObjectStore-exception-order.htm                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbdatabase-createObjectStore-exception-order.htm        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,80 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IndexedDB: IDBDatabase createObjectStore() Exception Ordering&lt;/title&gt;
+&lt;meta charset=utf-8&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://w3c.github.io/IndexedDB/#dom-idbdatabase-createobjectstore&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+indexeddb_test(
+  (t, db, txn) =&gt; {
+    db.createObjectStore('s');
+
+    txn.onabort = () =&gt; {
+      setTimeout(t.step_func(() =&gt; {
+        assert_throws(
+          'InvalidStateError', () =&gt; { db.createObjectStore('s2'); },
+          '&quot;running an upgrade transaction&quot; check (InvalidStateError) ' +
+          'should precede &quot;not active&quot; check (TransactionInactiveError)');
+
+        t.done();
+      }), 0);
+    };
+    txn.abort();
+  },
+  (t, db) =&gt; { t.assert_unreached('open should fail'); },
+  'IDBDatabase.createObjectStore exception order: ' +
+  'InvalidStateError vs. TransactionInactiveError',
+  { upgrade_will_abort: true }
+);
+
+indexeddb_test(
+  (t, db, txn) =&gt; {
+    const store = db.createObjectStore('s');
+
+    txn.abort();
+
+    assert_throws(
+      'TransactionInactiveError',
+      () =&gt; { db.createObjectStore('s2', {keyPath: '-invalid-'}); },
+      '&quot;not active&quot; check (TransactionInactiveError) should precede ' +
+      '&quot;valid key path&quot; check (SyntaxError)');
+
+    t.done();
+  },
+  (t, db) =&gt; { t.assert_unreached('open should fail'); },
+  'IDBDatabase.createObjectStore exception order: ' +
+  'TransactionInactiveError vs. SyntaxError',
+  { upgrade_will_abort: true }
+);
+
+indexeddb_test(
+  (t, db) =&gt; {
+    db.createObjectStore('s');
+    assert_throws('SyntaxError', () =&gt; {
+      db.createObjectStore('s', {keyPath: 'not a valid key path'});
+    }, '&quot;Invalid key path&quot; check (SyntaxError) should precede ' +
+       '&quot;duplicate store name&quot; check (ConstraintError)');
+    t.done();
+  },
+  (t, db) =&gt; {},
+  'IDBDatabase.createObjectStore exception order: ' +
+  'SyntaxError vs. ConstraintError'
+);
+
+indexeddb_test(
+  (t, db) =&gt; {
+    db.createObjectStore('s');
+    assert_throws('ConstraintError', () =&gt; {
+      db.createObjectStore('s', {autoIncrement: true, keyPath: ''});
+    }, '&quot;already exists&quot; check (ConstraintError) should precede ' +
+       '&quot;autoIncrement vs. keyPath&quot; check (InvalidAccessError)');
+    t.done();
+  },
+  (t, db) =&gt; {},
+  'IDBDatabase.createObjectStore exception order: ' +
+  'ConstraintError vs. InvalidAccessError'
+);
+
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbdatabasedeleteObjectStoreexceptionorderexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbdatabase-deleteObjectStore-exception-order-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbdatabase-deleteObjectStore-exception-order-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbdatabase-deleteObjectStore-exception-order-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+PASS IDBDatabase.deleteObjectStore exception order: InvalidStateError vs. TransactionInactiveError 
+PASS IDBDatabase.deleteObjectStore exception order: TransactionInactiveError vs. NotFoundError 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbdatabasedeleteObjectStoreexceptionorderhtm"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbdatabase-deleteObjectStore-exception-order.htm (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbdatabase-deleteObjectStore-exception-order.htm                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbdatabase-deleteObjectStore-exception-order.htm        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,45 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;IndexedDB: IDBDatabase deleteObjectStore() Exception Ordering&lt;/title&gt;
+&lt;meta charset=utf-8&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://w3c.github.io/IndexedDB/#dom-idbdatabase-deleteobjectstore&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+indexeddb_test(
+  (t, db, txn) =&gt; {
+    db.createObjectStore('s');
+    txn.onabort = () =&gt; {
+      setTimeout(t.step_func(() =&gt; {
+        assert_throws(
+          'InvalidStateError', () =&gt; { db.deleteObjectStore('s'); },
+          '&quot;running an upgrade transaction&quot; check (InvalidStateError) ' +
+          'should precede &quot;not active&quot; check (TransactionInactiveError)');
+        t.done();
+      }), 0);
+    };
+    txn.abort();
+  },
+  (t, db) =&gt; { t.assert_unreached('open should fail'); },
+  'IDBDatabase.deleteObjectStore exception order: ' +
+  'InvalidStateError vs. TransactionInactiveError',
+  { upgrade_will_abort: true }
+);
+
+indexeddb_test(
+  (t, db, txn) =&gt; {
+    txn.abort();
+    assert_throws(
+      'TransactionInactiveError', () =&gt; { db.deleteObjectStore('nope'); },
+      '&quot;not active&quot; check (TransactionInactiveError) should precede ' +
+      '&quot;name in database&quot; check (NotFoundError)');
+    t.done();
+  },
+  (t, db) =&gt; { t.assert_unreached('open should fail'); },
+  'IDBDatabase.deleteObjectStore exception order: ' +
+  'TransactionInactiveError vs. NotFoundError',
+  { upgrade_will_abort: true }
+);
+
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbdatabasetransactionexceptionorderexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbdatabase-transaction-exception-order-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbdatabase-transaction-exception-order-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbdatabase-transaction-exception-order-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+
+PASS IDBDatabase.transaction exception order: InvalidStateError vs. NotFoundError 
+PASS IDBDatabase.transaction exception order: InvalidStateError vs. InvalidAccessError 
+FAIL IDBDatabase.transaction exception order: NotFoundError vs. InvalidAccessError assert_throws: &quot;No such store&quot; check (NotFoundError) should precede &quot;invalid mode&quot; check (InvalidAccessError) function &quot;() =&gt; {
+      db.transaction('no-such-store', 'versionchange');
+    }&quot; threw object &quot;TypeError: Type error&quot; that is not a DOMException NotFoundError: property &quot;code&quot; is equal to undefined, expected 8
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbdatabasetransactionexceptionorderhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbdatabase-transaction-exception-order.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbdatabase-transaction-exception-order.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbdatabase-transaction-exception-order.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,54 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;IndexedDB: IDBDatabase transaction() Exception Ordering&lt;/title&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://w3c.github.io/IndexedDB/#dom-idbdatabase-transaction&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+indexeddb_test(
+  (t, db) =&gt; {
+    db.createObjectStore('s');
+  },
+  (t, db) =&gt; {
+    db.close();
+    assert_throws('InvalidStateError', () =&gt; {
+      db.transaction('no-such-store');
+    }, '&quot;Connection is closed&quot; check (InvalidStateError) should precede ' +
+       '&quot;store names&quot; check (NotFoundError)');
+    t.done();
+  },
+  'IDBDatabase.transaction exception order: InvalidStateError vs. NotFoundError'
+);
+
+indexeddb_test(
+  (t, db) =&gt; {
+    db.createObjectStore('s');
+  },
+  (t, db) =&gt; {
+    db.close();
+    assert_throws('InvalidStateError', () =&gt; {
+      db.transaction([]);
+    }, '&quot;Connection is closed&quot; check (InvalidStateError) should precede ' +
+       '&quot;stores is empty&quot; check (InvalidAccessError)');
+    t.done();
+  },
+  'IDBDatabase.transaction exception order: InvalidStateError vs. InvalidAccessError'
+);
+
+indexeddb_test(
+  (t, db) =&gt; {
+    db.createObjectStore('s');
+  },
+  (t, db) =&gt; {
+    assert_throws('NotFoundError', () =&gt; {
+      db.transaction('no-such-store', 'versionchange');
+    }, '&quot;No such store&quot; check (NotFoundError) should precede ' +
+       '&quot;invalid mode&quot; check (InvalidAccessError)');
+    t.done();
+  },
+  'IDBDatabase.transaction exception order: NotFoundError vs. InvalidAccessError'
+);
+
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbindexgetAllenforcerangeexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbindex-getAll-enforcerange-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbindex-getAll-enforcerange-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbindex-getAll-enforcerange-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBIndex.getAll() uses [EnforceRange] 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbindexgetAllenforcerangehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbindex-getAll-enforcerange.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbindex-getAll-enforcerange.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbindex-getAll-enforcerange.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,27 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;IndexedDB: IDBIndex getAll() uses [EnforceRange]&lt;/title&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://w3c.github.io/IndexedDB/#index-interface&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+indexeddb_test(
+  (t, db) =&gt; {
+    const store = db.createObjectStore('store');
+    const index = store.createIndex('index', 'keyPath');
+  },
+  (t, db) =&gt; {
+    const tx = db.transaction('store');
+    const store = tx.objectStore('store');
+    const index = store.index('index');
+    [NaN, Infinity, -Infinity, -1, -Number.MAX_SAFE_INTEGER].forEach(count =&gt; {
+      assert_throws(TypeError(), () =&gt; { index.getAll(null, count); },
+                    `getAll with count ${count} count should throw TypeError`);
+    });
+    t.done();
+  },
+  `IDBIndex.getAll() uses [EnforceRange]`
+);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbindexgetAllKeysenforcerangeexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbindex-getAllKeys-enforcerange-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbindex-getAllKeys-enforcerange-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbindex-getAllKeys-enforcerange-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBIndex.getAllKeys() uses [EnforceRange] 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbindexgetAllKeysenforcerangehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbindex-getAllKeys-enforcerange.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbindex-getAllKeys-enforcerange.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbindex-getAllKeys-enforcerange.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,27 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;IndexedDB: IDBIndex getAllKeys() uses [EnforceRange]&lt;/title&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://w3c.github.io/IndexedDB/#index-interface&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+indexeddb_test(
+  (t, db) =&gt; {
+    const store = db.createObjectStore('store');
+    const index = store.createIndex('index', 'keyPath');
+  },
+  (t, db) =&gt; {
+    const tx = db.transaction('store');
+    const store = tx.objectStore('store');
+    const index = store.index('index');
+    [NaN, Infinity, -Infinity, -1, -Number.MAX_SAFE_INTEGER].forEach(count =&gt; {
+      assert_throws(TypeError(), () =&gt; { index.getAllKeys(null, count); },
+                    `getAllKeys with count ${count} count should throw TypeError`);
+    });
+    t.done();
+  },
+  `IDBIndex.getAllKeys() uses [EnforceRange]`
+);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbindexqueryexceptionorderexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbindex-query-exception-order-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbindex-query-exception-order-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbindex-query-exception-order-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,14 @@
</span><ins>+
+PASS IDBIndex.get exception order: InvalidStateError vs. TransactionInactiveError 
+FAIL IDBIndex.get exception order: TransactionInactiveError vs. DataError assert_throws: &quot;not active&quot; check (TransactionInactiveError) should precede query check (DataError) function &quot;() =&gt; { index[method]({}); }&quot; threw object &quot;DataError (DOM IDBDatabase Exception): Failed to execute 'get' on 'IDBIndex': The parameter is not a valid key.&quot; that is not a DOMException TransactionInactiveError: property &quot;name&quot; is equal to &quot;DataError&quot;, expected &quot;TransactionInactiveError&quot;
+PASS IDBIndex.getAll exception order: InvalidStateError vs. TransactionInactiveError 
+FAIL IDBIndex.getAll exception order: TransactionInactiveError vs. DataError assert_throws: &quot;not active&quot; check (TransactionInactiveError) should precede query check (DataError) function &quot;() =&gt; { index[method]({}); }&quot; threw object &quot;DataError (DOM IDBDatabase Exception): Failed to execute 'getAll' on 'IDBIndex': The parameter is not a valid key.&quot; that is not a DOMException TransactionInactiveError: property &quot;name&quot; is equal to &quot;DataError&quot;, expected &quot;TransactionInactiveError&quot;
+PASS IDBIndex.getAllKeys exception order: InvalidStateError vs. TransactionInactiveError 
+FAIL IDBIndex.getAllKeys exception order: TransactionInactiveError vs. DataError assert_throws: &quot;not active&quot; check (TransactionInactiveError) should precede query check (DataError) function &quot;() =&gt; { index[method]({}); }&quot; threw object &quot;DataError (DOM IDBDatabase Exception): Failed to execute 'getAllKeys' on 'IDBIndex': The parameter is not a valid key.&quot; that is not a DOMException TransactionInactiveError: property &quot;name&quot; is equal to &quot;DataError&quot;, expected &quot;TransactionInactiveError&quot;
+PASS IDBIndex.count exception order: InvalidStateError vs. TransactionInactiveError 
+FAIL IDBIndex.count exception order: TransactionInactiveError vs. DataError assert_throws: &quot;not active&quot; check (TransactionInactiveError) should precede query check (DataError) function &quot;() =&gt; { index[method]({}); }&quot; threw object &quot;DataError (DOM IDBDatabase Exception): Failed to execute 'count' on 'IDBIndex': The parameter is not a valid key.&quot; that is not a DOMException TransactionInactiveError: property &quot;name&quot; is equal to &quot;DataError&quot;, expected &quot;TransactionInactiveError&quot;
+PASS IDBIndex.openCursor exception order: InvalidStateError vs. TransactionInactiveError 
+FAIL IDBIndex.openCursor exception order: TransactionInactiveError vs. DataError assert_throws: &quot;not active&quot; check (TransactionInactiveError) should precede query check (DataError) function &quot;() =&gt; { index[method]({}); }&quot; threw object &quot;DataError (DOM IDBDatabase Exception): Failed to execute 'openCursor' on 'IDBIndex': The parameter is not a valid key.&quot; that is not a DOMException TransactionInactiveError: property &quot;name&quot; is equal to &quot;DataError&quot;, expected &quot;TransactionInactiveError&quot;
+PASS IDBIndex.openKeyCursor exception order: InvalidStateError vs. TransactionInactiveError 
+FAIL IDBIndex.openKeyCursor exception order: TransactionInactiveError vs. DataError assert_throws: &quot;not active&quot; check (TransactionInactiveError) should precede query check (DataError) function &quot;() =&gt; { index[method]({}); }&quot; threw object &quot;DataError (DOM IDBDatabase Exception): Failed to execute 'openKeyCursor' on 'IDBIndex': The parameter is not a valid key.&quot; that is not a DOMException TransactionInactiveError: property &quot;name&quot; is equal to &quot;DataError&quot;, expected &quot;TransactionInactiveError&quot;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbindexqueryexceptionorderhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbindex-query-exception-order.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbindex-query-exception-order.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbindex-query-exception-order.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,67 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;IndexedDB: IDBIndex query method Ordering&lt;/title&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://w3c.github.io/IndexedDB/#dom-idbindex-get&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://w3c.github.io/IndexedDB/#dom-idbindex-getall&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://w3c.github.io/IndexedDB/#dom-idbindex-getallkeys&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://w3c.github.io/IndexedDB/#dom-idbindex-count&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://w3c.github.io/IndexedDB/#dom-idbindex-opencursor&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://w3c.github.io/IndexedDB/#dom-idbindex-openkeycursor&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+['get',
+ 'getAll',
+ 'getAllKeys',
+ 'count',
+ 'openCursor',
+ 'openKeyCursor'
+].forEach(method =&gt; {
+
+  indexeddb_test(
+    (t, db) =&gt; {
+      const store = db.createObjectStore('s');
+      const store2 = db.createObjectStore('s2');
+      const index = store2.createIndex('i', 'keyPath');
+
+      store2.deleteIndex('i');
+
+      setTimeout(t.step_func(() =&gt; {
+        assert_throws(
+          'InvalidStateError', () =&gt; { index[method]('key'); },
+          '&quot;has been deleted&quot; check (InvalidStateError) should precede ' +
+          '&quot;not active&quot; check (TransactionInactiveError)');
+        t.done();
+      }), 0);
+    },
+    (t, db) =&gt; {},
+    `IDBIndex.${method} exception order: ` +
+    'InvalidStateError vs. TransactionInactiveError'
+  );
+
+  indexeddb_test(
+    (t, db) =&gt; {
+      const store = db.createObjectStore('s');
+      const index = store.createIndex('i', 'keyPath');
+    },
+    (t, db) =&gt; {
+      const tx = db.transaction('s');
+      const store = tx.objectStore('s');
+      const index = store.index('i');
+
+      setTimeout(t.step_func(() =&gt; {
+        assert_throws(
+          'TransactionInactiveError', () =&gt; { index[method]({}); },
+          '&quot;not active&quot; check (TransactionInactiveError) should precede ' +
+          'query check (DataError)');
+        t.done();
+      }), 0);
+    },
+    `IDBIndex.${method} exception order: ` +
+    'TransactionInactiveError vs. DataError'
+  );
+});
+
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbkeyrangeincludesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbkeyrange-includes-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbkeyrange-includes-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbkeyrange-includes-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,9 +1,13 @@
</span><span class="cx"> 
</span><ins>+PASS IDBKeyRange.includes() with invalid input 
</ins><span class="cx"> PASS IDBKeyRange.includes() with a closed range 
</span><span class="cx"> PASS IDBKeyRange.includes() with an open range 
</span><ins>+PASS IDBKeyRange.includes() with a lower-open upper-closed range 
+PASS IDBKeyRange.includes() with a lower-closed upper-open range 
</ins><span class="cx"> PASS IDBKeyRange.includes() with an only range 
</span><span class="cx"> PASS IDBKeyRange.includes() with an closed lower-bounded range 
</span><span class="cx"> PASS IDBKeyRange.includes() with an open lower-bounded range 
</span><span class="cx"> PASS IDBKeyRange.includes() with an closed upper-bounded range 
</span><span class="cx"> PASS IDBKeyRange.includes() with an open upper-bounded range 
</span><ins>+PASS IDBKeyRange.includes() with non-numeric keys 
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbkeyrangeincludeshtm"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbkeyrange-includes.htm (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbkeyrange-includes.htm        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbkeyrange-includes.htm        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,61 +1,140 @@
</span><span class="cx"> &lt;!doctype html&gt;
</span><span class="cx"> &lt;meta charset=utf-8&gt;
</span><del>-&lt;title&gt;&lt;/title&gt;
</del><ins>+&lt;title&gt;IndexedDB: IDBKeyRange.includes()&lt;/title&gt;
+&lt;meta name=&quot;help&quot; href=&quot;https://w3c.github.io/IndexedDB/#keyrange&quot;&gt;
</ins><span class="cx"> &lt;script src=/resources/testharness.js&gt;&lt;/script&gt;
</span><span class="cx"> &lt;script src=/resources/testharnessreport.js&gt;&lt;/script&gt;
</span><span class="cx"> &lt;script&gt;
</span><span class="cx"> 
</span><del>-  test(function() {
-    var closedRange = IDBKeyRange.bound(5, 20);
-    assert_true(!!closedRange.includes, &quot;IDBKeyRange has a .includes&quot;);
-    assert_true(closedRange.includes(7), &quot;in range&quot;);
-    assert_false(closedRange.includes(1), &quot;below range&quot;);
-    assert_false(closedRange.includes(42), &quot;above range&quot;);
-    assert_true(closedRange.includes(5) &amp;&amp; closedRange.includes(20),
-                 &quot;boundary points&quot;);
-    assert_throws(&quot;DataError&quot;, function() { closedRange.includes({}) },
-                  &quot;invalid key&quot;);
-  }, &quot;IDBKeyRange.includes() with a closed range&quot;);
</del><ins>+test(function() {
+  var range = IDBKeyRange.bound(12, 34);
+  assert_throws(new TypeError, function() { range.includes(); },
+      'throws if key is not specified');
</ins><span class="cx"> 
</span><del>-  test(function() {
-    var openRange = IDBKeyRange.bound(5, 20, true, true);
-    assert_false(openRange.includes(5) || openRange.includes(20),
-                 &quot;boundary points&quot;);
-  }, &quot;IDBKeyRange.includes() with an open range&quot;);
</del><ins>+  assert_throws('DataError', function() { range.includes(undefined); },
+      'throws if key is undefined');
+  assert_throws('DataError', function() { range.includes(null); },
+      'throws if key is null');
+  assert_throws('DataError', function() { range.includes({}); },
+      'throws if key is not valid type');
+  assert_throws('DataError', function() { range.includes(NaN); },
+      'throws if key is not valid number');
+  assert_throws('DataError', function() { range.includes(new Date(NaN)); },
+      'throws if key is not valid date');
+  assert_throws('DataError', function() {
+      var a = []; a[0] = a; range.includes(a);
+  }, 'throws if key is not valid array');
+}, &quot;IDBKeyRange.includes() with invalid input&quot;);
</ins><span class="cx"> 
</span><del>-  test(function() {
-    var range = IDBKeyRange.only(42);
-    assert_true(range.includes(42), &quot;in range&quot;);
-    assert_false(range.includes(1), &quot;below range&quot;);
-    assert_false(range.includes(9000), &quot;above range&quot;);
-  }, &quot;IDBKeyRange.includes() with an only range&quot;);
</del><ins>+test(function() {
+  var closedRange = IDBKeyRange.bound(5, 20);
+  assert_true(!!closedRange.includes, &quot;IDBKeyRange has a .includes&quot;);
+  assert_true(closedRange.includes(7), &quot;in range&quot;);
+  assert_false(closedRange.includes(1), &quot;below range&quot;);
+  assert_false(closedRange.includes(42), &quot;above range&quot;);
+  assert_true(closedRange.includes(5.01), &quot;at the lower end of the range&quot;);
+  assert_true(closedRange.includes(19.99), &quot;at the upper end of the range&quot;);
+  assert_false(closedRange.includes(4.99), &quot;right below range&quot;);
+  assert_false(closedRange.includes(21.01), &quot;right above range&quot;);
</ins><span class="cx"> 
</span><del>-  test(function() {
-    var range = IDBKeyRange.lowerBound(5);
-    assert_false(range.includes(4), 'value before closed lower bound');
-    assert_true(range.includes(5), 'value at closed lower bound');
-    assert_true(range.includes(6), 'value after closed lower bound');
-  }, &quot;IDBKeyRange.includes() with an closed lower-bounded range&quot;);
</del><ins>+  assert_true(closedRange.includes(5), &quot;lower boundary&quot;);
+  assert_true(closedRange.includes(20), &quot;upper boundary&quot;);
+}, &quot;IDBKeyRange.includes() with a closed range&quot;);
</ins><span class="cx"> 
</span><del>-  test(function() {
-    var range = IDBKeyRange.lowerBound(5, true);
-    assert_false(range.includes(4), 'value before open lower bound');
-    assert_false(range.includes(5), 'value at open lower bound');
-    assert_true(range.includes(6), 'value after open lower bound');
-  }, &quot;IDBKeyRange.includes() with an open lower-bounded range&quot;);
</del><ins>+test(function() {
+  var closedRange = IDBKeyRange.bound(5, 20, true, true);
+  assert_true(closedRange.includes(7), &quot;in range&quot;);
+  assert_false(closedRange.includes(1), &quot;below range&quot;);
+  assert_false(closedRange.includes(42), &quot;above range&quot;);
+  assert_true(closedRange.includes(5.01), &quot;at the lower end of the range&quot;);
+  assert_true(closedRange.includes(19.99), &quot;at the upper end of the range&quot;);
+  assert_false(closedRange.includes(4.99), &quot;right below range&quot;);
+  assert_false(closedRange.includes(21.01), &quot;right above range&quot;);
</ins><span class="cx"> 
</span><del>-  test(function() {
-    var range = IDBKeyRange.upperBound(5);
-    assert_true(range.includes(4), 'value before closed upper bound');
-    assert_true(range.includes(5), 'value at closed upper bound');
-    assert_false(range.includes(6), 'value after closed upper bound');
-  }, &quot;IDBKeyRange.includes() with an closed upper-bounded range&quot;);
</del><ins>+  assert_false(closedRange.includes(5), &quot;lower boundary&quot;);
+  assert_false(closedRange.includes(20), &quot;upper boundary&quot;);
+}, &quot;IDBKeyRange.includes() with an open range&quot;);
</ins><span class="cx"> 
</span><del>-  test(function() {
-    var range = IDBKeyRange.upperBound(5, true);
-    assert_true(range.includes(4), 'value before open upper bound');
-    assert_false(range.includes(5), 'value at open upper bound');
-    assert_false(range.includes(6), 'value after open upper bound');
-  }, &quot;IDBKeyRange.includes() with an open upper-bounded range&quot;);
</del><ins>+test(function() {
+  var range = IDBKeyRange.bound(5, 20, true);
+  assert_true(range.includes(7), &quot;in range&quot;);
+  assert_false(range.includes(1), &quot;below range&quot;);
+  assert_false(range.includes(42), &quot;above range&quot;);
+  assert_true(range.includes(5.01), &quot;at the lower end of the range&quot;);
+  assert_true(range.includes(19.99), &quot;at the upper end of the range&quot;);
+  assert_false(range.includes(4.99), &quot;right below range&quot;);
+  assert_false(range.includes(21.01), &quot;right above range&quot;);
</ins><span class="cx"> 
</span><ins>+  assert_false(range.includes(5), &quot;lower boundary&quot;);
+  assert_true(range.includes(20), &quot;upper boundary&quot;);
+}, &quot;IDBKeyRange.includes() with a lower-open upper-closed range&quot;);
+
+test(function() {
+  var range = IDBKeyRange.bound(5, 20, false, true);
+  assert_true(range.includes(7), &quot;in range&quot;);
+  assert_false(range.includes(1), &quot;below range&quot;);
+  assert_false(range.includes(42), &quot;above range&quot;);
+  assert_true(range.includes(5.01), &quot;at the lower end of the range&quot;);
+  assert_true(range.includes(19.99), &quot;at the upper end of the range&quot;);
+  assert_false(range.includes(4.99), &quot;right below range&quot;);
+  assert_false(range.includes(21.01), &quot;right above range&quot;);
+
+  assert_true(range.includes(5), &quot;lower boundary&quot;);
+  assert_false(range.includes(20), &quot;upper boundary&quot;);
+}, &quot;IDBKeyRange.includes() with a lower-closed upper-open range&quot;);
+
+test(function() {
+  var onlyRange = IDBKeyRange.only(42);
+  assert_true(onlyRange.includes(42), &quot;in range&quot;);
+  assert_false(onlyRange.includes(1), &quot;below range&quot;);
+  assert_false(onlyRange.includes(9000), &quot;above range&quot;);
+  assert_false(onlyRange.includes(41), &quot;right below range&quot;);
+  assert_false(onlyRange.includes(43), &quot;right above range&quot;);
+}, &quot;IDBKeyRange.includes() with an only range&quot;);
+
+test(function() {
+  var range = IDBKeyRange.lowerBound(5);
+  assert_false(range.includes(4), 'value before closed lower bound');
+  assert_true(range.includes(5), 'value at closed lower bound');
+  assert_true(range.includes(6), 'value after closed lower bound');
+  assert_true(range.includes(42), 'value way after open lower bound');
+}, &quot;IDBKeyRange.includes() with an closed lower-bounded range&quot;);
+
+test(function() {
+  var range = IDBKeyRange.lowerBound(5, true);
+  assert_false(range.includes(4), 'value before open lower bound');
+  assert_false(range.includes(5), 'value at open lower bound');
+  assert_true(range.includes(6), 'value after open lower bound');
+  assert_true(range.includes(42), 'value way after open lower bound');
+}, &quot;IDBKeyRange.includes() with an open lower-bounded range&quot;);
+
+test(function() {
+  var range = IDBKeyRange.upperBound(5);
+  assert_true(range.includes(-42), 'value way before closed upper bound');
+  assert_true(range.includes(4), 'value before closed upper bound');
+  assert_true(range.includes(5), 'value at closed upper bound');
+  assert_false(range.includes(6), 'value after closed upper bound');
+}, &quot;IDBKeyRange.includes() with an closed upper-bounded range&quot;);
+
+test(function() {
+  var range = IDBKeyRange.upperBound(5, true);
+  assert_true(range.includes(-42), 'value way before closed upper bound');
+  assert_true(range.includes(4), 'value before open upper bound');
+  assert_false(range.includes(5), 'value at open upper bound');
+  assert_false(range.includes(6), 'value after open upper bound');
+}, &quot;IDBKeyRange.includes() with an open upper-bounded range&quot;);
+
+test(function(t) {
+    assert_true(IDBKeyRange.bound(new Date(0), new Date())
+        .includes(new Date(102729600000)));
+    assert_false(IDBKeyRange.bound(new Date(0), new Date(1e11))
+        .includes(new Date(1e11 + 1)));
+
+    assert_true(IDBKeyRange.bound('a', 'c').includes('b'));
+    assert_false(IDBKeyRange.bound('a', 'c').includes('d'));
+
+    assert_true(IDBKeyRange.bound([], [[], []]).includes([[]]));
+    assert_false(IDBKeyRange.bound([], [[]]).includes([[[]]]));
+}, 'IDBKeyRange.includes() with non-numeric keys');
+
</ins><span class="cx"> &lt;/script&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbobjectstoreaddputexceptionorderexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-add-put-exception-order-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-add-put-exception-order-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-add-put-exception-order-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,8 @@
</span><ins>+
+PASS IDBObjectStore.put exception order: InvalidStateError vs. TransactionInactiveError 
+PASS IDBObjectStore.put exception order: TransactionInactiveError vs. ReadOnlyError 
+PASS IDBObjectStore.put exception order: ReadOnlyError vs. DataError 
+PASS IDBObjectStore.add exception order: InvalidStateError vs. TransactionInactiveError 
+PASS IDBObjectStore.add exception order: TransactionInactiveError vs. ReadOnlyError 
+PASS IDBObjectStore.add exception order: ReadOnlyError vs. DataError 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbobjectstoreaddputexceptionorderhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-add-put-exception-order.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-add-put-exception-order.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-add-put-exception-order.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,74 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;IndexedDB: IDBObjectStore add()/put() Exception Ordering&lt;/title&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://w3c.github.io/IndexedDB/#dom-idbobjectstore-put&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://w3c.github.io/IndexedDB/#dom-idbobjectstore-add&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+['put', 'add'].forEach(method =&gt; {
+  indexeddb_test(
+    (t, db) =&gt; {
+      const store = db.createObjectStore('s');
+      const store2 = db.createObjectStore('s2');
+
+      db.deleteObjectStore('s2');
+
+      setTimeout(t.step_func(() =&gt; {
+        assert_throws(
+          'InvalidStateError', () =&gt; { store2[method]('key', 'value'); },
+          '&quot;has been deleted&quot; check (InvalidStateError) should precede ' +
+          '&quot;not active&quot; check (TransactionInactiveError)');
+        t.done();
+      }), 0);
+    },
+    (t, db) =&gt; {},
+    `IDBObjectStore.${method} exception order: ` +
+    'InvalidStateError vs. TransactionInactiveError'
+  );
+
+  indexeddb_test(
+    (t, db) =&gt; {
+      const store = db.createObjectStore('s');
+    },
+    (t, db) =&gt; {
+      const tx = db.transaction('s', 'readonly');
+      const store = tx.objectStore('s');
+
+      setTimeout(t.step_func(() =&gt; {
+        assert_throws(
+          'TransactionInactiveError', () =&gt; { store[method]('key', 'value'); },
+          '&quot;not active&quot; check (TransactionInactiveError) should precede ' +
+          '&quot;read only&quot; check (ReadOnlyError)');
+        t.done();
+      }), 0);
+    },
+
+    `IDBObjectStore.${method} exception order: ` +
+    'TransactionInactiveError vs. ReadOnlyError'
+  );
+
+  indexeddb_test(
+    (t, db) =&gt; {
+      const store = db.createObjectStore('s');
+    },
+    (t, db) =&gt; {
+      const tx = db.transaction('s', 'readonly');
+      const store = tx.objectStore('s');
+
+      assert_throws(
+        'ReadOnlyError', () =&gt; { store[method]({}, 'value'); },
+        '&quot;read only&quot; check (ReadOnlyError) should precede ' +
+        'key/data check (DataError)');
+
+      t.done();
+    },
+
+    `IDBObjectStore.${method} exception order: ` +
+    'ReadOnlyError vs. DataError'
+  );
+});
+
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbobjectstoreclearexceptionorderexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-clear-exception-order-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-clear-exception-order-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-clear-exception-order-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+PASS IDBObjectStore.clear exception order: InvalidStateError vs. TransactionInactiveError 
+PASS IDBObjectStore.clear exception order: TransactionInactiveError vs. ReadOnlyError 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbobjectstoreclearexceptionorderhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-clear-exception-order.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-clear-exception-order.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-clear-exception-order.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,51 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;IndexedDB: IDBObjectStore clear() Exception Ordering&lt;/title&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://w3c.github.io/IndexedDB/#dom-idbobjectstore-clear&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+indexeddb_test(
+  (t, db) =&gt; {
+    const store = db.createObjectStore('s');
+    const store2 = db.createObjectStore('s2');
+
+    db.deleteObjectStore('s2');
+
+    setTimeout(t.step_func(() =&gt; {
+      assert_throws(
+        'InvalidStateError', () =&gt; { store2.clear(); },
+        '&quot;has been deleted&quot; check (InvalidStateError) should precede ' +
+        '&quot;not active&quot; check (TransactionInactiveError)');
+      t.done();
+    }), 0);
+  },
+  (t, db) =&gt; {},
+  'IDBObjectStore.clear exception order: ' +
+  'InvalidStateError vs. TransactionInactiveError'
+);
+
+indexeddb_test(
+  (t, db) =&gt; {
+    const store = db.createObjectStore('s');
+  },
+  (t, db) =&gt; {
+    const tx = db.transaction('s', 'readonly');
+    const store = tx.objectStore('s');
+
+    setTimeout(t.step_func(() =&gt; {
+      assert_throws(
+        'TransactionInactiveError', () =&gt; { store.clear(); },
+        '&quot;not active&quot; check (TransactionInactiveError) should precede ' +
+        '&quot;read only&quot; check (ReadOnlyError)');
+      t.done();
+    }), 0);
+  },
+
+  'IDBObjectStore.clear exception order: ' +
+  'TransactionInactiveError vs. ReadOnlyError'
+);
+
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbobjectstoredeleteexceptionorderexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-delete-exception-order-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-delete-exception-order-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-delete-exception-order-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+
+PASS IDBObjectStore.delete exception order: InvalidStateError vs. TransactionInactiveError 
+PASS IDBObjectStore.delete exception order: TransactionInactiveError vs. ReadOnlyError 
+FAIL IDBObjectStore.delete exception order: ReadOnlyError vs. DataError assert_throws: &quot;read only&quot; check (ReadOnlyError) should precede key/data check (DataError) function &quot;() =&gt; { store.delete({}); }&quot; threw object &quot;DataError (DOM IDBDatabase Exception): Failed to execute 'delete' on 'IDBObjectStore': The parameter is not a valid key.&quot; that is not a DOMException ReadOnlyError: property &quot;name&quot; is equal to &quot;DataError&quot;, expected &quot;ReadOnlyError&quot;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbobjectstoredeleteexceptionorderhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-delete-exception-order.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-delete-exception-order.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-delete-exception-order.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,69 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;IndexedDB: IDBObjectStore delete() Exception Ordering&lt;/title&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://w3c.github.io/IndexedDB/#dom-idbobjectstore-delete&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+indexeddb_test(
+  (t, db) =&gt; {
+    const store = db.createObjectStore('s');
+    const store2 = db.createObjectStore('s2');
+
+    db.deleteObjectStore('s2');
+
+    setTimeout(t.step_func(() =&gt; {
+      assert_throws(
+        'InvalidStateError', () =&gt; { store2.delete('key'); },
+        '&quot;has been deleted&quot; check (InvalidStateError) should precede ' +
+        '&quot;not active&quot; check (TransactionInactiveError)');
+      t.done();
+    }), 0);
+  },
+  (t, db) =&gt; {},
+  'IDBObjectStore.delete exception order: ' +
+  'InvalidStateError vs. TransactionInactiveError'
+);
+
+indexeddb_test(
+  (t, db) =&gt; {
+    const store = db.createObjectStore('s');
+  },
+  (t, db) =&gt; {
+    const tx = db.transaction('s', 'readonly');
+    const store = tx.objectStore('s');
+
+    setTimeout(t.step_func(() =&gt; {
+      assert_throws(
+        'TransactionInactiveError', () =&gt; { store.delete('key'); },
+        '&quot;not active&quot; check (TransactionInactiveError) should precede ' +
+        '&quot;read only&quot; check (ReadOnlyError)');
+      t.done();
+    }), 0);
+  },
+  'IDBObjectStore.delete exception order: ' +
+  'TransactionInactiveError vs. ReadOnlyError'
+);
+
+indexeddb_test(
+  (t, db) =&gt; {
+    const store = db.createObjectStore('s');
+  },
+  (t, db) =&gt; {
+    const tx = db.transaction('s', 'readonly');
+    const store = tx.objectStore('s');
+
+    assert_throws(
+      'ReadOnlyError', () =&gt; { store.delete({}); },
+      '&quot;read only&quot; check (ReadOnlyError) should precede ' +
+      'key/data check (DataError)');
+
+    t.done();
+  },
+  'IDBObjectStore.delete exception order: ' +
+  'ReadOnlyError vs. DataError'
+);
+
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbobjectstoredeleteIndexexceptionorderexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-deleteIndex-exception-order-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-deleteIndex-exception-order-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-deleteIndex-exception-order-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+
+PASS IDBObjectStore.deleteIndex exception order: InvalidStateError #1 vs. TransactionInactiveError 
+PASS IDBObjectStore.deleteIndex exception order: InvalidStateError #2 vs. TransactionInactiveError 
+PASS IDBObjectStore.deleteIndex exception order: TransactionInactiveError vs. NotFoundError 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbobjectstoredeleteIndexexceptionorderhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-deleteIndex-exception-order.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-deleteIndex-exception-order.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-deleteIndex-exception-order.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,68 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;IndexedDB: IDBObjectStore deleteIndex() Exception Ordering&lt;/title&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://w3c.github.io/IndexedDB/#dom-idbobjectstore-deleteindex&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+indexeddb_test(
+  (t, db) =&gt; {
+    const store = db.createObjectStore('s');
+    store.createIndex('i', 'keyPath');
+  },
+  (t, db) =&gt; {
+    const tx = db.transaction('s');
+    const store = tx.objectStore('s');
+
+    setTimeout(t.step_func(() =&gt; {
+      assert_throws(
+        'InvalidStateError', () =&gt; { store.deleteIndex('i'); },
+        '&quot;running an upgrade transaction&quot; check (InvalidStateError) ' +
+        'should precede &quot;not active&quot; check (TransactionInactiveError)');
+      t.done();
+    }), 0);
+  },
+  'IDBObjectStore.deleteIndex exception order: ' +
+  'InvalidStateError #1 vs. TransactionInactiveError'
+);
+
+indexeddb_test(
+  (t, db) =&gt; {
+    const store = db.createObjectStore('s');
+    const index = store.createIndex('i', 'keyPath');
+
+    db.deleteObjectStore('s');
+
+    setTimeout(t.step_func(() =&gt; {
+      assert_throws(
+        'InvalidStateError', () =&gt; { store.deleteIndex('i'); },
+        '&quot;deleted&quot; check (InvalidStateError) ' +
+        'should precede &quot;not active&quot; check (TransactionInactiveError)');
+      t.done();
+    }), 0);
+  },
+  (t, db) =&gt; {},
+  'IDBObjectStore.deleteIndex exception order: ' +
+  'InvalidStateError #2 vs. TransactionInactiveError'
+);
+
+indexeddb_test(
+  (t, db) =&gt; {
+    const store = db.createObjectStore('s');
+
+    setTimeout(t.step_func(() =&gt; {
+      assert_throws(
+        'TransactionInactiveError', () =&gt; { store.deleteIndex('nope'); },
+        '&quot;not active&quot; check (TransactionInactiveError) should precede ' +
+        '&quot;name in store&quot; check (NotFoundError)');
+      t.done();
+    }), 0);
+  },
+  (t, db) =&gt; {},
+  'IDBObjectStore.deleteIndex exception order: ' +
+  'TransactionInactiveError vs. NotFoundError'
+);
+
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbobjectstoregetAllenforcerangeexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-getAll-enforcerange-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-getAll-enforcerange-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-getAll-enforcerange-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.getAll() uses [EnforceRange] 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbobjectstoregetAllenforcerangehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-getAll-enforcerange.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-getAll-enforcerange.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-getAll-enforcerange.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,25 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;IndexedDB: IDBObjectStore getAll() uses [EnforceRange]&lt;/title&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://w3c.github.io/IndexedDB/#object-store-interface&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+indexeddb_test(
+  (t, db) =&gt; {
+    const store = db.createObjectStore('store');
+  },
+  (t, db) =&gt; {
+    const tx = db.transaction('store');
+    const store = tx.objectStore('store');
+    [NaN, Infinity, -Infinity, -1, -Number.MAX_SAFE_INTEGER].forEach(count =&gt; {
+      assert_throws(TypeError(), () =&gt; { store.getAll(null, count); },
+                    `getAll with count ${count} count should throw TypeError`);
+    });
+    t.done();
+  },
+  `IDBObjectStore.getAll() uses [EnforceRange]`
+);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbobjectstoregetAllKeysenforcerangeexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-getAllKeys-enforcerange-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-getAllKeys-enforcerange-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-getAllKeys-enforcerange-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBObjectStore.getAllKeys() uses [EnforceRange] 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbobjectstoregetAllKeysenforcerangehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-getAllKeys-enforcerange.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-getAllKeys-enforcerange.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-getAllKeys-enforcerange.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,25 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;IndexedDB: IDBIObjectStore getAllKeys() uses [EnforceRange]&lt;/title&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://w3c.github.io/IndexedDB/#object-store-interface&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+indexeddb_test(
+  (t, db) =&gt; {
+    const store = db.createObjectStore('store');
+  },
+  (t, db) =&gt; {
+    const tx = db.transaction('store');
+    const store = tx.objectStore('store');
+    [NaN, Infinity, -Infinity, -1, -Number.MAX_SAFE_INTEGER].forEach(count =&gt; {
+      assert_throws(TypeError(), () =&gt; { store.getAllKeys(null, count); },
+                    `getAllKeys with count ${count} count should throw TypeError`);
+    });
+    t.done();
+  },
+  `IDBObjectStore.getAllKeys() uses [EnforceRange]`
+);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbobjectstorequeryexceptionorderexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-query-exception-order-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-query-exception-order-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-query-exception-order-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,14 @@
</span><ins>+
+PASS IDBObjectStore.get exception order: InvalidStateError vs. TransactionInactiveError 
+PASS IDBObjectStore.get exception order: TransactionInactiveError vs. DataError 
+PASS IDBObjectStore.getAll exception order: InvalidStateError vs. TransactionInactiveError 
+FAIL IDBObjectStore.getAll exception order: TransactionInactiveError vs. DataError assert_throws: &quot;not active&quot; check (TransactionInactiveError) should precede query check (DataError) function &quot;() =&gt; { store[method]({}); }&quot; threw object &quot;DataError (DOM IDBDatabase Exception): Failed to execute 'getAll' on 'IDBObjectStore': The parameter is not a valid key.&quot; that is not a DOMException TransactionInactiveError: property &quot;name&quot; is equal to &quot;DataError&quot;, expected &quot;TransactionInactiveError&quot;
+PASS IDBObjectStore.getAllKeys exception order: InvalidStateError vs. TransactionInactiveError 
+FAIL IDBObjectStore.getAllKeys exception order: TransactionInactiveError vs. DataError assert_throws: &quot;not active&quot; check (TransactionInactiveError) should precede query check (DataError) function &quot;() =&gt; { store[method]({}); }&quot; threw object &quot;DataError (DOM IDBDatabase Exception): Failed to execute 'getAllKeys' on 'IDBObjectStore': The parameter is not a valid key.&quot; that is not a DOMException TransactionInactiveError: property &quot;name&quot; is equal to &quot;DataError&quot;, expected &quot;TransactionInactiveError&quot;
+PASS IDBObjectStore.count exception order: InvalidStateError vs. TransactionInactiveError 
+FAIL IDBObjectStore.count exception order: TransactionInactiveError vs. DataError assert_throws: &quot;not active&quot; check (TransactionInactiveError) should precede query check (DataError) function &quot;() =&gt; { store[method]({}); }&quot; threw object &quot;DataError (DOM IDBDatabase Exception): Failed to execute 'count' on 'IDBObjectStore': The parameter is not a valid key.&quot; that is not a DOMException TransactionInactiveError: property &quot;name&quot; is equal to &quot;DataError&quot;, expected &quot;TransactionInactiveError&quot;
+PASS IDBObjectStore.openCursor exception order: InvalidStateError vs. TransactionInactiveError 
+FAIL IDBObjectStore.openCursor exception order: TransactionInactiveError vs. DataError assert_throws: &quot;not active&quot; check (TransactionInactiveError) should precede query check (DataError) function &quot;() =&gt; { store[method]({}); }&quot; threw object &quot;DataError (DOM IDBDatabase Exception): Failed to execute 'openCursor' on 'IDBObjectStore': The parameter is not a valid key.&quot; that is not a DOMException TransactionInactiveError: property &quot;name&quot; is equal to &quot;DataError&quot;, expected &quot;TransactionInactiveError&quot;
+PASS IDBObjectStore.openKeyCursor exception order: InvalidStateError vs. TransactionInactiveError 
+FAIL IDBObjectStore.openKeyCursor exception order: TransactionInactiveError vs. DataError assert_throws: &quot;not active&quot; check (TransactionInactiveError) should precede query check (DataError) function &quot;() =&gt; { store[method]({}); }&quot; threw object &quot;DataError (DOM IDBDatabase Exception): Failed to execute 'openKeyCursor' on 'IDBObjectStore': The parameter is not a valid key or key range.&quot; that is not a DOMException TransactionInactiveError: property &quot;name&quot; is equal to &quot;DataError&quot;, expected &quot;TransactionInactiveError&quot;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbobjectstorequeryexceptionorderhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-query-exception-order.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-query-exception-order.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-query-exception-order.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,65 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;IndexedDB: IDBObjectStore query method Ordering&lt;/title&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://w3c.github.io/IndexedDB/#dom-idbobjectstore-get&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://w3c.github.io/IndexedDB/#dom-idbobjectstore-getall&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://w3c.github.io/IndexedDB/#dom-idbobjectstore-getallkeys&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://w3c.github.io/IndexedDB/#dom-idbobjectstore-count&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://w3c.github.io/IndexedDB/#dom-idbobjectstore-opencursor&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://w3c.github.io/IndexedDB/#dom-idbobjectstore-openkeycursor&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+['get',
+ 'getAll',
+ 'getAllKeys',
+ 'count',
+ 'openCursor',
+ 'openKeyCursor'
+].forEach(method =&gt; {
+
+  indexeddb_test(
+    (t, db) =&gt; {
+      const store = db.createObjectStore('s');
+      const store2 = db.createObjectStore('s2');
+
+      db.deleteObjectStore('s2');
+
+      setTimeout(t.step_func(() =&gt; {
+        assert_throws(
+          'InvalidStateError', () =&gt; { store2[method]('key'); },
+          '&quot;has been deleted&quot; check (InvalidStateError) should precede ' +
+          '&quot;not active&quot; check (TransactionInactiveError)');
+
+        t.done();
+      }), 0);
+    },
+    (t, db) =&gt; {},
+    `IDBObjectStore.${method} exception order: ` +
+    'InvalidStateError vs. TransactionInactiveError'
+  );
+
+  indexeddb_test(
+    (t, db) =&gt; {
+      const store = db.createObjectStore('s');
+    },
+    (t, db) =&gt; {
+      const tx = db.transaction('s');
+      const store = tx.objectStore('s');
+
+      setTimeout(t.step_func(() =&gt; {
+        assert_throws(
+          'TransactionInactiveError', () =&gt; { store[method]({}); },
+          '&quot;not active&quot; check (TransactionInactiveError) should precede ' +
+          'query check (DataError)');
+        t.done();
+      }), 0);
+    },
+    `IDBObjectStore.${method} exception order: ` +
+    'TransactionInactiveError vs. DataError'
+  );
+});
+
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbobjectstore_getKeyexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore_getKey-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore_getKey-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore_getKey-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,19 @@
</span><ins>+
+PASS IDBObjectStore.getKey() - invalid parameters 
+PASS IDBObjectStore.getKey() - basic - key 
+PASS IDBObjectStore.getKey() - basic - range 
+PASS IDBObjectStore.getKey() - basic - key - no match 
+PASS IDBObjectStore.getKey() - basic - range - no match 
+PASS IDBObjectStore.getKey() - key path - key 
+PASS IDBObjectStore.getKey() - key path - range 
+PASS IDBObjectStore.getKey() - key path - key - no match 
+PASS IDBObjectStore.getKey() - key path - range - no match 
+PASS IDBObjectStore.getKey() - key generator - key 
+PASS IDBObjectStore.getKey() - key generator - range 
+PASS IDBObjectStore.getKey() - key generator - key - no match 
+PASS IDBObjectStore.getKey() - key generator - range - no match 
+PASS IDBObjectStore.getKey() - key generator and key path - key 
+PASS IDBObjectStore.getKey() - key generator and key path - range 
+PASS IDBObjectStore.getKey() - key generator and key path - key - no match 
+PASS IDBObjectStore.getKey() - key generator and key path - range - no match 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbobjectstore_getKeyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore_getKey.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore_getKey.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore_getKey.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,105 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;IndexedDB: Test IDBObjectStore.getKey()&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+function getkey_test(func, name) {
+    return async_test(function(t) {
+        var del = indexedDB.deleteDatabase(name);
+        del.onerror = t.unreached_func('deleteDatabase failed');
+        var open = indexedDB.open(name);
+        open.onerror = t.unreached_func('open failed');
+        open.onupgradeneeded = t.step_func(function() {
+            var db = open.result;
+
+            var basic = db.createObjectStore('basic');
+            var key_path_store = db.createObjectStore('key path',
+                {keyPath: 'id'});
+            var key_generator_store = db.createObjectStore('key generator',
+                {autoIncrement: true});
+            var key_generator_and_path_store = db.createObjectStore(
+                'key generator and key path',
+                {autoIncrement: true, key_path: 'id'});
+
+            for (var i = 1; i &lt;= 10; ++i) {
+                basic.put('value: ' + i, i);
+                key_path_store.put({id: i});
+                key_generator_store.put('value: ' + i);
+                key_generator_and_path_store.put({});
+            }
+        });
+        open.onsuccess = t.step_func(function() {
+            var db = open.result;
+            func(t, db);
+        });
+    }, name);
+}
+
+getkey_test(function(t, db) {
+    var tx = db.transaction('basic');
+    var store = tx.objectStore('basic');
+    assert_throws(TypeError(), function() { store.getKey(); });
+    assert_throws({name: 'DataError'}, function() { store.getKey(null); });
+    assert_throws({name: 'DataError'}, function() { store.getKey({}); });
+    t.done();
+}, 'IDBObjectStore.getKey() - invalid parameters');
+
+[
+    'basic',
+    'key path',
+    'key generator',
+    'key generator and key path'
+].forEach(function(store_name) {
+
+    getkey_test(function(t, db) {
+        var tx = db.transaction(store_name);
+        var store = tx.objectStore(store_name);
+        var request = store.getKey(5);
+        request.onerror = t.unreached_func('request failed');
+        request.onsuccess = t.step_func(function() {
+            assert_equals(request.result, 5);
+        });
+        tx.onabort = t.unreached_func('transaction aborted');
+        tx.oncomplete = t.step_func(function() { t.done(); });
+    }, 'IDBObjectStore.getKey() - ' + store_name + ' - key');
+
+    getkey_test(function(t, db) {
+        var tx = db.transaction(store_name);
+        var store = tx.objectStore(store_name);
+        var request = store.getKey(IDBKeyRange.lowerBound(4.5));
+        request.onerror = t.unreached_func('request failed');
+        request.onsuccess = t.step_func(function() {
+            assert_equals(request.result, 5);
+        });
+        tx.onabort = t.unreached_func('transaction aborted');
+        tx.oncomplete = t.step_func(function() { t.done(); });
+    }, 'IDBObjectStore.getKey() - ' + store_name + ' - range');
+
+    getkey_test(function(t, db) {
+        var tx = db.transaction(store_name);
+        var store = tx.objectStore(store_name);
+        var request = store.getKey(11);
+        request.onerror = t.unreached_func('request failed');
+        request.onsuccess = t.step_func(function() {
+            assert_equals(request.result, undefined);
+        });
+        tx.onabort = t.unreached_func('transaction aborted');
+        tx.oncomplete = t.step_func(function() { t.done(); });
+    }, 'IDBObjectStore.getKey() - ' + store_name + ' - key - no match');
+
+    getkey_test(function(t, db) {
+        var tx = db.transaction(store_name);
+        var store = tx.objectStore(store_name);
+        var request = store.getKey(IDBKeyRange.lowerBound(11));
+        request.onerror = t.unreached_func('request failed');
+        request.onsuccess = t.step_func(function() {
+            assert_equals(request.result, undefined);
+        });
+        tx.onabort = t.unreached_func('transaction aborted');
+        tx.oncomplete = t.step_func(function() { t.done(); });
+    }, 'IDBObjectStore.getKey() - ' + store_name + ' - range - no match');
+});
+
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbrequestonupgradeneededexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbrequest-onupgradeneeded-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbrequest-onupgradeneeded-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbrequest-onupgradeneeded-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+
+PASS indexedDB.delete called from upgradeneeded handler 
+PASS Abort transaction before deleting database in upgradeneeded handler 
+PASS Abort transaction after deleting database in upgradeneeded event handler 
+PASS transaction oncomplete ordering relative to open request onsuccess 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbrequestonupgradeneededhtm"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbrequest-onupgradeneeded.htm (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbrequest-onupgradeneeded.htm                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbrequest-onupgradeneeded.htm        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,140 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;IndexedDB: UpgradeNeeded Tests&lt;/title&gt;
+&lt;meta name=&quot;help&quot; href=&quot;https://w3c.github.io/IndexedDB/#commit-transaction&quot;&gt;
+&lt;meta name=&quot;help&quot; href=&quot;https://w3c.github.io/IndexedDB/#dom-idbfactory-open&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+function upgradeneeded_test(upgrade_func, success_func, error_func, description) {
+  async_test(function(t) {
+    var dbName = 'db' + self.location.pathname + '-' + description;
+    var delete_request = indexedDB.deleteDatabase(dbName);
+    delete_request.onerror = t.unreached_func('deleteDatabase should not fail');
+    delete_request.onsuccess = t.step_func(function() {
+      var open_request = indexedDB.open(dbName);
+
+      open_request.onupgradeneeded = t.step_func(function() {
+        upgrade_func(t, open_request);
+      });
+      open_request.onsuccess = t.step_func(function() {
+        success_func(t, open_request);
+      });
+      if (error_func) {
+        open_request.onerror = function() { error_func(t, open_request); };
+      } else {
+        open_request.onerror = t.unreached_func('open failed');
+      }
+    });
+  }, description);
+}
+
+(function() {
+  var order = [];
+  upgradeneeded_test(
+    function upgrade(t, request) {
+      order.push('Upgrade');
+      var db = request.result;
+      var deleteRequest = indexedDB.deleteDatabase(db.name);
+      deleteRequest.onsuccess = t.step_func(function() {
+        assert_array_equals(order, ['Upgrade', 'Open Success']);
+        t.done();
+      });
+      deleteRequest.onerror = t.unreached_func('delete failed');
+    },
+    function success(t, request) {
+      var db = request.result;
+      db.close();
+      order.push('Open Success');
+    },
+    null,
+    'indexedDB.delete called from upgradeneeded handler'
+  );
+}());
+
+(function() {
+  var order = [];
+  upgradeneeded_test(
+    function upgrade(t, request) {
+      order.push('Upgrade');
+      request.transaction.abort();
+      order.push('Upgrade Transaction Aborted');
+      var db = request.result;
+      var deleteRequest = indexedDB.deleteDatabase(db.name);
+      deleteRequest.onsuccess = t.step_func(function() {
+        assert_array_equals(
+            order, ['Upgrade', 'Upgrade Transaction Aborted', 'Open Error']);
+        t.done();
+      });
+      deleteRequest.onerror = t.unreached_func('delete failed');
+    },
+    function success(t, request) {
+      t.unreached_func('open should not succeed');
+    },
+    function error_func(t, request) {
+      assert_array_equals(order, ['Upgrade', 'Upgrade Transaction Aborted']);
+      order.push('Open Error');
+    },
+    'Abort transaction before deleting database in upgradeneeded handler'
+  );
+}());
+
+(function() {
+  var order = [];
+  upgradeneeded_test(
+    function upgrade(t, request) {
+      order.push('Upgrade');
+      var db = request.result;
+      var deleteRequest = indexedDB.deleteDatabase(db.name);
+      request.transaction.abort();
+      order.push('Upgrade Transaction Aborted');
+      deleteRequest.onsuccess = t.step_func(function() {
+        assert_array_equals(
+            order, ['Upgrade', 'Upgrade Transaction Aborted', 'Open Error']);
+        t.done();
+      });
+      deleteRequest.onerror = t.unreached_func('delete failed');
+    },
+    function success(t, request) {
+      t.unreached_func('open should not succeed');
+    },
+    function error_func(t, request) {
+      assert_array_equals(order, ['Upgrade', 'Upgrade Transaction Aborted']);
+      order.push('Open Error');
+    },
+    'Abort transaction after deleting database in upgradeneeded event handler'
+  );
+}());
+
+(function() {
+  var order = [];
+  upgradeneeded_test(
+    function upgrade(t, request) {
+      order.push('Upgrade');
+      var db = request.result;
+      db.createObjectStore('store');
+      request.transaction.oncomplete = t.step_func(function() {
+        order.push('Upgrade transaction complete');
+        var txn = db.transaction('store', 'readwrite');
+        var store = txn.objectStore('store');
+        store.put('value', 'key');
+        txn.oncomplete = t.step_func(function() {
+          assert_array_equals(
+              order,
+              ['Upgrade', 'Upgrade transaction complete', 'Open Success']);
+          t.done();
+        });
+        txn.onerror = t.unreached_func('error on transaction');
+        txn.onabort = t.unreached_func('aborting transaction');
+      });
+    },
+    function success(t, request) {
+      order.push('Open Success');
+    },
+    null,
+    'transaction oncomplete ordering relative to open request onsuccess'
+  );
+}());
+
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbtransactionobjectStoreexceptionorderexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbtransaction-objectStore-exception-order-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbtransaction-objectStore-exception-order-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbtransaction-objectStore-exception-order-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS IDBTransaction.objectStore exception order: InvalidStateError vs. NotFoundError 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbtransactionobjectStoreexceptionorderhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbtransaction-objectStore-exception-order.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbtransaction-objectStore-exception-order.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbtransaction-objectStore-exception-order.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,26 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;IndexedDB: IDBTransaction objectStore() Exception Ordering&lt;/title&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://w3c.github.io/IndexedDB/#dom-idbtransaction-objectstore&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+indexeddb_test(
+  (t, db) =&gt; {
+    const store = db.createObjectStore('s');
+  },
+  (t, db) =&gt; {
+    const tx = db.transaction('s');
+    tx.oncomplete = t.step_func(() =&gt; {
+        assert_throws('InvalidStateError', () =&gt; { tx.objectStore('nope'); },
+                      '&quot;finished&quot; check (InvalidStateError) should precede ' +
+                      '&quot;name in scope&quot; check (NotFoundError)');
+      t.done();
+    });
+  },
+  'IDBTransaction.objectStore exception order: InvalidStateError vs. NotFoundError'
+);
+
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbversionchangeeventhtm"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbversionchangeevent.htm (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbversionchangeevent.htm        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbversionchangeevent.htm        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -51,10 +51,28 @@
</span><span class="cx">         var deleterq = indexedDB.deleteDatabase('db');
</span><span class="cx"> 
</span><span class="cx">         deleterq.onsuccess = t.step_func(function(e) {
</span><ins>+            assert_equals(e.result, undefined, &quot;result (delete.success for nonexistent db)&quot;);
</ins><span class="cx">             assert_equals(e.oldVersion, 3, &quot;old version (delete.success)&quot;);
</span><span class="cx">             assert_equals(e.newVersion, null, &quot;new version (delete.success)&quot;);
</span><span class="cx">             assert_true(e instanceof IDBVersionChangeEvent, &quot;delete.success instanceof IDBVersionChangeEvent&quot;);
</span><span class="cx"> 
</span><ins>+            setTimeout(deleteNonExistentDB, 10);
+        });
+
+        // Errors
+        deleterq.onerror = fail(t, &quot;delete.error&quot;);
+        deleterq.onblocked = fail(t, &quot;delete.blocked&quot;);
+    }
+
+    function deleteNonExistentDB (e) {
+        var deleterq = indexedDB.deleteDatabase('db-does-not-exist');
+
+        deleterq.onsuccess = t.step_func(function(e) {
+            assert_equals(e.result, undefined, &quot;result (delete.success for nonexistent db)&quot;);
+            assert_equals(e.oldVersion, 0, &quot;old version (delete.success for nonexistent db)&quot;);
+            assert_equals(e.newVersion, null, &quot;new version (delete.success for nonexistent db)&quot;);
+            assert_true(e instanceof IDBVersionChangeEvent, &quot;delete.success instanceof IDBVersionChangeEvent&quot;);
+
</ins><span class="cx">             setTimeout(function() { t.done(); }, 10);
</span><span class="cx">         });
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBkeyconversionexceptionsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/key-conversion-exceptions-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/key-conversion-exceptions-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/key-conversion-exceptions-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,37 @@
</span><ins>+
+FAIL IDBFactory cmp() static with throwing/invalid keys assert_throws: first key conversion with invalid key should throw DataError function &quot;() =&gt; {
+            receiver[method](invalid_key, throwing_key('getter 2'));
+        }&quot; threw object &quot;getter 2: throwing from getter&quot; that is not a DOMException DataError: property &quot;code&quot; is equal to undefined, expected 0
+FAIL IDBCursor continue() method with throwing/invalid keys assert_throws: key conversion with invalid key should throw DataError function &quot;() =&gt; {
+            receiver[method](invalid_key);
+        }&quot; threw object &quot;InvalidStateError (DOM IDBDatabase Exception 11): Failed to execute 'continue' on 'IDBCursor': The cursor is being iterated or has iterated past its end.&quot; that is not a DOMException DataError: property &quot;code&quot; is equal to 11, expected 0
+PASS IndexedDB: Exceptions thrown during key conversion 
+PASS IDBCursor update() method with throwing/invalid keys 
+PASS IDBKeyRange only() static with throwing/invalid keys 
+PASS IDBKeyRange lowerBound() static with throwing/invalid keys 
+PASS IDBKeyRange upperBound() static with throwing/invalid keys 
+FAIL IDBKeyRange bound() static with throwing/invalid keys assert_throws: first key conversion with invalid key should throw DataError function &quot;() =&gt; {
+            receiver[method](invalid_key, throwing_key('getter 2'));
+        }&quot; threw object &quot;getter 2: throwing from getter&quot; that is not a DOMException DataError: property &quot;code&quot; is equal to undefined, expected 0
+FAIL IDBObjectStore add() method with throwing/invalid keys assert_throws: key conversion with throwing getter should rethrow function &quot;() =&gt; {
+            out_of_line[method]('value', throwing_key('getter'));
+        }&quot; threw object &quot;DataCloneError (DOM IDBDatabase Exception 25): Failed to store record in an IDBObjectStore: An object could not be cloned.&quot; (&quot;DataCloneError&quot;) expected object &quot;[object Object]&quot; (&quot;getter&quot;)
+FAIL IDBObjectStore put() method with throwing/invalid keys assert_throws: key conversion with throwing getter should rethrow function &quot;() =&gt; {
+            out_of_line[method]('value', throwing_key('getter'));
+        }&quot; threw object &quot;DataCloneError (DOM IDBDatabase Exception 25): Failed to store record in an IDBObjectStore: An object could not be cloned.&quot; (&quot;DataCloneError&quot;) expected object &quot;[object Object]&quot; (&quot;getter&quot;)
+PASS IDBObjectStore delete() method with throwing/invalid keys 
+PASS IDBObjectStore get() method with throwing/invalid keys 
+PASS IDBObjectStore getKey() method with throwing/invalid keys 
+PASS IDBObjectStore getAll() method with throwing/invalid keys 
+PASS IDBObjectStore getAllKeys() method with throwing/invalid keys 
+PASS IDBObjectStore count() method with throwing/invalid keys 
+PASS IDBObjectStore openCursor() method with throwing/invalid keys 
+PASS IDBObjectStore openKeyCursor() method with throwing/invalid keys 
+PASS IDBIndex get() method with throwing/invalid keys 
+PASS IDBIndex getKey() method with throwing/invalid keys 
+PASS IDBIndex getAll() method with throwing/invalid keys 
+PASS IDBIndex getAllKeys() method with throwing/invalid keys 
+PASS IDBIndex count() method with throwing/invalid keys 
+PASS IDBIndex openCursor() method with throwing/invalid keys 
+PASS IDBIndex openKeyCursor() method with throwing/invalid keys 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBkeyconversionexceptionshtm"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/key-conversion-exceptions.htm (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/key-conversion-exceptions.htm                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/key-conversion-exceptions.htm        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,194 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;IndexedDB: Exceptions thrown during key conversion&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+// Convenience function for tests that only need to run code in onupgradeneeded.
+function indexeddb_upgrade_only_test(upgrade_callback, description) {
+  indexeddb_test(upgrade_callback, t =&gt; { t.done(); }, description);
+}
+
+// Key that throws during conversion.
+function throwing_key(name) {
+    var throws = [];
+    throws.length = 1;
+    Object.defineProperty(throws, '0', {get: function() {
+        var err = new Error('throwing from getter');
+        err.name = name;
+        throw err;
+    }, enumerable: true});
+    return throws;
+}
+
+var valid_key = [];
+var invalid_key = {};
+
+// Calls method on receiver with the specified number of args (default 1)
+// and asserts that the method fails appropriately (rethrowing if
+// conversion throws, or DataError if not a valid key), and that
+// the first argument is fully processed before the second argument
+// (if appropriate).
+function check_method(receiver, method, args) {
+    args = args || 1;
+    if (args &lt; 2) {
+        assert_throws({name:'getter'}, () =&gt; {
+            receiver[method](throwing_key('getter'));
+        }, 'key conversion with throwing getter should rethrow');
+
+        assert_throws('DataError', () =&gt; {
+            receiver[method](invalid_key);
+        }, 'key conversion with invalid key should throw DataError');
+    } else {
+        assert_throws({name:'getter 1'}, () =&gt; {
+            receiver[method](throwing_key('getter 1'), throwing_key('getter 2'));
+        }, 'first key conversion with throwing getter should rethrow');
+
+        assert_throws('DataError', () =&gt; {
+            receiver[method](invalid_key, throwing_key('getter 2'));
+        }, 'first key conversion with invalid key should throw DataError');
+
+        assert_throws({name:'getter 2'}, () =&gt; {
+            receiver[method](valid_key, throwing_key('getter 2'));
+        }, 'second key conversion with throwing getter should rethrow');
+
+        assert_throws('DataError', () =&gt; {
+            receiver[method](valid_key, invalid_key);
+        }, 'second key conversion with invalid key should throw DataError');
+    }
+}
+
+// Static key comparison utility on IDBFactory.
+test(t =&gt; {
+    check_method(indexedDB, 'cmp', 2);
+}, 'IDBFactory cmp() static with throwing/invalid keys');
+
+// Continue methods on IDBCursor.
+indexeddb_upgrade_only_test((t, db) =&gt; {
+    var store = db.createObjectStore('store');
+    store.put('a', 1).onerror = t.unreached_func('put should succeed');
+
+    var request = store.openCursor();
+    request.onerror = t.unreached_func('openCursor should succeed');
+    request.onsuccess = t.step_func(() =&gt; {
+        var cursor = request.result;
+        assert_not_equals(cursor, null, 'cursor should find a value');
+        check_method(cursor, 'continue');
+    });
+}, 'IDBCursor continue() method with throwing/invalid keys');
+
+indexeddb_upgrade_only_test((t, db) =&gt; {
+    var store = db.createObjectStore('store');
+    var index = store.createIndex('index', 'prop');
+    store.put({prop: 'a'}, 1).onerror = t.unreached_func('put should succeed');
+
+    var request = index.openCursor();
+    request.onerror = t.unreached_func('openCursor should succeed');
+    request.onsuccess = t.step_func(() =&gt; {
+        var cursor = request.result;
+        assert_not_equals(cursor, null, 'cursor should find a value');
+
+        check_method(cursor, 'continuePrimaryKey', 2);
+    });
+}, null, 'IDBCursor continuePrimaryKey() method with throwing/invalid keys');
+
+// Mutation methods on IDBCursor.
+indexeddb_upgrade_only_test((t, db) =&gt; {
+    var store = db.createObjectStore('store', {keyPath: 'prop'});
+    store.put({prop: 1}).onerror = t.unreached_func('put should succeed');
+
+    var request = store.openCursor();
+    request.onerror = t.unreached_func('openCursor should succeed');
+    request.onsuccess = t.step_func(() =&gt; {
+        var cursor = request.result;
+        assert_not_equals(cursor, null, 'cursor should find a value');
+
+        var value = {};
+        value.prop = throwing_key('getter');
+        assert_throws({name: 'getter'}, () =&gt; {
+            cursor.update(value);
+        }, 'throwing getter should rethrow during clone');
+
+        // Throwing from the getter during key conversion is
+        // not possible since (1) a clone is used, (2) only own
+        // properties are cloned, and (3) only own properties
+        // are used for key path evaluation.
+
+        value.prop = invalid_key;
+        assert_throws('DataError', () =&gt; {
+            cursor.update(value);
+        }, 'key conversion with invalid key should throw DataError');
+    });
+}, 'IDBCursor update() method with throwing/invalid keys');
+
+// Static constructors on IDBKeyRange
+['only', 'lowerBound', 'upperBound'].forEach(method =&gt; {
+    test(t =&gt; {
+        check_method(IDBKeyRange, method);
+    }, 'IDBKeyRange ' + method + '() static with throwing/invalid keys');
+});
+
+test(t =&gt; {
+    check_method(IDBKeyRange, 'bound', 2);
+}, 'IDBKeyRange bound() static with throwing/invalid keys');
+
+// Insertion methods on IDBObjectStore.
+['add', 'put'].forEach(method =&gt; {
+    indexeddb_upgrade_only_test((t, db) =&gt; {
+        var out_of_line = db.createObjectStore('out-of-line keys');
+        var in_line = db.createObjectStore('in-line keys', {keyPath: 'prop'});
+
+        assert_throws({name:'getter'}, () =&gt; {
+            out_of_line[method]('value', throwing_key('getter'));
+        }, 'key conversion with throwing getter should rethrow');
+
+        assert_throws('DataError', () =&gt; {
+            out_of_line[method]('value', invalid_key);
+        }, 'key conversion with invalid key should throw DataError');
+
+        var value = {};
+        value.prop = throwing_key('getter');
+        assert_throws({name:'getter'}, () =&gt; {
+            in_line[method](value);
+        }, 'throwing getter should rethrow during clone');
+
+        // Throwing from the getter during key conversion is
+        // not possible since (1) a clone is used, (2) only own
+        // properties are cloned, and (3) only own properties
+        // are used for key path evaluation.
+
+        value.prop = invalid_key;
+        assert_throws('DataError', () =&gt; {
+            in_line[method](value);
+        }, 'key conversion with invalid key should throw DataError');
+    }, `IDBObjectStore ${method}() method with throwing/invalid keys`);
+});
+
+// Generic (key-or-key-path) methods on IDBObjectStore.
+[
+    'delete', 'get', 'getKey', 'getAll', 'getAllKeys', 'count', 'openCursor',
+    'openKeyCursor'
+].forEach(method =&gt; {
+    indexeddb_upgrade_only_test((t, db) =&gt; {
+        var store = db.createObjectStore('store');
+
+        check_method(store, method);
+    }, `IDBObjectStore ${method}() method with throwing/invalid keys`);
+});
+
+// Generic (key-or-key-path) methods on IDBIndex.
+[
+    'get', 'getKey', 'getAll', 'getAllKeys', 'count', 'openCursor',
+    'openKeyCursor'
+].forEach(method =&gt; {
+    indexeddb_upgrade_only_test((t, db) =&gt; {
+        var store = db.createObjectStore('store');
+        var index = store.createIndex('index', 'keyPath');
+
+        check_method(index, method);
+    }, `IDBIndex ${method}() method with throwing/invalid keys`);
+});
+
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBkeypathexceptionshtm"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/keypath-exceptions.htm (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/keypath-exceptions.htm                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/keypath-exceptions.htm        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,272 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;IndexedDB: Exceptions in extracting keys from values (ES bindings)&lt;/title&gt;
+&lt;meta name=&quot;help&quot; href=&quot;https://w3c.github.io/IndexedDB/#extract-key-from-value&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+indexeddb_test(
+  (t, db) =&gt; {
+    db.createObjectStore('store', {autoIncrement: true, keyPath: 'a.b.c'});
+  },
+  (t, db) =&gt; {
+    const tx = db.transaction('store', 'readwrite');
+    assert_throws({name: 'DataError'}, () =&gt; {
+      tx.objectStore('store').put({a: {b: &quot;foo&quot;}});
+    }, 'Put should throw if key can not be inserted at key path location.');
+    t.done();
+  },
+  'The last element of keypath is validated'
+);
+
+function throws(name) {
+  return () =&gt; {
+    const err = Error();
+    err.name = name;
+    throw err;
+  };
+}
+
+indexeddb_test(
+  function(t, db) {
+    const o = {};
+    Object.defineProperty(o, 'throws', {get: throws('getter'),
+        enumerable: false, configurable: true});
+
+    // Value should be cloned before key path is evaluated,
+    // and non-enumerable getter will be ignored. The clone
+    // will have no such property, so key path evaluation
+    // will fail.
+    const s1 = db.createObjectStore('s1', {keyPath: 'throws'});
+    assert_throws('DataError', () =&gt; {
+      s1.put(o);
+    }, 'Key path failing to resolve should throw');
+
+    // Value should be cloned before key path is evaluated,
+    // and non-enumerable getter will be ignored. The clone
+    // will have no such property, so key path evaluation
+    // will fail.
+    const s2 = db.createObjectStore('s2', {keyPath: 'throws.x'});
+    assert_throws('DataError', () =&gt; {
+      s2.put(o);
+    }, 'Key path failing to resolve should throw');
+
+    // Value should be cloned before key path is evaluated,
+    // and non-enumerable getter will be ignored. The clone
+    // will have no such property, so generated key can be
+    // inserted.
+    const s3 = db.createObjectStore('s3',
+        {keyPath: 'throws', autoIncrement: true});
+    assert_class_string(s3.put(o), 'IDBRequest',
+        'Key injectability test at throwing getter should succeed');
+
+    // Value should be cloned before key path is evaluated,
+    // and non-enumerable getter will be ignored. The clone
+    // will have no such property, so intermediate object
+    // and generated key can be inserted.
+    const s4 = db.createObjectStore('s4',
+        {keyPath: 'throws.x', autoIncrement: true});
+    assert_class_string(s4.put(o), 'IDBRequest',
+        'Key injectability test past throwing getter should succeed');
+  },
+  (t, db) =&gt; {
+    t.done();
+  },
+  'Key path evaluation: Exceptions from non-enumerable getters'
+);
+
+indexeddb_test(
+  function(t, db) {
+    const o = {};
+    Object.defineProperty(o, 'throws', {get: throws('getter'),
+        enumerable: true, configurable: true});
+
+    // Value should be cloned before key path is evaluated,
+    // and enumerable getter will rethrow.
+    const s1 = db.createObjectStore('s1', {keyPath: 'throws'});
+    assert_throws({name: 'getter'}, () =&gt; {
+      s1.put(o);
+    }, 'Key path resolving to throwing getter rethrows');
+
+    // Value should be cloned before key path is evaluated,
+    // and enumerable getter will rethrow.
+    const s2 = db.createObjectStore('s2', {keyPath: 'throws.x'});
+    assert_throws({name: 'getter'}, () =&gt; {
+      s2.put(o);
+    }, 'Key path resolving past throwing getter rethrows');
+
+    // Value should be cloned before key path is evaluated,
+    // and enumerable getter will rethrow.
+    const s3 = db.createObjectStore('s3',
+        {keyPath: 'throws', autoIncrement: true});
+    assert_throws({name: 'getter'}, () =&gt; {
+      s3.put(o);
+    }, 'Key injectability test at throwing getter should rethrow');
+
+    // Value should be cloned before key path is evaluated,
+    // and enumerable getter will rethrow.
+    const s4 = db.createObjectStore('s4',
+        {keyPath: 'throws.x', autoIncrement: true});
+    assert_throws({name: 'getter'}, () =&gt; {
+      s4.put(o);
+    }, 'Key injectability test past throwing getter should rethrow');
+  },
+  (t, db) =&gt; {
+    t.done();
+  },
+  'Key path evaluation: Exceptions from enumerable getters'
+);
+
+indexeddb_test(
+  (t, db) =&gt; {
+    // Implemented as function wrapper to clean up
+    // immediately after use, otherwise it may
+    // interfere with the test harness.
+    function with_proto_getter(f) {
+      return function() {
+        Object.defineProperty(Object.prototype, 'throws', {
+          get: throws('getter'),
+          enumerable: false, configurable: true
+        });
+        try {
+          f();
+        } finally {
+          delete Object.prototype['throws'];
+        }
+      };
+    }
+
+    // Value should be cloned before key path is evaluated,
+    // and non-enumerable getter will be ignored. The clone
+    // will have no own property, so key path evaluation will
+    // fail and DataError should be thrown.
+    const s1 = db.createObjectStore('s1', {keyPath: 'throws'});
+    assert_throws('DataError', with_proto_getter(function() {
+      s1.put({});
+    }), 'Key path resolving to no own property throws DataError');
+
+    // Value should be cloned before key path is evaluated,
+    // and non-enumerable getter will be ignored. The clone
+    // will have no own property, so key path evaluation will
+    // fail and DataError should be thrown.
+    const s2 = db.createObjectStore('s2', {keyPath: 'throws.x'});
+    assert_throws('DataError', with_proto_getter(function() {
+      s2.put({});
+    }), 'Key path resolving past no own property throws DataError');
+
+    // Value should be cloned before key path is evaluated,
+    // and non-enumerable getter will be ignored. The clone
+    // will have no own property, so key path evaluation will
+    // fail and injection can succeed.
+    const s3 = db.createObjectStore('s3',
+        {keyPath: 'throws', autoIncrement: true});
+    assert_equals(s3.put({}).readyState, 'pending',
+                  'put should not throw due to inherited property');
+
+    // Value should be cloned before key path is evaluated,
+    // and non-enumerable getter will be ignored. The clone
+    // will have no own property, so key path evaluation will
+    // fail and injection can succeed.
+    const s4 = db.createObjectStore('s4',
+        {keyPath: 'throws.x', autoIncrement: true});
+    assert_equals(s4.put({}).readyState, 'pending',
+                  'put should not throw due to inherited property');
+  },
+  (t, db) =&gt; {
+    t.done();
+  },
+  'Key path evaluation: Exceptions from non-enumerable getters on prototype'
+);
+
+indexeddb_test(
+  (t, db) =&gt; {
+    // Implemented as function wrapper to clean up
+    // immediately after use, otherwise it may
+    // interfere with the test harness.
+    function with_proto_getter(f) {
+      return () =&gt; {
+        Object.defineProperty(Object.prototype, 'throws', {
+          get: throws('getter'),
+          enumerable: true, configurable: true
+        });
+        try {
+          f();
+        } finally {
+          delete Object.prototype['throws'];
+        }
+      };
+    }
+
+    // Value should be cloned before key path is evaluated.
+    // The clone will have no own property, so key path
+    // evaluation will fail and DataError should be thrown.
+    const s1 = db.createObjectStore('s1', {keyPath: 'throws'});
+    assert_throws('DataError', with_proto_getter(function() {
+      s1.put({});
+    }), 'Key path resolving to no own property throws DataError');
+
+    // Value should be cloned before key path is evaluated.
+    // The clone will have no own property, so key path
+    // evaluation will fail and DataError should be thrown.
+    const s2 = db.createObjectStore('s2', {keyPath: 'throws.x'});
+    assert_throws('DataError', with_proto_getter(function() {
+      s2.put({});
+    }), 'Key path resolving past throwing getter rethrows');
+
+    // Value should be cloned before key path is evaluated.
+    // The clone will have no own property, so key path
+    // evaluation will fail and injection can succeed.
+    var s3 = db.createObjectStore('s3',
+        {keyPath: 'throws', autoIncrement: true});
+    assert_equals(s3.put({}).readyState, 'pending',
+                  'put should not throw due to inherited property');
+
+    // Value should be cloned before key path is evaluated.
+    // The clone will have no own property, so key path
+    // evaluation will fail and injection can succeed.
+    var s4 = db.createObjectStore('s4',
+        {keyPath: 'throws.x', autoIncrement: true});
+    assert_equals(s4.put({}).readyState, 'pending',
+                  'put should not throw due to inherited property');
+  },
+  (t, db) =&gt; {
+    t.done();
+  },
+  'Key path evaluation: Exceptions from enumerable getters on prototype'
+);
+
+indexeddb_test(
+  (t, db) =&gt; {
+    const store = db.createObjectStore('store');
+    store.createIndex('index', 'index0');
+  },
+  (t, db) =&gt; {
+    const tx = db.transaction('store', 'readwrite');
+
+    const array = [];
+    array[99] = 1;
+
+    const getter_called = 0;
+    const prop = '50';
+    Object.defineProperty(Object.prototype, prop, {
+      enumerable: true, configurable: true,
+      get: () =&gt; {
+        ++getter_called;
+        return 'foo';
+      },
+    });
+
+    const request = tx.objectStore('store').put({index0: array}, 'key');
+    request.onerror = t.unreached_func('put should not fail');
+    request.onsuccess = t.step_func(function() {
+      assert_equals(getter_called, 0, 'Prototype getter should not be called');
+      delete Object.prototype[prop];
+      t.done();
+    });
+  },
+  'Array key conversion should not invoke prototype getters'
+);
+
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBkeypathspecialidentifiersexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/keypath-special-identifiers-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/keypath-special-identifiers-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/keypath-special-identifiers-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,9 @@
</span><ins>+
+PASS Type: String, identifier: length 
+PASS Type: Array, identifier: length 
+PASS Type: Blob, identifier: size 
+PASS Type: Blob, identifier: type 
+PASS Type: File, identifier: name 
+FAIL Type: File, identifier: lastModified assert_equals: Property should be used as key expected 0 but got 1
+FAIL Type: File, identifier: lastModifiedDate The data provided does not meet requirements.
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBkeypathspecialidentifiershtm"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/keypath-special-identifiers.htm (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/keypath-special-identifiers.htm                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/keypath-special-identifiers.htm        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,69 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;IndexedDB: Special-cased identifiers in extracting keys from values (ES bindings)&lt;/title&gt;
+&lt;meta name=&quot;help&quot; href=&quot;https://w3c.github.io/IndexedDB/#extract-key-from-value&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+[
+  {
+    type: 'String',
+    property: 'length',
+    instance: 'abc',
+  },
+  {
+    type: 'Array',
+    property: 'length',
+    instance: ['a', 'b', 'c'],
+  },
+  {
+    type: 'Blob',
+    property: 'size',
+    instance: new Blob(['abc']),
+  },
+  {
+    type: 'Blob',
+    property: 'type',
+    instance: new Blob([''], {type:'foo/bar'}),
+  },
+  {
+    type: 'File',
+    property: 'name',
+    instance: new File([''], 'foo'),
+  },
+  {
+    type: 'File',
+    property: 'lastModified',
+    instance: new File([''], '', {lastModified: 123}),
+  },
+  {
+    type: 'File',
+    property: 'lastModifiedDate',
+    instance: new File([''], '', {lastModified: 123}),
+  },
+].forEach(function(testcase) {
+  indexeddb_test(
+    (t, db) =&gt; {
+      db.createObjectStore(
+          'store', {autoIncrement: true, keyPath: testcase.property});
+    },
+    (t, db) =&gt; {
+      const key = testcase.instance[testcase.property];
+      const tx = db.transaction('store', 'readwrite');
+      tx.objectStore('store').put(testcase.instance);
+      const request = tx.objectStore('store').get(key);
+      request.onerror = t.unreached_func('request should not fail');
+      request.onsuccess = t.step_func(function() {
+        const result = request.result;
+        assert_key_equals(result[testcase.property], key,
+                          'Property should be used as key');
+        t.done();
+      });
+    },
+    'Type: ' + testcase.type + ', identifier: ' + testcase.property
+  );
+});
+
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBopenrequestqueueexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/open-request-queue-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/open-request-queue-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/open-request-queue-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+
+Harness Error (TIMEOUT), message = null
+
+TIMEOUT Opens and deletes are processed in order Test timed out
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBopenrequestqueuehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/open-request-queue.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/open-request-queue.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/open-request-queue.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,63 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;IndexedDB: open and delete requests are processed as a FIFO queue&lt;/title&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://w3c.github.io/IndexedDB/#request-connection-queue&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;support.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+async_test(t =&gt; {
+    let db_name = 'db' + self.location.pathname + '-' + t.name;
+    indexedDB.deleteDatabase(db_name);
+
+    // Open and hold connection while other requests are queued up.
+    let r = indexedDB.open(db_name, 1);
+    r.onerror = t.unreached_func('open should succeed');
+    r.onsuccess = t.step_func(e =&gt; {
+        let db = r.result;
+
+        let saw = expect(t, [
+            'open1 success',
+            'open1 versionchange',
+            'delete1 blocked',
+            'delete1 success',
+            'open2 success',
+            'open2 versionchange',
+            'delete2 blocked',
+            'delete2 success'
+        ]);
+
+        function open(token, version) {
+            let r = indexedDB.open(db_name, version);
+            r.onsuccess = t.step_func(e =&gt; {
+                saw(token + ' success');
+                let db = r.result;
+                db.onversionchange = t.step_func(e =&gt; {
+                    saw(token + ' versionchange');
+                    setTimeout(t.step_func(() =&gt; db.close()), 0);
+                });
+            });
+            r.onblocked = t.step_func(e =&gt; saw(token + ' blocked'));
+            r.onerror = t.unreached_func('open should succeed');
+        }
+
+        function deleteDatabase(token) {
+            let r = indexedDB.deleteDatabase(db_name);
+            r.onsuccess = t.step_func(e =&gt; saw(token + ' success'));
+            r.onblocked = t.step_func(e =&gt; saw(token + ' blocked'));
+            r.onerror = t.unreached_func('deleteDatabase should succeed');
+        }
+
+        open('open1', 2);
+        deleteDatabase('delete1');
+        open('open2', 3);
+        deleteDatabase('delete2');
+
+        // Now unblock the queue.
+        db.close();
+    });
+
+}, 'Opens and deletes are processed in order');
+
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBsupportjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/support.js (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/support.js        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/support.js        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -62,12 +62,14 @@
</span><span class="cx">                     assert_unreached(&quot;unexpected open.&quot; + evt + &quot; event&quot;);
</span><span class="cx">                 }
</span><span class="cx"> 
</span><del>-                if (e.target.result + &quot;&quot; == &quot;[object IDBDatabase]&quot; &amp;&amp; !this.db) {
-                    this.db = e.target.result;
</del><ins>+                if (e.target.result + '' == '[object IDBDatabase]' &amp;&amp;
+                    !this.db) {
+                  this.db = e.target.result;
</ins><span class="cx"> 
</span><del>-                    this.db.onerror = fail(test, &quot;unexpected db.error&quot;);
-                    this.db.onabort = fail(test, &quot;unexpected db.abort&quot;);
-                    this.db.onversionchange = fail(test, &quot;unexpected db.versionchange&quot;);
</del><ins>+                  this.db.onerror = fail(test, 'unexpected db.error');
+                  this.db.onabort = fail(test, 'unexpected db.abort');
+                  this.db.onversionchange =
+                      fail(test, 'unexpected db.versionchange');
</ins><span class="cx">                 }
</span><span class="cx">             })
</span><span class="cx">         })
</span><span class="lines">@@ -80,7 +82,7 @@
</span><span class="cx">         })
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    // add a .setTest method to the DB object
</del><ins>+    // add a .setTest method to the IDBOpenDBRequest object
</ins><span class="cx">     Object.defineProperty(rq_open, 'setTest', {
</span><span class="cx">         enumerable: false,
</span><span class="cx">         value: function(t) {
</span><span class="lines">@@ -99,25 +101,45 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> function assert_key_equals(actual, expected, description) {
</span><del>-    assert_equals(indexedDB.cmp(actual, expected), 0, description);
</del><ins>+  assert_equals(indexedDB.cmp(actual, expected), 0, description);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-function indexeddb_test(upgrade_func, open_func, description) {
-    async_test(function(t) {
-        var dbname = document.location + '-' + t.name;
-        var del = indexedDB.deleteDatabase(dbname);
-        del.onerror = t.unreached_func('deleteDatabase should succeed');
-        var open = indexedDB.open(dbname, 1);
-        open.onerror = t.unreached_func('open should succeed');
-        open.onupgradeneeded = t.step_func(function() {
-            var db = open.result;
-            var tx = open.transaction;
-            upgrade_func(t, db, tx);
-        });
-        open.onsuccess = t.step_func(function() {
-            var db = open.result;
-            if (open_func)
-                open_func(t, db);
-        });
-    }, description);
</del><ins>+function indexeddb_test(upgrade_func, open_func, description, options) {
+  async_test(function(t) {
+    var options = Object.assign({upgrade_will_abort: false}, options);
+    var dbname = document.location + '-' + t.name;
+    var del = indexedDB.deleteDatabase(dbname);
+    del.onerror = t.unreached_func('deleteDatabase should succeed');
+    var open = indexedDB.open(dbname, 1);
+    if (!options.upgrade_will_abort) {
+      open.onsuccess = t.unreached_func('open should not succeed');
+    } else {
+      open.onerror = t.unreached_func('open should succeed');
+    }
+    open.onupgradeneeded = t.step_func(function() {
+      var db = open.result;
+      var tx = open.transaction;
+      upgrade_func(t, db, tx);
+    });
+    open.onsuccess = t.step_func(function() {
+      var db = open.result;
+      if (open_func)
+        open_func(t, db);
+    });
+  }, description);
</ins><span class="cx"> }
</span><ins>+
+// Call with a Test and an array of expected results in order. Returns
+// a function; call the function when a result arrives and when the
+// expected number appear the order will be asserted and test
+// completed.
+function expect(t, expected) {
+  var results = [];
+  return result =&gt; {
+    results.push(result);
+    if (results.length === expected.length) {
+      assert_array_equals(results, expected);
+      t.done();
+    }
+  };
+}
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/w3c-import.log (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/w3c-import.log        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/w3c-import.log        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -18,16 +18,27 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/OWNERS
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/README.md
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/abort-in-initial-upgradeneeded.html
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/bindings-inject-key.html
+/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/clone-before-keypath-eval.html
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/close-in-upgradeneeded.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/cursor-overloads.htm
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/delete-request-queue.html
+/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/error-attributes.html
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/historical.html
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idb-binary-key-detached.htm
+/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idb-binary-key-roundtrip.htm
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idb_binary_key_conversion.htm
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idb_webworkers.htm
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-advance-continue-async.htm
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-advance-exception-order.html
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-advance-invalid.htm
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-advance.htm
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-continue-exception-order.htm
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-continue.htm
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-continuePrimaryKey-exception-order.htm
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-continuePrimaryKey-exceptions.htm
+/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-continuePrimaryKey.htm
+/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-delete-exception-order.htm
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-direction-index-keyrange.htm
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-direction-index.htm
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-direction-objectstore-keyrange.htm
</span><span class="lines">@@ -37,6 +48,7 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-primarykey.htm
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-reused.htm
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-source.htm
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-update-exception-order.htm
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor_advance_index.htm
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor_advance_index2.htm
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor_advance_index3.htm
</span><span class="lines">@@ -97,6 +109,9 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor_update_objectstore7.htm
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor_update_objectstore8.htm
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor_update_objectstore9.htm
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbdatabase-createObjectStore-exception-order.htm
+/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbdatabase-deleteObjectStore-exception-order.htm
+/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbdatabase-transaction-exception-order.html
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbdatabase_close.htm
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbdatabase_close2.htm
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbdatabase_createObjectStore-createIndex-emptyname.htm
</span><span class="lines">@@ -141,9 +156,12 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbfactory_open7.htm
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbfactory_open8.htm
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbfactory_open9.htm
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbindex-getAll-enforcerange.html
+/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbindex-getAllKeys-enforcerange.html
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbindex-multientry-arraykeypath.htm
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbindex-multientry-big.htm
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbindex-multientry.htm
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbindex-query-exception-order.html
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbindex-rename-abort.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbindex-rename-errors.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbindex-rename.html
</span><span class="lines">@@ -180,6 +198,13 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbkeyrange-includes.htm
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbkeyrange.htm
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbkeyrange_incorrect.htm
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-add-put-exception-order.html
+/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-clear-exception-order.html
+/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-delete-exception-order.html
+/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-deleteIndex-exception-order.html
+/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-getAll-enforcerange.html
+/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-getAllKeys-enforcerange.html
+/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-query-exception-order.html
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-rename-abort.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-rename-errors.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-rename-store.html
</span><span class="lines">@@ -239,6 +264,7 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore_get7.htm
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore_getAll.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore_getAllKeys.html
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore_getKey.html
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore_index.htm
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore_openCursor.htm
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore_openCursor_invalid.htm
</span><span class="lines">@@ -259,8 +285,10 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore_put7.htm
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore_put8.htm
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore_put9.htm
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbrequest-onupgradeneeded.htm
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbrequest_error.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbrequest_result.html
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbtransaction-objectStore-exception-order.html
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbtransaction-oncomplete.htm
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbtransaction.htm
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbtransaction_abort.htm
</span><span class="lines">@@ -271,6 +299,7 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/interfaces.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/interfaces.idl
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/interfaces.worker.js
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/key-conversion-exceptions.htm
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/key_invalid.htm
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/key_valid.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/keygenerator-constrainterror.htm
</span><span class="lines">@@ -277,6 +306,8 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/keygenerator-overflow.htm
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/keygenerator.htm
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/keyorder.htm
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/keypath-exceptions.htm
+/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/keypath-special-identifiers.htm
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/keypath.htm
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/keypath_invalid.htm
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/keypath_maxsize.htm
</span><span class="lines">@@ -283,6 +314,7 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/list_ordering.htm
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/name-scopes.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/objectstore_keyorder.htm
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/open-request-queue.html
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/request_bubble-and-capture.htm
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/string-list-ordering.htm
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/support-promises.js
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsREADMEmd"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/README.md (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/README.md        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/README.md        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,7 +1,7 @@
</span><del>-The Web Platform Tests Project [![IRC chat](https://goo.gl/6nCIks)](http://irc.w3.org/?channels=testing)
</del><ins>+The web-platform-tests Project [![IRC chat](https://goo.gl/6nCIks)](http://irc.w3.org/?channels=testing)
</ins><span class="cx"> ==============================
</span><span class="cx"> 
</span><del>-The Web Platform Tests Project is a W3C-coordinated attempt to build a
</del><ins>+The web-platform-tests Project is a W3C-coordinated attempt to build a
</ins><span class="cx"> cross-browser testsuite for the Web-platform stack.  However, for mainly
</span><span class="cx"> historic reasons, the CSS WG testsuite is in a separate repository,
</span><span class="cx"> [csswg-test](https://github.com/w3c/csswg-test). Writing tests in a way
</span><span class="lines">@@ -39,6 +39,9 @@
</span><span class="cx"> 0.0.0.0     nonexistent-origin.web-platform.test
</span><span class="cx"> ```
</span><span class="cx"> 
</span><ins>+If you are behind a proxy, you also need to make sure the domains above are
+excluded from your proxy lookups.
+
</ins><span class="cx"> Because web-platform-tests uses git submodules, you must ensure that
</span><span class="cx"> these are up to date. In the root of your checkout, run:
</span><span class="cx"> 
</span><span class="lines">@@ -111,7 +114,7 @@
</span><span class="cx"> ===========
</span><span class="cx"> 
</span><span class="cx"> There is a test runner that is designed to provide a
</span><del>-convenient way to run the web-platform tests in-browser. It will run
</del><ins>+convenient way to run the web-platform-tests in-browser. It will run
</ins><span class="cx"> testharness.js tests automatically but requires manual work for
</span><span class="cx"> reftests and manual tests.
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsXMLHttpRequestabortduringdonehtm"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/abort-during-done.htm (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/abort-during-done.htm        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/abort-during-done.htm        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -22,8 +22,14 @@
</span><span class="cx">         client.open(&quot;GET&quot;, &quot;resources/well-formed.xml&quot;, false)
</span><span class="cx">         client.send(null)
</span><span class="cx">         assert_equals(client.readyState, 4)
</span><ins>+        assert_equals(client.status, 200)
+        assert_equals(client.responseXML.documentElement.localName, &quot;html&quot;)
</ins><span class="cx">         client.abort()
</span><span class="cx">         assert_equals(client.readyState, 0)
</span><ins>+        assert_equals(client.status, 0)
+        assert_equals(client.statusText, &quot;&quot;)
+        assert_equals(client.responseXML, null)
+        assert_equals(client.getAllResponseHeaders(), &quot;&quot;)
</ins><span class="cx">         assert_array_equals(result, expected)
</span><span class="cx">         test.done()
</span><span class="cx">       })
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsXMLHttpRequesthistoricalexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/historical-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/historical-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/historical-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+
+PASS Support for responseType = moz-blob 
+PASS Support for responseType = moz-chunked-text 
+PASS Support for responseType = moz-chunked-arraybuffer 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsXMLHttpRequesthistoricalhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/historical.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/historical.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/historical.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,15 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;Historical features&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+[&quot;moz-blob&quot;, &quot;moz-chunked-text&quot;, &quot;moz-chunked-arraybuffer&quot;].forEach(function(rt) {
+  test(function() {
+    var xhr = new XMLHttpRequest();
+    xhr.responseType = rt;
+    assert_equals(xhr.responseType, &quot;&quot;);
+  }, &quot;Support for responseType = &quot; + rt);
+});
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsXMLHttpRequestresourcescorsenabledpy"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/resources/corsenabled.py (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/resources/corsenabled.py        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/resources/corsenabled.py        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx">                (&quot;Access-Control-Allow-Credentials&quot;, &quot;true&quot;),
</span><span class="cx">                (&quot;Access-Control-Allow-Methods&quot;, &quot;GET, POST, PUT, FOO&quot;),
</span><span class="cx">                (&quot;Access-Control-Allow-Headers&quot;, &quot;x-test, x-foo&quot;),
</span><del>-               (&quot;Access-Control-Expose-Headers&quot;, &quot;x-request-method, x-request-content-type, x-request-query, x-request-content-length&quot;)]
</del><ins>+               (&quot;Access-Control-Expose-Headers&quot;, &quot;x-request-method, x-request-content-type, x-request-query, x-request-content-length, x-request-data&quot;)]
</ins><span class="cx"> 
</span><span class="cx">     if &quot;delay&quot; in request.GET:
</span><span class="cx">         delay = int(request.GET.first(&quot;delay&quot;))
</span><span class="lines">@@ -15,5 +15,6 @@
</span><span class="cx">     headers.append((&quot;X-Request-Query&quot;, request.url_parts.query if request.url_parts.query else &quot;NO&quot;))
</span><span class="cx">     headers.append((&quot;X-Request-Content-Length&quot;, request.headers.get(&quot;Content-Length&quot;, &quot;NO&quot;)))
</span><span class="cx">     headers.append((&quot;X-Request-Content-Type&quot;, request.headers.get(&quot;Content-Type&quot;, &quot;NO&quot;)))
</span><ins>+    headers.append((&quot;X-Request-Data&quot;, request.body))
</ins><span class="cx"> 
</span><span class="cx">     return headers, &quot;Test&quot;
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsXMLHttpRequestresponsexmldocumentpropertiesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/responsexml-document-properties-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/responsexml-document-properties-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/responsexml-document-properties-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -16,7 +16,7 @@
</span><span class="cx"> FAIL links assert_equals: expected (undefined) undefined but got (object) object &quot;[object HTMLCollection]&quot;
</span><span class="cx"> PASS cookie 
</span><span class="cx"> PASS lastModified set to time of response if no HTTP header provided 
</span><del>-FAIL lastModified set to related HTTP header if provided assert_equals: expected 1486609216000 but got 1452506064000
</del><ins>+FAIL lastModified set to related HTTP header if provided assert_equals: expected 1486842844000 but got 1486813787000
</ins><span class="cx"> PASS cookie (after setting it) 
</span><span class="cx"> PASS styleSheets 
</span><span class="cx"> PASS implementation 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsXMLHttpRequestsendentitybodydocumentexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-entity-body-document-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-entity-body-document-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-entity-body-document-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,9 +1,9 @@
</span><span class="cx"> 
</span><ins>+PASS XML document, windows-1252 
</ins><span class="cx"> PASS HTML document, invalid UTF-8 
</span><del>-PASS XML document, windows-1252 
</del><span class="cx"> PASS HTML document, shift-jis 
</span><ins>+PASS empty div 
</ins><span class="cx"> PASS img tag 
</span><span class="cx"> PASS plain text file 
</span><span class="cx"> PASS image file 
</span><del>-PASS empty div 
</del><span class="cx">          
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsXMLHttpRequestsendredirectpostuploadexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-redirect-post-upload-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-redirect-post-upload-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-redirect-post-upload-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> 
</span><del>-FAIL XMLHttpRequest: The send() method: POSTing to URL that redirects (301) assert_true: One progress event should fire on xhr.upload when readyState is 1 expected true got false
</del><ins>+PASS XMLHttpRequest: The send() method: POSTing to URL that redirects (301) 
</ins><span class="cx"> PASS XMLHttpRequest: The send() method: POSTing to URL that redirects (302) 
</span><span class="cx"> PASS XMLHttpRequest: The send() method: POSTing to URL that redirects (303) 
</span><span class="cx"> PASS XMLHttpRequest: The send() method: POSTing to URL that redirects (307) 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsXMLHttpRequestsendredirecttocorshtm"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-redirect-to-cors.htm (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-redirect-to-cors.htm        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-redirect-to-cors.htm        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -9,22 +9,51 @@
</span><span class="cx">   &lt;body&gt;
</span><span class="cx">     &lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</span><span class="cx">     &lt;script&gt;
</span><del>-      function redirect(code) {
-        var test = async_test(document.title + &quot; (&quot; + code + &quot;)&quot;)
</del><ins>+      function extractBody(body) {
+        if (body === null) {
+          return { body: &quot;&quot;, type: &quot;NO&quot; };
+        }
+
+        if (typeof body == &quot;string&quot;) {
+          return { body: body, type: &quot;text/plain;charset=UTF-8&quot; };
+        }
+
+        if (body instanceof Uint8Array) {
+          var arr = Array.prototype.slice.call(body);
+          return { body: String.fromCharCode.apply(null, arr), type: &quot;NO&quot; }
+        }
+
+        return { body: &quot;EXTRACT NOT IMPLEMENTED&quot;,
+                 type: &quot;EXTRACT NOT IMPLEMENTED&quot; }
+      }
+
+      function redirect(code, name = code, method = &quot;GET&quot;, body = null, setExplicitType = true) {
+        var test = async_test(document.title + &quot; (&quot; + name + &quot;)&quot;)
</ins><span class="cx">         test.step(function() {
</span><span class="cx">           var client = new XMLHttpRequest()
</span><span class="cx">           client.onreadystatechange = function() {
</span><span class="cx">             test.step(function() {
</span><del>-              if(client.readyState == 4) {
-                assert_equals(client.getResponseHeader(&quot;x-request-method&quot;), &quot;GET&quot;)
-                assert_equals(client.getResponseHeader(&quot;x-request-content-type&quot;), &quot;application/x-pony&quot;)
-                test.done()
</del><ins>+              if (client.readyState == 4) {
+                assert_equals(client.status, 200);
+                assert_equals(client.getResponseHeader(&quot;x-request-method&quot;),
+                              method);
+                var { body: expectedBody, type: expectedType } = extractBody(body);
+                if (setExplicitType) {
+                  expectedType = &quot;application/x-pony&quot;;
+                }
+                assert_equals(client.getResponseHeader(&quot;x-request-content-type&quot;),
+                              expectedType);
+                assert_equals(client.getResponseHeader(&quot;x-request-data&quot;),
+                              expectedBody);
+                test.done();
</ins><span class="cx">               }
</span><span class="cx">             })
</span><span class="cx">           }
</span><del>-          client.open(&quot;GET&quot;, &quot;resources/redirect.py?location=&quot;+encodeURIComponent(&quot;http://www2.&quot;+location.host+(location.pathname.replace(/[^\/]+$/, ''))+'resources/corsenabled.py')+&quot;&amp;code=&quot; + code)
-          client.setRequestHeader(&quot;Content-Type&quot;, &quot;application/x-pony&quot;)
-          client.send(null)
</del><ins>+          client.open(method, &quot;resources/redirect.py?location=&quot;+encodeURIComponent(&quot;http://www2.&quot;+location.host+(location.pathname.replace(/[^\/]+$/, ''))+'resources/corsenabled.py')+&quot;&amp;code=&quot; + code)
+          if (setExplicitType) {
+            client.setRequestHeader(&quot;Content-Type&quot;, &quot;application/x-pony&quot;)
+          }
+          client.send(body)
</ins><span class="cx">         })
</span><span class="cx">       }
</span><span class="cx">       redirect(&quot;301&quot;)
</span><span class="lines">@@ -31,6 +60,9 @@
</span><span class="cx">       redirect(&quot;302&quot;)
</span><span class="cx">       redirect(&quot;303&quot;)
</span><span class="cx">       redirect(&quot;307&quot;)
</span><ins>+      redirect(&quot;307&quot;, &quot;307 post with null&quot;, &quot;POST&quot;, null, false);
+      redirect(&quot;307&quot;, &quot;307 post with string&quot;, &quot;POST&quot;, &quot;hello&quot;, false);
+      redirect(&quot;307&quot;, &quot;307 post with typed array&quot;, &quot;POST&quot;, new Uint8Array([65, 66, 67]), false);
</ins><span class="cx">     &lt;/script&gt;
</span><span class="cx">   &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsXMLHttpRequestsetrequestheaderbogusvalueexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/setrequestheader-bogus-value-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/setrequestheader-bogus-value-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/setrequestheader-bogus-value-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -3,6 +3,5 @@
</span><span class="cx"> PASS XMLHttpRequest: setRequestHeader() value argument checks 1 
</span><span class="cx"> PASS XMLHttpRequest: setRequestHeader() value argument checks 2 
</span><span class="cx"> PASS XMLHttpRequest: setRequestHeader() value argument checks 3 
</span><del>-PASS XMLHttpRequest: setRequestHeader() value argument checks 4 
</del><span class="cx"> PASS Omitted value argument 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsXMLHttpRequestsetrequestheaderbogusvaluehtm"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/setrequestheader-bogus-value.htm (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/setrequestheader-bogus-value.htm        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/setrequestheader-bogus-value.htm        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -17,10 +17,9 @@
</span><span class="cx">           assert_throws(&quot;SyntaxError&quot;, function() { client.setRequestHeader(&quot;x-test&quot;, value) }, ' given value ' + value+', ');
</span><span class="cx">         });
</span><span class="cx">       }
</span><ins>+      try_value(&quot;t\x00t&quot;);
</ins><span class="cx">       try_value(&quot;t\rt&quot;);
</span><span class="cx">       try_value(&quot;t\nt&quot;);
</span><del>-      try_value(&quot;t\bt&quot;);
-      try_value(&quot;\x7f&quot;);
</del><span class="cx">       test(function() {
</span><span class="cx">         var client = new XMLHttpRequest();
</span><span class="cx">         client.open(&quot;GET&quot;, &quot;...&quot;);
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsXMLHttpRequestw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/w3c-import.log (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/w3c-import.log        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/w3c-import.log        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -64,6 +64,7 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/getresponseheader-special-characters.htm
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/getresponseheader-unsent-opened-state.htm
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/headers-normalize-response.htm
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/historical.html
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/interfaces.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/open-after-abort.htm
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/open-after-setrequestheader.htm
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscheck_stabilitypy"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/check_stability.py (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/check_stability.py        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/check_stability.py        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,7 +1,6 @@
</span><span class="cx"> from __future__ import print_function
</span><span class="cx"> 
</span><span class="cx"> import argparse
</span><del>-import json
</del><span class="cx"> import logging
</span><span class="cx"> import os
</span><span class="cx"> import re
</span><span class="lines">@@ -9,12 +8,12 @@
</span><span class="cx"> import subprocess
</span><span class="cx"> import sys
</span><span class="cx"> import tarfile
</span><del>-import traceback
</del><span class="cx"> import zipfile
</span><del>-from cStringIO import StringIO
</del><ins>+from abc import ABCMeta, abstractmethod
+from cStringIO import StringIO as CStringIO
</ins><span class="cx"> from collections import defaultdict
</span><del>-from urlparse import urljoin
-from tools.manifest import manifest
</del><ins>+from ConfigParser import RawConfigParser
+from io import BytesIO, StringIO
</ins><span class="cx"> 
</span><span class="cx"> import requests
</span><span class="cx"> 
</span><span class="lines">@@ -24,18 +23,22 @@
</span><span class="cx"> LogLevelFilter = None
</span><span class="cx"> StreamHandler = None
</span><span class="cx"> TbplFormatter = None
</span><ins>+manifest = None
</ins><span class="cx"> reader = None
</span><span class="cx"> wptcommandline = None
</span><span class="cx"> wptrunner = None
</span><ins>+wpt_root = None
+wptrunner_root = None
</ins><span class="cx"> 
</span><del>-logger = logging.getLogger(os.path.splitext(__file__)[0])
</del><ins>+logger = None
</ins><span class="cx"> 
</span><del>-
</del><span class="cx"> def do_delayed_imports():
</span><ins>+    &quot;&quot;&quot;Import and set up modules only needed if execution gets to this point.&quot;&quot;&quot;
</ins><span class="cx">     global BaseHandler
</span><span class="cx">     global LogLevelFilter
</span><span class="cx">     global StreamHandler
</span><span class="cx">     global TbplFormatter
</span><ins>+    global manifest
</ins><span class="cx">     global reader
</span><span class="cx">     global wptcommandline
</span><span class="cx">     global wptrunner
</span><span class="lines">@@ -42,6 +45,7 @@
</span><span class="cx">     from mozlog import reader
</span><span class="cx">     from mozlog.formatters import TbplFormatter
</span><span class="cx">     from mozlog.handlers import BaseHandler, LogLevelFilter, StreamHandler
</span><ins>+    from tools.manifest import manifest
</ins><span class="cx">     from wptrunner import wptcommandline, wptrunner
</span><span class="cx">     setup_log_handler()
</span><span class="cx">     setup_action_filter()
</span><span class="lines">@@ -48,6 +52,7 @@
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> def setup_logging():
</span><ins>+    &quot;&quot;&quot;Set up basic debug logger.&quot;&quot;&quot;
</ins><span class="cx">     handler = logging.StreamHandler(sys.stdout)
</span><span class="cx">     formatter = logging.Formatter(logging.BASIC_FORMAT, None)
</span><span class="cx">     handler.setFormatter(formatter)
</span><span class="lines">@@ -54,144 +59,130 @@
</span><span class="cx">     logger.addHandler(handler)
</span><span class="cx">     logger.setLevel(logging.DEBUG)
</span><span class="cx"> 
</span><del>-setup_logging()
</del><span class="cx"> 
</span><del>-
</del><span class="cx"> def setup_action_filter():
</span><ins>+    &quot;&quot;&quot;Create global LogActionFilter class as part of deferred module load.&quot;&quot;&quot;
</ins><span class="cx">     global LogActionFilter
</span><span class="cx"> 
</span><span class="cx">     class LogActionFilter(BaseHandler):
</span><del>-        &quot;&quot;&quot;Handler that filters out messages with action of log and a level
-        lower than some specified level.
</del><span class="cx"> 
</span><ins>+        &quot;&quot;&quot;Handler that filters out messages not of a given set of actions.
+
+        Subclasses BaseHandler.
+
</ins><span class="cx">         :param inner: Handler to use for messages that pass this filter
</span><del>-        :param level: Minimum log level to process
</del><ins>+        :param actions: List of actions for which to fire the handler
</ins><span class="cx">         &quot;&quot;&quot;
</span><ins>+
</ins><span class="cx">         def __init__(self, inner, actions):
</span><ins>+            &quot;&quot;&quot;Extend BaseHandler and set inner and actions props on self.&quot;&quot;&quot;
</ins><span class="cx">             BaseHandler.__init__(self, inner)
</span><span class="cx">             self.inner = inner
</span><span class="cx">             self.actions = actions
</span><span class="cx"> 
</span><span class="cx">         def __call__(self, item):
</span><ins>+            &quot;&quot;&quot;Invoke handler if action is in list passed as constructor param.&quot;&quot;&quot;
</ins><span class="cx">             if item[&quot;action&quot;] in self.actions:
</span><span class="cx">                 return self.inner(item)
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> class TravisFold(object):
</span><ins>+
+    &quot;&quot;&quot;Context for TravisCI folding mechanism. Subclasses object.
+
+    See: https://blog.travis-ci.com/2013-05-22-improving-build-visibility-log-folds/
+    &quot;&quot;&quot;
+
</ins><span class="cx">     def __init__(self, name):
</span><ins>+        &quot;&quot;&quot;Register TravisCI folding section name.&quot;&quot;&quot;
</ins><span class="cx">         self.name = name
</span><span class="cx"> 
</span><span class="cx">     def __enter__(self):
</span><ins>+        &quot;&quot;&quot;Emit fold start syntax.&quot;&quot;&quot;
</ins><span class="cx">         print(&quot;travis_fold:start:%s&quot; % self.name, file=sys.stderr)
</span><span class="cx"> 
</span><span class="cx">     def __exit__(self, type, value, traceback):
</span><ins>+        &quot;&quot;&quot;Emit fold end syntax.&quot;&quot;&quot;
</ins><span class="cx">         print(&quot;travis_fold:end:%s&quot; % self.name, file=sys.stderr)
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-class GitHub(object):
-    def __init__(self, org, repo, token, browser):
-        self.token = token
-        self.headers = {&quot;Accept&quot;: &quot;application/vnd.github.v3+json&quot;}
-        self.auth = (self.token, &quot;x-oauth-basic&quot;)
-        self.org = org
-        self.repo = repo
-        self.base_url = &quot;https://api.github.com/repos/%s/%s/&quot; % (org, repo)
-        self.browser = browser
</del><ins>+class FilteredIO(object):
+    &quot;&quot;&quot;Wrap a file object, invoking the provided callback for every call to
+    `write` and only proceeding with the operation when that callback returns
+    True.&quot;&quot;&quot;
+    def __init__(self, original, on_write):
+        self.original = original
+        self.on_write = on_write
</ins><span class="cx"> 
</span><del>-    def _headers(self, headers):
-        if headers is None:
-            headers = {}
-        rv = self.headers.copy()
-        rv.update(headers)
-        return rv
</del><ins>+    def __getattr__(self, name):
+        return getattr(self.original, name)
</ins><span class="cx"> 
</span><del>-    def post(self, url, data, headers=None):
-        logger.debug(&quot;POST %s&quot; % url)
-        if data is not None:
-            data = json.dumps(data)
-        resp = requests.post(
-            url,
-            data=data,
-            headers=self._headers(headers),
-            auth=self.auth
-        )
-        resp.raise_for_status()
-        return resp
</del><ins>+    def disable(self):
+        self.write = lambda msg: None
</ins><span class="cx"> 
</span><del>-    def patch(self, url, data, headers=None):
-        logger.debug(&quot;PATCH %s&quot; % 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
</del><ins>+    def write(self, msg):
+        encoded = msg.encode(&quot;utf8&quot;, &quot;backslashreplace&quot;).decode(&quot;utf8&quot;)
+        if self.on_write(self.original, encoded) is True:
+            self.original.write(encoded)
</ins><span class="cx"> 
</span><del>-    def get(self, url, headers=None):
-        logger.debug(&quot;GET %s&quot; % url)
-        resp = requests.get(
-            url,
-            headers=self._headers(headers),
-            auth=self.auth
-        )
-        resp.raise_for_status()
-        return resp
</del><span class="cx"> 
</span><del>-    def post_comment(self, issue_number, body):
-        user = self.get(urljoin(self.base_url, &quot;/user&quot;)).json()
-        issue_comments_url = urljoin(self.base_url, &quot;issues/%s/comments&quot; % issue_number)
-        comments = self.get(issue_comments_url).json()
-        title_line = &quot;# %s #&quot; % self.browser.title()
-        data = {&quot;body&quot;: body}
-        for comment in comments:
-            if (comment[&quot;user&quot;][&quot;login&quot;] == user[&quot;login&quot;] and
-                comment[&quot;body&quot;].startswith(title_line)):
-                comment_url = urljoin(self.base_url, &quot;issues/comments/%s&quot; % comment[&quot;id&quot;])
-                self.patch(comment_url, data)
-                break
-        else:
-            self.post(issue_comments_url, data)
</del><ins>+def replace_streams(capacity, warning_msg):
+    # Value must be boxed to support modification from inner function scope
+    count = [0]
+    capacity -= 2 + len(warning_msg)
+    stderr = sys.stderr
</ins><span class="cx"> 
</span><del>-    def releases(self):
-        url = urljoin(self.base_url, &quot;releases/latest&quot;)
-        return self.get(url)
</del><ins>+    def on_write(handle, msg):
+        length = len(msg)
+        count[0] += length
</ins><span class="cx"> 
</span><ins>+        if count[0] &gt; capacity:
+            sys.stdout.disable()
+            sys.stderr.disable()
+            handle.write(msg[0:capacity - count[0]])
+            handle.flush()
+            stderr.write(&quot;\n%s\n&quot; % warning_msg)
+            return False
</ins><span class="cx"> 
</span><del>-class GitHubCommentHandler(logging.Handler):
-    def __init__(self, github, pull_number):
-        logging.Handler.__init__(self)
-        self.github = github
-        self.pull_number = pull_number
-        self.log_data = []
</del><ins>+        return True
</ins><span class="cx"> 
</span><del>-    def emit(self, record):
-        try:
-            msg = self.format(record)
-            self.log_data.append(msg)
-        except Exception:
-            self.handleError(record)
</del><ins>+    sys.stdout = FilteredIO(sys.stdout, on_write)
+    sys.stderr = FilteredIO(sys.stderr, on_write)
</ins><span class="cx"> 
</span><del>-    def send(self):
-        self.github.post_comment(self.pull_number, &quot;\n&quot;.join(self.log_data))
-        self.log_data = []
</del><span class="cx"> 
</span><del>-
</del><span class="cx"> class Browser(object):
</span><del>-    product = None
</del><ins>+    __metaclass__ = ABCMeta
</ins><span class="cx"> 
</span><del>-    def __init__(self, github_token):
-        self.github_token = github_token
</del><ins>+    @abstractmethod
+    def install(self):
+        return NotImplemented
</ins><span class="cx"> 
</span><ins>+    @abstractmethod
+    def install_webdriver(self):
+        return NotImplemented
</ins><span class="cx"> 
</span><ins>+    @abstractmethod
+    def version(self):
+        return NotImplemented
+
+    @abstractmethod
+    def wptrunner_args(self):
+        return NotImplemented
+
+
</ins><span class="cx"> class Firefox(Browser):
</span><ins>+    &quot;&quot;&quot;Firefox-specific interface.
+
+    Includes installation, webdriver installation, and wptrunner setup methods.
+    &quot;&quot;&quot;
+
</ins><span class="cx">     product = &quot;firefox&quot;
</span><ins>+    binary = &quot;%s/firefox/firefox&quot;
+    platform_ini = &quot;%s/firefox/platform.ini&quot;
</ins><span class="cx"> 
</span><span class="cx">     def install(self):
</span><del>-        call(&quot;pip&quot;, &quot;install&quot;, &quot;-r&quot;, &quot;w3c/wptrunner/requirements_firefox.txt&quot;)
</del><ins>+        &quot;&quot;&quot;Install Firefox.&quot;&quot;&quot;
+        call(&quot;pip&quot;, &quot;install&quot;, &quot;-r&quot;, os.path.join(wptrunner_root, &quot;requirements_firefox.txt&quot;))
</ins><span class="cx">         resp = get(&quot;https://archive.mozilla.org/pub/firefox/nightly/latest-mozilla-central/firefox-53.0a1.en-US.linux-x86_64.tar.bz2&quot;)
</span><span class="cx">         untar(resp.raw)
</span><span class="cx"> 
</span><span class="lines">@@ -200,9 +191,10 @@
</span><span class="cx">         with open(os.path.join(&quot;profiles&quot;, &quot;prefs_general.js&quot;), &quot;wb&quot;) as f:
</span><span class="cx">             resp = get(&quot;https://hg.mozilla.org/mozilla-central/raw-file/tip/testing/profiles/prefs_general.js&quot;)
</span><span class="cx">             f.write(resp.content)
</span><del>-        call(&quot;pip&quot;, &quot;install&quot;, &quot;-r&quot;, os.path.join(&quot;w3c&quot;, &quot;wptrunner&quot;, &quot;requirements_firefox.txt&quot;))
</del><ins>+        call(&quot;pip&quot;, &quot;install&quot;, &quot;-r&quot;, os.path.join(wptrunner_root, &quot;requirements_firefox.txt&quot;))
</ins><span class="cx"> 
</span><span class="cx">     def _latest_geckodriver_version(self):
</span><ins>+        &quot;&quot;&quot;Get and return latest version number for geckodriver.&quot;&quot;&quot;
</ins><span class="cx">         # This is used rather than an API call to avoid rate limits
</span><span class="cx">         tags = call(&quot;git&quot;, &quot;ls-remote&quot;, &quot;--tags&quot;, &quot;--refs&quot;,
</span><span class="cx">                     &quot;https://github.com/mozilla/geckodriver.git&quot;)
</span><span class="lines">@@ -218,15 +210,27 @@
</span><span class="cx">         return &quot;v%s.%s.%s&quot; % tuple(str(item) for item in latest_release)
</span><span class="cx"> 
</span><span class="cx">     def install_webdriver(self):
</span><ins>+        &quot;&quot;&quot;Install latest Geckodriver.&quot;&quot;&quot;
</ins><span class="cx">         version = self._latest_geckodriver_version()
</span><span class="cx">         logger.debug(&quot;Latest geckodriver release %s&quot; % version)
</span><span class="cx">         url = &quot;https://github.com/mozilla/geckodriver/releases/download/%s/geckodriver-%s-linux64.tar.gz&quot; % (version, version)
</span><span class="cx">         untar(get(url).raw)
</span><span class="cx"> 
</span><ins>+    def version(self, root):
+        &quot;&quot;&quot;Retrieve the release version of the installed browser.&quot;&quot;&quot;
+        platform_info = RawConfigParser()
+
+        with open(self.platform_ini % root, &quot;r&quot;) as fp:
+            platform_info.readfp(BytesIO(fp.read()))
+            return &quot;BuildID %s; SourceStamp %s&quot; % (
+                platform_info.get(&quot;Build&quot;, &quot;BuildID&quot;),
+                platform_info.get(&quot;Build&quot;, &quot;SourceStamp&quot;))
+
</ins><span class="cx">     def wptrunner_args(self, root):
</span><ins>+        &quot;&quot;&quot;Return Firefox-specific wpt-runner arguments.&quot;&quot;&quot;
</ins><span class="cx">         return {
</span><span class="cx">             &quot;product&quot;: &quot;firefox&quot;,
</span><del>-            &quot;binary&quot;: &quot;%s/firefox/firefox&quot; % root,
</del><ins>+            &quot;binary&quot;: self.binary % root,
</ins><span class="cx">             &quot;certutil_binary&quot;: &quot;certutil&quot;,
</span><span class="cx">             &quot;webdriver_binary&quot;: &quot;%s/geckodriver&quot; % root,
</span><span class="cx">             &quot;prefs_root&quot;: &quot;%s/profiles&quot; % root,
</span><span class="lines">@@ -234,16 +238,24 @@
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> class Chrome(Browser):
</span><ins>+    &quot;&quot;&quot;Chrome-specific interface.
+
+    Includes installation, webdriver installation, and wptrunner setup methods.
+    &quot;&quot;&quot;
+
</ins><span class="cx">     product = &quot;chrome&quot;
</span><ins>+    binary = &quot;/usr/bin/google-chrome&quot;
</ins><span class="cx"> 
</span><span class="cx">     def install(self):
</span><del>-        latest = get(&quot;https://www.googleapis.com/download/storage/v1/b/chromium-browser-snapshots/o/Linux_x64%2FLAST_CHANGE?alt=media&quot;).text.strip()
-        url = &quot;https://www.googleapis.com/download/storage/v1/b/chromium-browser-snapshots/o/Linux_x64%%2F%s%%2Fchrome-linux.zip?alt=media&quot; % latest
-        unzip(get(url).raw)
-        logger.debug(call(&quot;ls&quot;, &quot;-lhrt&quot;, &quot;chrome-linux&quot;))
-        call(&quot;pip&quot;, &quot;install&quot;, &quot;-r&quot;, os.path.join(&quot;w3c&quot;, &quot;wptrunner&quot;, &quot;requirements_chrome.txt&quot;))
</del><ins>+        &quot;&quot;&quot;Install Chrome.&quot;&quot;&quot;
</ins><span class="cx"> 
</span><ins>+        # Installing the Google Chrome browser requires administrative
+        # privileges, so that installation is handled by the invoking script.
+
+        call(&quot;pip&quot;, &quot;install&quot;, &quot;-r&quot;, os.path.join(wptrunner_root, &quot;requirements_chrome.txt&quot;))
+
</ins><span class="cx">     def install_webdriver(self):
</span><ins>+        &quot;&quot;&quot;Install latest Webdriver.&quot;&quot;&quot;
</ins><span class="cx">         latest = get(&quot;http://chromedriver.storage.googleapis.com/LATEST_RELEASE&quot;).text.strip()
</span><span class="cx">         url = &quot;http://chromedriver.storage.googleapis.com/%s/chromedriver_linux64.zip&quot; % latest
</span><span class="cx">         unzip(get(url).raw)
</span><span class="lines">@@ -250,10 +262,16 @@
</span><span class="cx">         st = os.stat('chromedriver')
</span><span class="cx">         os.chmod('chromedriver', st.st_mode | stat.S_IEXEC)
</span><span class="cx"> 
</span><ins>+    def version(self, root):
+        &quot;&quot;&quot;Retrieve the release version of the installed browser.&quot;&quot;&quot;
+        output = call(self.binary, &quot;--version&quot;)
+        return re.search(r&quot;[0-9\.]+( [a-z]+)?$&quot;, output.strip()).group(0)
+
</ins><span class="cx">     def wptrunner_args(self, root):
</span><ins>+        &quot;&quot;&quot;Return Chrome-specific wpt-runner arguments.&quot;&quot;&quot;
</ins><span class="cx">         return {
</span><span class="cx">             &quot;product&quot;: &quot;chrome&quot;,
</span><del>-            &quot;binary&quot;: &quot;%s/chrome-linux/chrome&quot; % root,
</del><ins>+            &quot;binary&quot;: self.binary,
</ins><span class="cx">             &quot;webdriver_binary&quot;: &quot;%s/chromedriver&quot; % root,
</span><span class="cx">             &quot;test_types&quot;: [&quot;testharness&quot;, &quot;reftest&quot;]
</span><span class="cx">         }
</span><span class="lines">@@ -260,6 +278,7 @@
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> def get(url):
</span><ins>+    &quot;&quot;&quot;Issue GET request to a given URL and return the response.&quot;&quot;&quot;
</ins><span class="cx">     logger.debug(&quot;GET %s&quot; % url)
</span><span class="cx">     resp = requests.get(url, stream=True)
</span><span class="cx">     resp.raise_for_status()
</span><span class="lines">@@ -267,6 +286,10 @@
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> def call(*args):
</span><ins>+    &quot;&quot;&quot;Log terminal command, invoke it as a subprocess.
+
+    Returns a bytestring of the subprocess output if no error.
+    &quot;&quot;&quot;
</ins><span class="cx">     logger.debug(&quot;%s&quot; % &quot; &quot;.join(args))
</span><span class="cx">     try:
</span><span class="cx">         return subprocess.check_output(args)
</span><span class="lines">@@ -278,6 +301,7 @@
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> def get_git_cmd(repo_path):
</span><ins>+    &quot;&quot;&quot;Create a function for invoking git commands as a subprocess.&quot;&quot;&quot;
</ins><span class="cx">     def git(cmd, *args):
</span><span class="cx">         full_cmd = [&quot;git&quot;, cmd] + list(args)
</span><span class="cx">         try:
</span><span class="lines">@@ -290,15 +314,17 @@
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> def seekable(fileobj):
</span><ins>+    &quot;&quot;&quot;Attempt to use file.seek on given file, with fallbacks.&quot;&quot;&quot;
</ins><span class="cx">     try:
</span><span class="cx">         fileobj.seek(fileobj.tell())
</span><span class="cx">     except Exception:
</span><del>-        return StringIO(fileobj.read())
</del><ins>+        return CStringIO(fileobj.read())
</ins><span class="cx">     else:
</span><span class="cx">         return fileobj
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> def untar(fileobj):
</span><ins>+    &quot;&quot;&quot;Extract tar archive.&quot;&quot;&quot;
</ins><span class="cx">     logger.debug(&quot;untar&quot;)
</span><span class="cx">     fileobj = seekable(fileobj)
</span><span class="cx">     with tarfile.open(fileobj=fileobj) as tar_data:
</span><span class="lines">@@ -306,6 +332,7 @@
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> def unzip(fileobj):
</span><ins>+    &quot;&quot;&quot;Extract zip archive.&quot;&quot;&quot;
</ins><span class="cx">     logger.debug(&quot;unzip&quot;)
</span><span class="cx">     fileobj = seekable(fileobj)
</span><span class="cx">     with zipfile.ZipFile(fileobj) as zip_data:
</span><span class="lines">@@ -315,25 +342,8 @@
</span><span class="cx">             os.chmod(info.filename, perm)
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-def setup_github_logging(args):
-    gh_handler = None
-    if args.comment_pr:
-        github = GitHub(&quot;w3c&quot;, &quot;web-platform-tests&quot;, args.gh_token, args.browser)
-        try:
-            pr_number = int(args.comment_pr)
-        except ValueError:
-            pass
-        else:
-            gh_handler = GitHubCommentHandler(github, pr_number)
-            gh_handler.setLevel(logging.INFO)
-            logger.debug(&quot;Setting up GitHub logging&quot;)
-            logger.addHandler(gh_handler)
-    else:
-        logger.warning(&quot;No PR number found; not posting to GitHub&quot;)
-    return gh_handler
-
-
</del><span class="cx"> class pwd(object):
</span><ins>+    &quot;&quot;&quot;Create context for temporarily changing present working directory.&quot;&quot;&quot;
</ins><span class="cx">     def __init__(self, dir):
</span><span class="cx">         self.dir = dir
</span><span class="cx">         self.old_dir = None
</span><span class="lines">@@ -347,99 +357,113 @@
</span><span class="cx">         self.old_dir = None
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-def fetch_wpt_master():
-    git = get_git_cmd(os.path.join(os.path.abspath(os.curdir), &quot;w3c&quot;, &quot;web-platform-tests&quot;))
-    git(&quot;fetch&quot;, &quot;https://github.com/w3c/web-platform-tests.git&quot;, &quot;master:master&quot;)
</del><ins>+def fetch_wpt_master(user):
+    &quot;&quot;&quot;Fetch the master branch via git.&quot;&quot;&quot;
+    git = get_git_cmd(wpt_root)
+    git(&quot;fetch&quot;, &quot;https://github.com/%s/web-platform-tests.git&quot; % user, &quot;master:master&quot;)
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> def get_sha1():
</span><del>-    git = get_git_cmd(os.path.join(os.path.abspath(os.curdir), &quot;w3c&quot;, &quot;web-platform-tests&quot;))
</del><ins>+    &quot;&quot;&quot; Get and return sha1 of current git branch HEAD commit.&quot;&quot;&quot;
+    git = get_git_cmd(wpt_root)
</ins><span class="cx">     return git(&quot;rev-parse&quot;, &quot;HEAD&quot;).strip()
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> def build_manifest():
</span><del>-    with pwd(os.path.join(os.path.abspath(os.curdir), &quot;w3c&quot;, &quot;web-platform-tests&quot;)):
</del><ins>+    &quot;&quot;&quot;Build manifest of all files in web-platform-tests&quot;&quot;&quot;
+    with pwd(wpt_root):
</ins><span class="cx">         # TODO: Call the manifest code directly
</span><span class="cx">         call(&quot;python&quot;, &quot;manifest&quot;)
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> def install_wptrunner():
</span><del>-    call(&quot;git&quot;, &quot;clone&quot;, &quot;--depth=1&quot;, &quot;https://github.com/w3c/wptrunner.git&quot;, &quot;w3c/wptrunner&quot;)
-    git = get_git_cmd(os.path.join(os.path.abspath(os.curdir), &quot;w3c&quot;, &quot;wptrunner&quot;))
</del><ins>+    &quot;&quot;&quot;Clone and install wptrunner.&quot;&quot;&quot;
+    call(&quot;git&quot;, &quot;clone&quot;, &quot;--depth=1&quot;, &quot;https://github.com/w3c/wptrunner.git&quot;, wptrunner_root)
+    git = get_git_cmd(wptrunner_root)
</ins><span class="cx">     git(&quot;submodule&quot;, &quot;update&quot;, &quot;--init&quot;, &quot;--recursive&quot;)
</span><del>-    call(&quot;pip&quot;, &quot;install&quot;, os.path.join(&quot;w3c&quot;, &quot;wptrunner&quot;))
</del><ins>+    call(&quot;pip&quot;, &quot;install&quot;, wptrunner_root)
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> def get_files_changed():
</span><ins>+    &quot;&quot;&quot;Get and return files changed since current branch diverged from master.&quot;&quot;&quot;
</ins><span class="cx">     root = os.path.abspath(os.curdir)
</span><del>-    git = get_git_cmd(&quot;%s/w3c/web-platform-tests&quot; % root)
</del><ins>+    git = get_git_cmd(wpt_root)
</ins><span class="cx">     branch_point = git(&quot;merge-base&quot;, &quot;HEAD&quot;, &quot;master&quot;).strip()
</span><span class="cx">     logger.debug(&quot;Branch point from master: %s&quot; % branch_point)
</span><del>-    logger.debug(git(&quot;log&quot;, &quot;--oneline&quot;, &quot;%s..&quot; % branch_point))
</del><span class="cx">     files = git(&quot;diff&quot;, &quot;--name-only&quot;, &quot;-z&quot;, &quot;%s..&quot; % branch_point)
</span><span class="cx">     if not files:
</span><span class="cx">         return []
</span><span class="cx">     assert files[-1] == &quot;\0&quot;
</span><del>-    return [&quot;%s/w3c/web-platform-tests/%s&quot; % (root, item)
</del><ins>+    return [os.path.join(wpt_root, item)
</ins><span class="cx">             for item in files[:-1].split(&quot;\0&quot;)]
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> def get_affected_testfiles(files_changed):
</span><del>-    affected_testfiles = []
-    all_tests = set()
</del><ins>+    &quot;&quot;&quot;Determine and return list of test files that reference changed files.&quot;&quot;&quot;
+    affected_testfiles = set()
</ins><span class="cx">     nontests_changed = set(files_changed)
</span><del>-    repo_root = os.path.abspath(os.path.join(os.path.abspath(os.curdir), &quot;w3c&quot;, &quot;web-platform-tests&quot;))
-    manifest_file = os.path.join(repo_root, &quot;MANIFEST.json&quot;)
-    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:]
</del><ins>+    manifest_file = os.path.join(wpt_root, &quot;MANIFEST.json&quot;)
+    skip_dirs = [&quot;conformance-checkers&quot;, &quot;docs&quot;, &quot;tools&quot;]
+    test_types = [&quot;testharness&quot;, &quot;reftest&quot;, &quot;wdspec&quot;]
+
+    wpt_manifest = manifest.load(wpt_root, manifest_file)
+
+    support_files = {os.path.join(wpt_root, path)
+                     for _, path, _ in wpt_manifest.itertypes(&quot;support&quot;)}
+    test_files = {os.path.join(wpt_root, path)
+                  for _, path, _ in wpt_manifest.itertypes(*test_types)}
+
+    nontests_changed = nontests_changed.intersection(support_files)
+
+    nontest_changed_paths = set()
+    for full_path in nontests_changed:
+        rel_path = os.path.relpath(full_path, wpt_root)
+        path_components = rel_path.split(os.sep)
</ins><span class="cx">         if len(path_components) &lt; 2:
</span><span class="cx">             # This changed file is in the repo root, so skip it
</span><span class="cx">             # (because it's not part of any test).
</span><span class="cx">             continue
</span><span class="cx">         top_level_subdir = path_components[0]
</span><del>-        if top_level_subdir in [&quot;conformance-checkers&quot;, &quot;docs&quot;]:
</del><ins>+        if top_level_subdir in skip_dirs:
</ins><span class="cx">             continue
</span><del>-        # 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 &quot;spec&quot; 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, &quot;r&quot;) as fh:
-                    file_contents = fh.read()
-                    changed_file_relpath = os.path.relpath(changedfile_pathname, root).replace(os.path.sep, &quot;/&quot;)
-                    if changed_file_relpath in file_contents or changed_file_repo_path.replace(os.path.sep, &quot;/&quot;) in file_contents:
-                        affected_testfiles.append(testfile_full_path)
</del><ins>+        repo_path = &quot;/&quot; + os.path.relpath(full_path, wpt_root).replace(os.path.sep, &quot;/&quot;)
+        nontest_changed_paths.add((full_path, repo_path))
+
+    for root, dirs, fnames in os.walk(wpt_root):
+        # Walk top_level_subdir looking for test files containing either the
+        # relative filepath or absolute filepatch to the changed files.
+        if root == wpt_root:
+            for dir_name in skip_dirs:
+                dirs.remove(dir_name)
+        for fname in fnames:
+            test_full_path = os.path.join(root, fname)
+            # Skip any file that's not a test file.
+            if test_full_path not in test_files:
+                continue
+            with open(test_full_path, &quot;rb&quot;) as fh:
+                file_contents = fh.read()
+                if file_contents.startswith(&quot;\xfe\xff&quot;):
+                    file_contents = file_contents.decode(&quot;utf-16be&quot;)
+                elif file_contents.startswith(&quot;\xff\xfe&quot;):
+                    file_contents = file_contents.decode(&quot;utf-16le&quot;)
+                for full_path, repo_path in nontest_changed_paths:
+                    rel_path = os.path.relpath(full_path, root).replace(os.path.sep, &quot;/&quot;)
+                    if rel_path in file_contents or repo_path in file_contents:
+                        affected_testfiles.add(test_full_path)
+                        continue
</ins><span class="cx">     return affected_testfiles
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> def wptrunner_args(root, files_changed, iterations, browser):
</span><ins>+    &quot;&quot;&quot;Derive and return arguments for wpt-runner.&quot;&quot;&quot;
</ins><span class="cx">     parser = wptcommandline.create_parser([browser.product])
</span><span class="cx">     args = vars(parser.parse_args([]))
</span><del>-    wpt_root = os.path.join(root, &quot;w3c&quot;, &quot;web-platform-tests&quot;)
</del><span class="cx">     args.update(browser.wptrunner_args(root))
</span><span class="cx">     args.update({
</span><span class="cx">         &quot;tests_root&quot;: wpt_root,
</span><span class="cx">         &quot;metadata_root&quot;: wpt_root,
</span><span class="cx">         &quot;repeat&quot;: iterations,
</span><del>-        &quot;config&quot;: &quot;%s/w3c/wptrunner/wptrunner.default.ini&quot; % root,
</del><ins>+        &quot;config&quot;: &quot;%s//wptrunner.default.ini&quot; % (wptrunner_root),
</ins><span class="cx">         &quot;test_list&quot;: files_changed,
</span><span class="cx">         &quot;restart_on_unexpected&quot;: False,
</span><span class="cx">         &quot;pause_after_test&quot;: False
</span><span class="lines">@@ -449,9 +473,15 @@
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> def setup_log_handler():
</span><ins>+    &quot;&quot;&quot;Set up LogHandler class as part of deferred module load.&quot;&quot;&quot;
</ins><span class="cx">     global LogHandler
</span><span class="cx"> 
</span><span class="cx">     class LogHandler(reader.LogHandler):
</span><ins>+
+        &quot;&quot;&quot;Handle updating test and subtest status in log.
+
+        Subclasses reader.LogHandler.
+        &quot;&quot;&quot;
</ins><span class="cx">         def __init__(self):
</span><span class="cx">             self.results = defaultdict(lambda: defaultdict(lambda: defaultdict(int)))
</span><span class="cx"> 
</span><span class="lines">@@ -463,10 +493,12 @@
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> def is_inconsistent(results_dict, iterations):
</span><ins>+    &quot;&quot;&quot;Return whether or not a single test is inconsistent.&quot;&quot;&quot;
</ins><span class="cx">     return len(results_dict) &gt; 1 or sum(results_dict.values()) != iterations
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> def err_string(results_dict, iterations):
</span><ins>+    &quot;&quot;&quot;Create and return string with errors from test run.&quot;&quot;&quot;
</ins><span class="cx">     rv = []
</span><span class="cx">     total_results = sum(results_dict.values())
</span><span class="cx">     for key, value in sorted(results_dict.items()):
</span><span class="lines">@@ -481,6 +513,7 @@
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> def process_results(log, iterations):
</span><ins>+    &quot;&quot;&quot;Process test log and return overall results and list of inconsistent tests.&quot;&quot;&quot;
</ins><span class="cx">     inconsistent = []
</span><span class="cx">     handler = LogHandler()
</span><span class="cx">     reader.handle_log(reader.read(log), handler)
</span><span class="lines">@@ -492,7 +525,23 @@
</span><span class="cx">     return results, inconsistent
</span><span class="cx"> 
</span><span class="cx"> 
</span><ins>+def format_comment_title(product):
+    &quot;&quot;&quot;Produce a Markdown-formatted string based on a given &quot;product&quot;--a string
+    containing a browser identifier optionally followed by a colon and a
+    release channel. (For example: &quot;firefox&quot; or &quot;chrome:dev&quot;.) The generated
+    title string is used both to create new comments and to locate (and
+    subsequently update) previously-submitted comments.&quot;&quot;&quot;
+    parts = product.split(&quot;:&quot;)
+    title = parts[0].title()
+
+    if len(parts) &gt; 1:
+       title += &quot; (%s channel)&quot; % parts[1]
+
+    return &quot;# %s #&quot; % title
+
+
</ins><span class="cx"> def markdown_adjust(s):
</span><ins>+    &quot;&quot;&quot;Escape problematic markdown sequences.&quot;&quot;&quot;
</ins><span class="cx">     s = s.replace('\t', u'\\t')
</span><span class="cx">     s = s.replace('\n', u'\\n')
</span><span class="cx">     s = s.replace('\r', u'\\r')
</span><span class="lines">@@ -501,6 +550,7 @@
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> def table(headings, data, log):
</span><ins>+    &quot;&quot;&quot;Create and log data to specified logger in tabular format.&quot;&quot;&quot;
</ins><span class="cx">     cols = range(len(headings))
</span><span class="cx">     assert all(len(item) == len(cols) for item in data)
</span><span class="cx">     max_widths = reduce(lambda prev, cur: [(len(cur[i]) + 2)
</span><span class="lines">@@ -515,8 +565,8 @@
</span><span class="cx">         log(&quot;|%s|&quot; % &quot;|&quot;.join(&quot; %s&quot; % row[i].ljust(max_widths[i] - 1) for i in cols))
</span><span class="cx">     log(&quot;&quot;)
</span><span class="cx"> 
</span><del>-
</del><span class="cx"> def write_inconsistent(inconsistent, iterations):
</span><ins>+    &quot;&quot;&quot;Output inconsistent tests to logger.error.&quot;&quot;&quot;
</ins><span class="cx">     logger.error(&quot;## Unstable results ##\n&quot;)
</span><span class="cx">     strings = [(&quot;`%s`&quot; % markdown_adjust(test), (&quot;`%s`&quot; % markdown_adjust(subtest)) if subtest else &quot;&quot;, err_string(results, iterations))
</span><span class="cx">                for test, subtest, results in inconsistent]
</span><span class="lines">@@ -524,6 +574,7 @@
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> def write_results(results, iterations, comment_pr):
</span><ins>+    &quot;&quot;&quot;Output all test results to logger.info.&quot;&quot;&quot;
</ins><span class="cx">     logger.info(&quot;## All results ##\n&quot;)
</span><span class="cx">     for test, test_results in results.iteritems():
</span><span class="cx">         baseurl = &quot;http://w3c-test.org/submissions&quot;
</span><span class="lines">@@ -552,6 +603,7 @@
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> def get_parser():
</span><ins>+    &quot;&quot;&quot;Create and return script-specific argument parser.&quot;&quot;&quot;
</ins><span class="cx">     parser = argparse.ArgumentParser()
</span><span class="cx">     parser.add_argument(&quot;--root&quot;,
</span><span class="cx">                         action=&quot;store&quot;,
</span><span class="lines">@@ -562,25 +614,46 @@
</span><span class="cx">                         default=10,
</span><span class="cx">                         type=int,
</span><span class="cx">                         help=&quot;Number of times to run tests&quot;)
</span><del>-    parser.add_argument(&quot;--gh-token&quot;,
-                        action=&quot;store&quot;,
-                        default=os.environ.get(&quot;GH_TOKEN&quot;),
-                        help=&quot;OAuth token to use for accessing GitHub api&quot;)
</del><span class="cx">     parser.add_argument(&quot;--comment-pr&quot;,
</span><span class="cx">                         action=&quot;store&quot;,
</span><span class="cx">                         default=os.environ.get(&quot;TRAVIS_PULL_REQUEST&quot;),
</span><span class="cx">                         help=&quot;PR to comment on with stability results&quot;)
</span><del>-    parser.add_argument(&quot;browser&quot;,
</del><ins>+    parser.add_argument(&quot;--user&quot;,
</ins><span class="cx">                         action=&quot;store&quot;,
</span><del>-                        help=&quot;Browser to run against&quot;)
</del><ins>+                        # Travis docs say do not depend on USER env variable.
+                        # This is a workaround to get what should be the same value
+                        default=os.environ.get(&quot;TRAVIS_REPO_SLUG&quot;).split('/')[0],
+                        help=&quot;Travis user name&quot;)
+    parser.add_argument(&quot;--output-bytes&quot;,
+                        action=&quot;store&quot;,
+                        type=int,
+                        help=&quot;Maximum number of bytes to write to standard output/error&quot;)
+    parser.add_argument(&quot;product&quot;,
+                        action=&quot;store&quot;,
+                        help=&quot;Product to run against (`browser-name` or 'browser-name:channel')&quot;)
</ins><span class="cx">     return parser
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> def main():
</span><ins>+    &quot;&quot;&quot;Perform check_stability functionality and return exit code.&quot;&quot;&quot;
+    global wpt_root
+    global wptrunner_root
+    global logger
+
</ins><span class="cx">     retcode = 0
</span><span class="cx">     parser = get_parser()
</span><span class="cx">     args = parser.parse_args()
</span><span class="cx"> 
</span><ins>+    if args.output_bytes is not None:
+        replace_streams(args.output_bytes,
+                        &quot;Log reached capacity (%s bytes); output disabled.&quot; % args.output_bytes)
+
+    logger = logging.getLogger(os.path.splitext(__file__)[0])
+    setup_logging()
+
+    wpt_root = os.path.abspath(os.curdir)
+    wptrunner_root = os.path.normpath(os.path.join(wpt_root, &quot;..&quot;, &quot;wptrunner&quot;))
+
</ins><span class="cx">     if not os.path.exists(args.root):
</span><span class="cx">         logger.critical(&quot;Root directory %s does not exist&quot; % args.root)
</span><span class="cx">         return 1
</span><span class="lines">@@ -587,25 +660,21 @@
</span><span class="cx"> 
</span><span class="cx">     os.chdir(args.root)
</span><span class="cx"> 
</span><del>-    if args.gh_token:
-        gh_handler = setup_github_logging(args)
-    else:
-        logger.warning(&quot;Can't log to GitHub&quot;)
-        gh_handler = None
</del><ins>+    browser_name = args.product.split(&quot;:&quot;)[0]
</ins><span class="cx"> 
</span><span class="cx">     with TravisFold(&quot;browser_setup&quot;):
</span><del>-        logger.info(&quot;# %s #&quot; % args.browser.title())
</del><ins>+        logger.info(format_comment_title(args.product))
</ins><span class="cx"> 
</span><span class="cx">         browser_cls = {&quot;firefox&quot;: Firefox,
</span><del>-                       &quot;chrome&quot;: Chrome}.get(args.browser)
</del><ins>+                       &quot;chrome&quot;: Chrome}.get(browser_name)
</ins><span class="cx">         if browser_cls is None:
</span><del>-            logger.critical(&quot;Unrecognised browser %s&quot; % args.browser)
</del><ins>+            logger.critical(&quot;Unrecognised browser %s&quot; % browser_name)
</ins><span class="cx">             return 1
</span><span class="cx"> 
</span><del>-        fetch_wpt_master()
</del><ins>+        fetch_wpt_master(args.user)
</ins><span class="cx"> 
</span><span class="cx">         head_sha1 = get_sha1()
</span><del>-        logger.info(&quot;Testing revision %s&quot; % head_sha1)
</del><ins>+        logger.info(&quot;Testing web-platform-tests at revision %s&quot; % head_sha1)
</ins><span class="cx"> 
</span><span class="cx">         # For now just pass the whole list of changed files to wptrunner and
</span><span class="cx">         # assume that it will run everything that's actually a test
</span><span class="lines">@@ -619,6 +688,16 @@
</span><span class="cx">         install_wptrunner()
</span><span class="cx">         do_delayed_imports()
</span><span class="cx"> 
</span><ins>+        browser = browser_cls()
+        browser.install()
+        browser.install_webdriver()
+
+        try:
+            version = browser.version(args.root)
+        except Exception, e:
+            version = &quot;unknown (error: %s)&quot; % e
+        logger.info(&quot;Using browser at version %s&quot;, version)
+
</ins><span class="cx">         logger.debug(&quot;Files changed:\n%s&quot; % &quot;&quot;.join(&quot; * %s\n&quot; % item for item in files_changed))
</span><span class="cx"> 
</span><span class="cx">         affected_testfiles = get_affected_testfiles(files_changed)
</span><span class="lines">@@ -627,11 +706,6 @@
</span><span class="cx"> 
</span><span class="cx">         files_changed.extend(affected_testfiles)
</span><span class="cx"> 
</span><del>-        browser = browser_cls(args.gh_token)
-
-        browser.install()
-        browser.install_webdriver()
-
</del><span class="cx">         kwargs = wptrunner_args(args.root,
</span><span class="cx">                                 files_changed,
</span><span class="cx">                                 args.iterations,
</span><span class="lines">@@ -670,11 +744,6 @@
</span><span class="cx">     else:
</span><span class="cx">         logger.info(&quot;No tests run.&quot;)
</span><span class="cx"> 
</span><del>-    try:
-        if gh_handler:
-            gh_handler.send()
-    except Exception:
-        logger.error(traceback.format_exc())
</del><span class="cx">     return retcode
</span><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsci_built_diffsh"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/ci_built_diff.sh (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/ci_built_diff.sh        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/ci_built_diff.sh        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -4,7 +4,7 @@
</span><span class="cx"> echo -e '[diff &quot;img&quot;]\n  textconv = identify -quiet -format &quot;%#&quot;' &gt;&gt; .git/config
</span><span class="cx"> echo -e '*.png diff=img' &gt;&gt; .git/info/attributes
</span><span class="cx"> 
</span><del>-# Exclude tests that rely on font rendering
</del><ins>+# Exclude tests that rely on font rendering
</ins><span class="cx"> excluded=(
</span><span class="cx">     '2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.basic.png'
</span><span class="cx">     '2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.large.png'
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsci_stabilitysh"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/ci_stability.sh (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/ci_stability.sh        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/ci_stability.sh        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -20,13 +20,38 @@
</span><span class="cx">     echo &quot;travis_fold:end:hosts_fixup&quot;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+install_chrome() {
+    channel=$1
+    deb_archive=google-chrome-${channel}_current_amd64.deb
+    wget https://dl.google.com/linux/direct/$deb_archive
</ins><span class="cx"> 
</span><ins>+    # If the environment provides an installation of Google Chrome, the
+    # existing binary may take precedence over the one introduced in this
+    # script. Remove any previously-existing &quot;alternatives&quot; prior to
+    # installation in order to ensure that the new binary is installed as
+    # intended.
+    if sudo update-alternatives --list google-chrome; then
+        sudo update-alternatives --remove-all google-chrome
+    fi
+
+    # Installation will fail in cases where the package has unmet dependencies.
+    # When this occurs, attempt to use the system package manager to fetch the
+    # required packages and retry.
+    if ! sudo dpkg --install $deb_archive; then
+      sudo apt-get install --fix-broken
+      sudo dpkg --install $deb_archive
+    fi
+}
+
</ins><span class="cx"> test_stability() {
</span><del>-    python check_stability.py $PRODUCT
</del><ins>+    python check_stability.py $PRODUCT --output-bytes $((1024 * 1024 * 3))
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> main() {
</span><span class="cx">     hosts_fixup
</span><ins>+    if [ $(echo $PRODUCT | grep '^chrome:') ]; then
+       install_chrome $(echo $PRODUCT | grep --only-matching '\w\+$')
+    fi
</ins><span class="cx">     test_stability
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscommonOWNERS"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/common/OWNERS (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/common/OWNERS        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/common/OWNERS        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,3 +1,4 @@
</span><span class="cx"> @zqzhang
</span><span class="cx"> @dontcallmedom
</span><span class="cx"> @deniak
</span><ins>+@gsnedders
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscustomelementsreactionsDOMTokenListexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/custom-elements/reactions/DOMTokenList-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/custom-elements/reactions/DOMTokenList-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/custom-elements/reactions/DOMTokenList-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -10,7 +10,6 @@
</span><span class="cx"> PASS remove on DOMTokenList must not enqueue an attributeChanged reaction when removing a value from an unobserved attribute 
</span><span class="cx"> PASS toggle on DOMTokenList must enqueue an attributeChanged reaction when adding a value to an attribute 
</span><span class="cx"> PASS toggle on DOMTokenList must enqueue an attributeChanged reaction when removing a value from an attribute 
</span><del>-PASS remove on DOMTokenList must not enqueue an attributeChanged reaction when removing a value from an unobserved attribute 
</del><span class="cx"> PASS replace on DOMTokenList must enqueue an attributeChanged reaction when replacing a value in an attribute 
</span><span class="cx"> PASS replace on DOMTokenList must not enqueue an attributeChanged reaction when the token to replace does not exist in the attribute 
</span><span class="cx"> PASS replace on DOMTokenList must not enqueue an attributeChanged reaction when replacing a value in an unobserved attribute 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscustomelementsreactionsDOMTokenListhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/custom-elements/reactions/DOMTokenList.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/custom-elements/reactions/DOMTokenList.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/custom-elements/reactions/DOMTokenList.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -126,15 +126,6 @@
</span><span class="cx"> }, 'toggle on DOMTokenList must enqueue an attributeChanged reaction when removing a value from an attribute');
</span><span class="cx"> 
</span><span class="cx"> test(function () {
</span><del>-    var element = define_new_custom_element(['lang']);
-    var instance = document.createElement(element.name);
-    instance.setAttribute('class', 'hello world');
-    assert_array_equals(element.takeLog().types(), ['constructed']);
-    instance.classList.toggle('world');
-    assert_array_equals(element.takeLog().types(), []);
-}, 'remove on DOMTokenList must not enqueue an attributeChanged reaction when removing a value from an unobserved attribute');
-
-test(function () {
</del><span class="cx">     var element = define_new_custom_element(['class']);
</span><span class="cx">     var instance = document.createElement(element.name);
</span><span class="cx">     instance.setAttribute('class', 'hello');
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventListenerinvokelegacyexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventListener-invoke-legacy-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventListener-invoke-legacy-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventListener-invoke-legacy-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,10 @@
</span><ins>+
+PASS Listener of transitionend 
+FAIL Legacy listener of transitionend assert_unreached: listener of webkitTransitionEnd should not be invoked again Reached unreachable code
+PASS Listener of animationend 
+FAIL Legacy listener of animationend assert_unreached: listener of webkitAnimationEnd should not be invoked again Reached unreachable code
+PASS Listener of animationiteration 
+FAIL Legacy listener of animationiteration assert_unreached: listener of webkitAnimationIteration should not be invoked again Reached unreachable code
+PASS Listener of animationstart 
+FAIL Legacy listener of animationstart assert_unreached: listener of webkitAnimationStart should not be invoked again Reached unreachable code
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventListenerinvokelegacyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventListener-invoke-legacy.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventListener-invoke-legacy.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventListener-invoke-legacy.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,72 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;Invoke legacy event listener&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;style&gt;
+  @keyframes test {
+    0% { color: red; }
+    100% { color: green; }
+  }
+&lt;/style&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+function runLegacyEventTest(type, legacyType, ctor, setup) {
+  function createTestElem(t) {
+    var elem = document.createElement('div');
+    document.body.appendChild(elem);
+    t.add_cleanup(function() {
+      document.body.removeChild(elem);
+    });
+    return elem;
+  }
+
+  async_test(function(t) {
+    var elem = createTestElem(t);
+    var gotEvent = false;
+    elem.addEventListener(legacyType,
+      t.unreached_func(&quot;listener of &quot; + legacyType + &quot; should not be invoked&quot;));
+    elem.addEventListener(type, t.step_func(function() {
+      assert_false(gotEvent, &quot;unexpected &quot; + type + &quot; event&quot;);
+      gotEvent = true;
+      t.step_timeout(function() { t.done(); }, 100);
+    }));
+    setup(elem);
+  }, &quot;Listener of &quot; + type);
+
+  async_test(function(t) {
+    var elem = createTestElem(t);
+    var count = 0;
+    elem.addEventListener(legacyType, t.step_func(function() {
+      ++count;
+      if (count &gt; 1) {
+        assert_unreached(&quot;listener of &quot; + legacyType + &quot; should not be invoked again&quot;);
+        return;
+      }
+      elem.dispatchEvent(new ctor(type));
+      t.done();
+    }));
+    setup(elem);
+  }, &quot;Legacy listener of &quot; + type);
+}
+
+function setupTransition(elem) {
+  elem.style.transition = '';
+  requestAnimationFrame(function() {
+    elem.style.color = 'red';
+    elem.style.transition = 'color 30ms';
+    requestAnimationFrame(function() {
+      elem.style.color = 'green';
+    });
+  });
+}
+
+function setupAnimation(elem) {
+  elem.style.animation = 'test 30ms 2';
+}
+
+runLegacyEventTest('transitionend', 'webkitTransitionEnd', TransitionEvent, setupTransition);
+runLegacyEventTest('animationend', 'webkitAnimationEnd', AnimationEvent, setupAnimation);
+runLegacyEventTest('animationiteration', 'webkitAnimationIteration', AnimationEvent, setupAnimation);
+runLegacyEventTest('animationstart', 'webkitAnimationStart', AnimationEvent, setupAnimation);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomeventsw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/w3c-import.log (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/w3c-import.log        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/w3c-import.log        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -52,9 +52,9 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/dom/events/EventListener-incumbent-global-subframe-1.sub.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/dom/events/EventListener-incumbent-global-subframe-2.sub.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/dom/events/EventListener-incumbent-global-subsubframe.sub.html
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventListener-invoke-legacy.html
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/dom/events/EventListenerOptions-capture.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/dom/events/EventTarget-addEventListener.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/dom/events/EventTarget-dispatchEvent-returnvalue.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/dom/events/EventTarget-dispatchEvent.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/dom/events/EventTarget-removeEventListener.html
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/dom/events/ProgressEvent.html
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomlistsDOMTokenListiterationexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/lists/DOMTokenList-iteration-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/lists/DOMTokenList-iteration-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/lists/DOMTokenList-iteration-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,3 +1,3 @@
</span><span class="cx"> 
</span><del>-FAIL DOMTokenList iteration: keys, values, etc. assert_array_equals: lengths differ, expected 3 got 2
</del><ins>+PASS DOMTokenList iteration: keys, values, etc. 
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomlistsDOMTokenListiterationhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/lists/DOMTokenList-iteration.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/lists/DOMTokenList-iteration.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/lists/DOMTokenList-iteration.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -7,17 +7,17 @@
</span><span class="cx"> &lt;script&gt;
</span><span class="cx">   test(function() {
</span><span class="cx">     var list = document.querySelector(&quot;span&quot;).classList;
</span><del>-    assert_array_equals([...list], [&quot;a&quot;, &quot;a&quot;, &quot;b&quot;]);
</del><ins>+    assert_array_equals([...list], [&quot;a&quot;, &quot;b&quot;]);
</ins><span class="cx"> 
</span><span class="cx">     var keys = list.keys();
</span><span class="cx">     assert_false(keys instanceof Array);
</span><span class="cx">     keys = [...keys];
</span><del>-    assert_array_equals(keys, [0, 1, 2]);
</del><ins>+    assert_array_equals(keys, [0, 1]);
</ins><span class="cx"> 
</span><span class="cx">     var values = list.values();
</span><span class="cx">     assert_false(values instanceof Array);
</span><span class="cx">     values = [...values];
</span><del>-    assert_array_equals(values, [&quot;a&quot;, &quot;a&quot;, &quot;b&quot;]);
</del><ins>+    assert_array_equals(values, [&quot;a&quot;, &quot;b&quot;]);
</ins><span class="cx"> 
</span><span class="cx">     var entries = list.entries();
</span><span class="cx">     assert_false(entries instanceof Array);
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDOMImplementationcreateDocumentexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DOMImplementation-createDocument-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DOMImplementation-createDocument-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DOMImplementation-createDocument-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -153,7 +153,6 @@
</span><span class="cx"> PASS createDocument test: &quot;http://example.com/&quot;,&quot;xml&quot;,null,null 
</span><span class="cx"> PASS createDocument test: metadata for &quot;http://example.com/&quot;,&quot;xml&quot;,null 
</span><span class="cx"> PASS createDocument test: characterSet aliases for &quot;http://example.com/&quot;,&quot;xml&quot;,null 
</span><del>-PASS createDocument test: &quot;http://example.com/&quot;,&quot;xmlns&quot;,null,&quot;NAMESPACE_ERR&quot; 
</del><span class="cx"> PASS createDocument test: &quot;http://example.com/&quot;,&quot;XMLNS&quot;,null,null 
</span><span class="cx"> PASS createDocument test: metadata for &quot;http://example.com/&quot;,&quot;XMLNS&quot;,null 
</span><span class="cx"> PASS createDocument test: characterSet aliases for &quot;http://example.com/&quot;,&quot;XMLNS&quot;,null 
</span><span class="lines">@@ -303,9 +302,6 @@
</span><span class="cx"> PASS createDocument test: metadata for &quot;foo:&quot;,&quot;xmlfoo:bar&quot;,null 
</span><span class="cx"> PASS createDocument test: characterSet aliases for &quot;foo:&quot;,&quot;xmlfoo:bar&quot;,null 
</span><span class="cx"> PASS createDocument test: null,null,false,object &quot;TypeError&quot; 
</span><del>-PASS createDocument test: null,null,null,null 
-PASS createDocument test: metadata for null,null,null 
-PASS createDocument test: characterSet aliases for null,null,null 
</del><span class="cx"> PASS createDocument test: null,&quot;&quot;,null,null 
</span><span class="cx"> PASS createDocument test: metadata for null,&quot;&quot;,null 
</span><span class="cx"> PASS createDocument test: characterSet aliases for null,&quot;&quot;,null 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDOMImplementationcreateDocumenthtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DOMImplementation-createDocument.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DOMImplementation-createDocument.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DOMImplementation-createDocument.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -37,7 +37,6 @@
</span><span class="cx">      *   the expected exception, or null if none
</span><span class="cx">      */
</span><span class="cx">     [null, null, false, new TypeError()],
</span><del>-    [null, null, null, null],
</del><span class="cx">     [null, &quot;&quot;, null, null],
</span><span class="cx">     [undefined, null, undefined, null],
</span><span class="cx">     [undefined, undefined, undefined, null],
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateElementNSexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createElementNS-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createElementNS-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createElementNS-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -260,9 +260,6 @@
</span><span class="cx"> PASS createElementNS test in HTML document: &quot;http://example.com/&quot;,&quot;xml&quot;,null 
</span><span class="cx"> PASS createElementNS test in XML document: &quot;http://example.com/&quot;,&quot;xml&quot;,null 
</span><span class="cx"> PASS createElementNS test in XHTML document: &quot;http://example.com/&quot;,&quot;xml&quot;,null 
</span><del>-PASS createElementNS test in HTML document: &quot;http://example.com/&quot;,&quot;xmlns&quot;,&quot;NAMESPACE_ERR&quot; 
-PASS createElementNS test in XML document: &quot;http://example.com/&quot;,&quot;xmlns&quot;,&quot;NAMESPACE_ERR&quot; 
-PASS createElementNS test in XHTML document: &quot;http://example.com/&quot;,&quot;xmlns&quot;,&quot;NAMESPACE_ERR&quot; 
</del><span class="cx"> PASS createElementNS test in HTML document: &quot;http://example.com/&quot;,&quot;XMLNS&quot;,null 
</span><span class="cx"> PASS createElementNS test in XML document: &quot;http://example.com/&quot;,&quot;XMLNS&quot;,null 
</span><span class="cx"> PASS createElementNS test in XHTML document: &quot;http://example.com/&quot;,&quot;XMLNS&quot;,null 
</span><span class="lines">@@ -536,15 +533,9 @@
</span><span class="cx"> PASS createElementNS test in HTML document: &quot;&quot;,&quot;&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
</span><span class="cx"> PASS createElementNS test in XML document: &quot;&quot;,&quot;&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
</span><span class="cx"> PASS createElementNS test in XHTML document: &quot;&quot;,&quot;&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
</span><del>-PASS createElementNS test in HTML document: null,null,null 
-PASS createElementNS test in XML document: null,null,null 
-PASS createElementNS test in XHTML document: null,null,null 
</del><span class="cx"> PASS createElementNS test in HTML document: null,&quot;&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
</span><span class="cx"> PASS createElementNS test in XML document: null,&quot;&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
</span><span class="cx"> PASS createElementNS test in XHTML document: null,&quot;&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
</span><del>-PASS createElementNS test in HTML document: undefined,null,null 
-PASS createElementNS test in XML document: undefined,null,null 
-PASS createElementNS test in XHTML document: undefined,null,null 
</del><span class="cx"> PASS createElementNS test in HTML document: undefined,&quot;&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
</span><span class="cx"> PASS createElementNS test in XML document: undefined,&quot;&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
</span><span class="cx"> PASS createElementNS test in XHTML document: undefined,&quot;&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateElementNShtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createElementNS.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createElementNS.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createElementNS.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -16,9 +16,7 @@
</span><span class="cx">    *   the expected exception, or null if none
</span><span class="cx">    */
</span><span class="cx">   [&quot;&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
</span><del>-  [null, null, null],
</del><span class="cx">   [null, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
</span><del>-  [undefined, null, null],
</del><span class="cx">   [undefined, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
</span><span class="cx">   [&quot;http://example.com/&quot;, null, null],
</span><span class="cx">   [&quot;http://example.com/&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateElementNSjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createElementNS.js (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createElementNS.js        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createElementNS.js        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -91,7 +91,6 @@
</span><span class="cx">   [&quot;http://example.com/&quot;, &quot;a.b:c&quot;, null],
</span><span class="cx">   [&quot;http://example.com/&quot;, &quot;a-b:c&quot;, null],
</span><span class="cx">   [&quot;http://example.com/&quot;, &quot;xml&quot;, null],
</span><del>-  [&quot;http://example.com/&quot;, &quot;xmlns&quot;, &quot;NAMESPACE_ERR&quot;],
</del><span class="cx">   [&quot;http://example.com/&quot;, &quot;XMLNS&quot;, null],
</span><span class="cx">   [&quot;http://example.com/&quot;, &quot;xmlfoo&quot;, null],
</span><span class="cx">   [&quot;http://example.com/&quot;, &quot;xml:foo&quot;, &quot;NAMESPACE_ERR&quot;],
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodeisSameNodeexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isSameNode-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isSameNode-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isSameNode-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,7 +1,7 @@
</span><span class="cx"> 
</span><span class="cx"> PASS doctypes should be comapred on reference 
</span><del>-PASS elements should be compared on reference 
-PASS elements should be compared on reference 
</del><ins>+PASS elements should be compared on reference (namespaced element) 
+PASS elements should be compared on reference (namespaced attribute) 
</ins><span class="cx"> PASS processing instructions should be compared on reference 
</span><span class="cx"> PASS text nodes should be compared on reference 
</span><span class="cx"> PASS comments should be compared on reference 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodeisSameNodehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isSameNode.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isSameNode.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isSameNode.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -26,7 +26,7 @@
</span><span class="cx">   assert_false(element1.isSameNode(element2), &quot;same properties&quot;);
</span><span class="cx">   assert_false(element1.isSameNode(null), &quot;with null other node&quot;);
</span><span class="cx"> 
</span><del>-}, &quot;elements should be compared on reference&quot;);
</del><ins>+}, &quot;elements should be compared on reference (namespaced element)&quot;);
</ins><span class="cx"> 
</span><span class="cx"> test(function() {
</span><span class="cx"> 
</span><span class="lines">@@ -40,7 +40,7 @@
</span><span class="cx">   assert_false(element1.isSameNode(element2), &quot;same properties&quot;);
</span><span class="cx">   assert_false(element1.isSameNode(null), &quot;with null other node&quot;);
</span><span class="cx"> 
</span><del>-}, &quot;elements should be compared on reference&quot;);
</del><ins>+}, &quot;elements should be compared on reference (namespaced attribute)&quot;);
</ins><span class="cx"> 
</span><span class="cx"> test(function() {
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodeListIterableexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/NodeList-Iterable-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/NodeList-Iterable-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/NodeList-Iterable-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,3 +1,4 @@
</span><ins>+123
</ins><span class="cx"> 
</span><span class="cx"> PASS NodeList has length method. 
</span><span class="cx"> PASS NodeList has values method. 
</span><span class="lines">@@ -5,4 +6,6 @@
</span><span class="cx"> PASS NodeList has forEach method. 
</span><span class="cx"> PASS NodeList has Symbol.iterator. 
</span><span class="cx"> PASS NodeList is iterable via for-of loop. 
</span><ins>+PASS NodeList responds to Object.keys correctly 
+PASS live NodeLists are for-of iterable and update appropriately 
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodeListIterablehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/NodeList-Iterable.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/NodeList-Iterable.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/NodeList-Iterable.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -8,6 +8,8 @@
</span><span class="cx">     &lt;p id=&quot;3&quot;&gt;&lt;/p&gt;
</span><span class="cx">     &lt;p id=&quot;4&quot;&gt;&lt;/p&gt;
</span><span class="cx">     &lt;p id=&quot;5&quot;&gt;&lt;/p&gt;
</span><ins>+
+    &lt;div id=&quot;live&quot;&gt;&lt;b id=&quot;b1&quot;&gt;1&lt;/b&gt;&lt;b id=&quot;b2&quot;&gt;2&lt;/b&gt;&lt;b id=&quot;b3&quot;&gt;3&lt;/b&gt;&lt;/div&gt;
</ins><span class="cx"> &lt;script&gt;
</span><span class="cx">     var paragraphs;
</span><span class="cx">     setup(function() {
</span><span class="lines">@@ -34,4 +36,26 @@
</span><span class="cx">             assert_equals(node.getAttribute('id'), ids[idx++]);
</span><span class="cx">         }
</span><span class="cx">     }, 'NodeList is iterable via for-of loop.');
</span><ins>+
+    test(function() {
+        assert_array_equals(Object.keys(paragraphs), ['0', '1', '2', '3', '4']);
+    }, 'NodeList responds to Object.keys correctly');
+
+    test(function() {
+        var container = document.getElementById('live');
+        var nodeList = container.childNodes;
+
+        var ids = [];
+        for (var el of nodeList) {
+            ids.push(el.id);
+            assert_equals(el.localName, 'b');
+            if (ids.length &lt; 3) {
+                var newEl = document.createElement('b');
+                newEl.id = 'after' + el.id;
+                container.appendChild(newEl);
+            }
+        }
+
+        assert_array_equals(ids, ['b1', 'b2', 'b3', 'afterb1', 'afterb2']);
+    }, 'live NodeLists are for-of iterable and update appropriately');
</ins><span class="cx"> &lt;/script&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangeselectNodeexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-selectNode-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-selectNode-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-selectNode-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,278 +1,278 @@
</span><span class="cx"> 
</span><del>-PASS  current doc: #document node, current doc's range, type 9 
-PASS  current doc: #document node, foreign doc's range, type 9 
-PASS  current doc: #document node, XML doc's range, type 9 
-PASS  current doc: #document node, detached range, type 9 
-PASS ** current doc: html node, current doc's range, type 10 
-PASS ** current doc: html node, foreign doc's range, type 10 
-PASS ** current doc: html node, XML doc's range, type 10 
-PASS ** current doc: html node, detached range, type 10 
-PASS ** current doc: html node, current doc's range, type 1 
-PASS ** current doc: html node, foreign doc's range, type 1 
-PASS ** current doc: html node, XML doc's range, type 1 
-PASS ** current doc: html node, detached range, type 1 
-PASS **** current doc: head node, current doc's range, type 1 
-PASS **** current doc: head node, foreign doc's range, type 1 
-PASS **** current doc: head node, XML doc's range, type 1 
-PASS **** current doc: head node, detached range, type 1 
-PASS ****** current doc: title node, current doc's range, type 1 
-PASS ****** current doc: title node, foreign doc's range, type 1 
-PASS ****** current doc: title node, XML doc's range, type 1 
-PASS ****** current doc: title node, detached range, type 1 
-PASS ******** current doc: #text node, current doc's range, type 3 
-PASS ******** current doc: #text node, foreign doc's range, type 3 
-PASS ******** current doc: #text node, XML doc's range, type 3 
-PASS ******** current doc: #text node, detached range, type 3 
-PASS ****** current doc: #text node, current doc's range, type 3 
-PASS ****** current doc: #text node, foreign doc's range, type 3 
-PASS ****** current doc: #text node, XML doc's range, type 3 
-PASS ****** current doc: #text node, detached range, type 3 
-PASS ****** current doc: link node, current doc's range, type 1 
-PASS ****** current doc: link node, foreign doc's range, type 1 
-PASS ****** current doc: link node, XML doc's range, type 1 
-PASS ****** current doc: link node, detached range, type 1 
-PASS ****** current doc: #text node, current doc's range, type 3 
-PASS ****** current doc: #text node, foreign doc's range, type 3 
-PASS ****** current doc: #text node, XML doc's range, type 3 
-PASS ****** current doc: #text node, detached range, type 3 
-PASS ****** current doc: meta node, current doc's range, type 1 
-PASS ****** current doc: meta node, foreign doc's range, type 1 
-PASS ****** current doc: meta node, XML doc's range, type 1 
-PASS ****** current doc: meta node, detached range, type 1 
-PASS ****** current doc: #text node, current doc's range, type 3 
-PASS ****** current doc: #text node, foreign doc's range, type 3 
-PASS ****** current doc: #text node, XML doc's range, type 3 
-PASS ****** current doc: #text node, detached range, type 3 
-PASS **** current doc: body node, current doc's range, type 1 
-PASS **** current doc: body node, foreign doc's range, type 1 
-PASS **** current doc: body node, XML doc's range, type 1 
-PASS **** current doc: body node, detached range, type 1 
-PASS ****** current doc: div node, current doc's range, type 1 
-PASS ****** current doc: div node, foreign doc's range, type 1 
-PASS ****** current doc: div node, XML doc's range, type 1 
-PASS ****** current doc: div node, detached range, type 1 
-PASS ******** current doc: p node, current doc's range, type 1 
-PASS ******** current doc: p node, foreign doc's range, type 1 
-PASS ******** current doc: p node, XML doc's range, type 1 
-PASS ******** current doc: p node, detached range, type 1 
-PASS ********** current doc: #text node, current doc's range, type 3 
-PASS ********** current doc: #text node, foreign doc's range, type 3 
-PASS ********** current doc: #text node, XML doc's range, type 3 
-PASS ********** current doc: #text node, detached range, type 3 
-PASS ******** current doc: p node, current doc's range, type 1 
-PASS ******** current doc: p node, foreign doc's range, type 1 
-PASS ******** current doc: p node, XML doc's range, type 1 
-PASS ******** current doc: p node, detached range, type 1 
-PASS ********** current doc: #text node, current doc's range, type 3 
-PASS ********** current doc: #text node, foreign doc's range, type 3 
-PASS ********** current doc: #text node, XML doc's range, type 3 
-PASS ********** current doc: #text node, detached range, type 3 
-PASS ******** current doc: p node, current doc's range, type 1 
-PASS ******** current doc: p node, foreign doc's range, type 1 
-PASS ******** current doc: p node, XML doc's range, type 1 
-PASS ******** current doc: p node, detached range, type 1 
-PASS ********** current doc: #text node, current doc's range, type 3 
-PASS ********** current doc: #text node, foreign doc's range, type 3 
-PASS ********** current doc: #text node, XML doc's range, type 3 
-PASS ********** current doc: #text node, detached range, type 3 
-PASS ******** current doc: p node, current doc's range, type 1 
-PASS ******** current doc: p node, foreign doc's range, type 1 
-PASS ******** current doc: p node, XML doc's range, type 1 
-PASS ******** current doc: p node, detached range, type 1 
-PASS ********** current doc: #text node, current doc's range, type 3 
-PASS ********** current doc: #text node, foreign doc's range, type 3 
-PASS ********** current doc: #text node, XML doc's range, type 3 
-PASS ********** current doc: #text node, detached range, type 3 
-PASS ******** current doc: p node, current doc's range, type 1 
-PASS ******** current doc: p node, foreign doc's range, type 1 
-PASS ******** current doc: p node, XML doc's range, type 1 
-PASS ******** current doc: p node, detached range, type 1 
-PASS ********** current doc: #text node, current doc's range, type 3 
-PASS ********** current doc: #text node, foreign doc's range, type 3 
-PASS ********** current doc: #text node, XML doc's range, type 3 
-PASS ********** current doc: #text node, detached range, type 3 
-PASS ******** current doc: #comment node, current doc's range, type 8 
-PASS ******** current doc: #comment node, foreign doc's range, type 8 
-PASS ******** current doc: #comment node, XML doc's range, type 8 
-PASS ******** current doc: #comment node, detached range, type 8 
-PASS ****** current doc: #text node, current doc's range, type 3 
-PASS ****** current doc: #text node, foreign doc's range, type 3 
-PASS ****** current doc: #text node, XML doc's range, type 3 
-PASS ****** current doc: #text node, detached range, type 3 
-PASS ****** current doc: script node, current doc's range, type 1 
-PASS ****** current doc: script node, foreign doc's range, type 1 
-PASS ****** current doc: script node, XML doc's range, type 1 
-PASS ****** current doc: script node, detached range, type 1 
-PASS ****** current doc: #text node, current doc's range, type 3 
-PASS ****** current doc: #text node, foreign doc's range, type 3 
-PASS ****** current doc: #text node, XML doc's range, type 3 
-PASS ****** current doc: #text node, detached range, type 3 
-PASS ****** current doc: script node, current doc's range, type 1 
-PASS ****** current doc: script node, foreign doc's range, type 1 
-PASS ****** current doc: script node, XML doc's range, type 1 
-PASS ****** current doc: script node, detached range, type 1 
-PASS ****** current doc: #text node, current doc's range, type 3 
-PASS ****** current doc: #text node, foreign doc's range, type 3 
-PASS ****** current doc: #text node, XML doc's range, type 3 
-PASS ****** current doc: #text node, detached range, type 3 
-PASS ****** current doc: script node, current doc's range, type 1 
-PASS ****** current doc: script node, foreign doc's range, type 1 
-PASS ****** current doc: script node, XML doc's range, type 1 
-PASS ****** current doc: script node, detached range, type 1 
-PASS ****** current doc: #text node, current doc's range, type 3 
-PASS ****** current doc: #text node, foreign doc's range, type 3 
-PASS ****** current doc: #text node, XML doc's range, type 3 
-PASS ****** current doc: #text node, detached range, type 3 
-PASS ****** current doc: script node, current doc's range, type 1 
-PASS ****** current doc: script node, foreign doc's range, type 1 
-PASS ****** current doc: script node, XML doc's range, type 1 
-PASS ****** current doc: script node, detached range, type 1 
-PASS ******** current doc: #text node, current doc's range, type 3 
-PASS ******** current doc: #text node, foreign doc's range, type 3 
-PASS ******** current doc: #text node, XML doc's range, type 3 
-PASS ******** current doc: #text node, detached range, type 3 
-PASS  foreign doc: #document node, current doc's range, type 9 
-PASS  foreign doc: #document node, foreign doc's range, type 9 
-PASS  foreign doc: #document node, XML doc's range, type 9 
-PASS  foreign doc: #document node, detached range, type 9 
-PASS ** foreign doc: html node, current doc's range, type 10 
-PASS ** foreign doc: html node, foreign doc's range, type 10 
-PASS ** foreign doc: html node, XML doc's range, type 10 
-PASS ** foreign doc: html node, detached range, type 10 
-PASS ** foreign doc: html node, current doc's range, type 1 
-PASS ** foreign doc: html node, foreign doc's range, type 1 
-PASS ** foreign doc: html node, XML doc's range, type 1 
-PASS ** foreign doc: html node, detached range, type 1 
-PASS **** foreign doc: head node, current doc's range, type 1 
-PASS **** foreign doc: head node, foreign doc's range, type 1 
-PASS **** foreign doc: head node, XML doc's range, type 1 
-PASS **** foreign doc: head node, detached range, type 1 
-PASS ****** foreign doc: title node, current doc's range, type 1 
-PASS ****** foreign doc: title node, foreign doc's range, type 1 
-PASS ****** foreign doc: title node, XML doc's range, type 1 
-PASS ****** foreign doc: title node, detached range, type 1 
-PASS ******** foreign doc: #text node, current doc's range, type 3 
-PASS ******** foreign doc: #text node, foreign doc's range, type 3 
-PASS ******** foreign doc: #text node, XML doc's range, type 3 
-PASS ******** foreign doc: #text node, detached range, type 3 
-PASS **** foreign doc: body node, current doc's range, type 1 
-PASS **** foreign doc: body node, foreign doc's range, type 1 
-PASS **** foreign doc: body node, XML doc's range, type 1 
-PASS **** foreign doc: body node, detached range, type 1 
-PASS ****** foreign doc: p node, current doc's range, type 1 
-PASS ****** foreign doc: p node, foreign doc's range, type 1 
-PASS ****** foreign doc: p node, XML doc's range, type 1 
-PASS ****** foreign doc: p node, detached range, type 1 
-PASS ******** foreign doc: #text node, current doc's range, type 3 
-PASS ******** foreign doc: #text node, foreign doc's range, type 3 
-PASS ******** foreign doc: #text node, XML doc's range, type 3 
-PASS ******** foreign doc: #text node, detached range, type 3 
-PASS ****** foreign doc: p node, current doc's range, type 1 
-PASS ****** foreign doc: p node, foreign doc's range, type 1 
-PASS ****** foreign doc: p node, XML doc's range, type 1 
-PASS ****** foreign doc: p node, detached range, type 1 
-PASS ******** foreign doc: #text node, current doc's range, type 3 
-PASS ******** foreign doc: #text node, foreign doc's range, type 3 
-PASS ******** foreign doc: #text node, XML doc's range, type 3 
-PASS ******** foreign doc: #text node, detached range, type 3 
-PASS ****** foreign doc: #text node, current doc's range, type 3 
-PASS ****** foreign doc: #text node, foreign doc's range, type 3 
-PASS ****** foreign doc: #text node, XML doc's range, type 3 
-PASS ****** foreign doc: #text node, detached range, type 3 
-PASS ** foreign doc: #comment node, current doc's range, type 8 
-PASS ** foreign doc: #comment node, foreign doc's range, type 8 
-PASS ** foreign doc: #comment node, XML doc's range, type 8 
-PASS ** foreign doc: #comment node, detached range, type 8 
-PASS  detached div in current doc: div node, current doc's range, type 1 
-PASS  detached div in current doc: div node, foreign doc's range, type 1 
-PASS  detached div in current doc: div node, XML doc's range, type 1 
-PASS  detached div in current doc: div node, detached range, type 1 
-PASS ** detached div in current doc: p node, current doc's range, type 1 
-PASS ** detached div in current doc: p node, foreign doc's range, type 1 
-PASS ** detached div in current doc: p node, XML doc's range, type 1 
-PASS ** detached div in current doc: p node, detached range, type 1 
-PASS **** detached div in current doc: #text node, current doc's range, type 3 
-PASS **** detached div in current doc: #text node, foreign doc's range, type 3 
-PASS **** detached div in current doc: #text node, XML doc's range, type 3 
-PASS **** detached div in current doc: #text node, detached range, type 3 
-PASS ** detached div in current doc: p node, current doc's range, type 1 
-PASS ** detached div in current doc: p node, foreign doc's range, type 1 
-PASS ** detached div in current doc: p node, XML doc's range, type 1 
-PASS ** detached div in current doc: p node, detached range, type 1 
-PASS **** detached div in current doc: #text node, current doc's range, type 3 
-PASS **** detached div in current doc: #text node, foreign doc's range, type 3 
-PASS **** detached div in current doc: #text node, XML doc's range, type 3 
-PASS **** detached div in current doc: #text node, detached range, type 3 
-PASS  #document node, current doc's range, type 9 
-PASS  #document node, foreign doc's range, type 9 
-PASS  #document node, XML doc's range, type 9 
-PASS  #document node, detached range, type 9 
-PASS ** qorflesnorf node, current doc's range, type 10 
-PASS ** qorflesnorf node, foreign doc's range, type 10 
-PASS ** qorflesnorf node, XML doc's range, type 10 
-PASS ** qorflesnorf node, detached range, type 10 
-PASS ** igiveuponcreativenames node, current doc's range, type 1 
-PASS ** igiveuponcreativenames node, foreign doc's range, type 1 
-PASS ** igiveuponcreativenames node, XML doc's range, type 1 
-PASS ** igiveuponcreativenames node, detached range, type 1 
-PASS **** #text node, current doc's range, type 3 
-PASS **** #text node, foreign doc's range, type 3 
-PASS **** #text node, XML doc's range, type 3 
-PASS **** #text node, detached range, type 3 
-PASS ** somepi node, current doc's range, type 7 
-PASS ** somepi node, foreign doc's range, type 7 
-PASS ** somepi node, XML doc's range, type 7 
-PASS ** somepi node, detached range, type 7 
-PASS ** #comment node, current doc's range, type 8 
-PASS ** #comment node, foreign doc's range, type 8 
-PASS ** #comment node, XML doc's range, type 8 
-PASS ** #comment node, detached range, type 8 
-PASS  igiveuponcreativenames node, current doc's range, type 1 
-PASS  igiveuponcreativenames node, foreign doc's range, type 1 
-PASS  igiveuponcreativenames node, XML doc's range, type 1 
-PASS  igiveuponcreativenames node, detached range, type 1 
-PASS ** #text node, current doc's range, type 3 
-PASS ** #text node, foreign doc's range, type 3 
-PASS ** #text node, XML doc's range, type 3 
-PASS ** #text node, detached range, type 3 
-PASS  #text node, current doc's range, type 3 
-PASS  #text node, foreign doc's range, type 3 
-PASS  #text node, XML doc's range, type 3 
-PASS  #text node, detached range, type 3 
-PASS  #text node, current doc's range, type 3 
-PASS  #text node, foreign doc's range, type 3 
-PASS  #text node, XML doc's range, type 3 
-PASS  #text node, detached range, type 3 
-PASS  #text node, current doc's range, type 3 
-PASS  #text node, foreign doc's range, type 3 
-PASS  #text node, XML doc's range, type 3 
-PASS  #text node, detached range, type 3 
-PASS  somepi node, current doc's range, type 7 
-PASS  somepi node, foreign doc's range, type 7 
-PASS  somepi node, XML doc's range, type 7 
-PASS  somepi node, detached range, type 7 
-PASS  #comment node, current doc's range, type 8 
-PASS  #comment node, foreign doc's range, type 8 
-PASS  #comment node, XML doc's range, type 8 
-PASS  #comment node, detached range, type 8 
-PASS  #comment node, current doc's range, type 8 
-PASS  #comment node, foreign doc's range, type 8 
-PASS  #comment node, XML doc's range, type 8 
-PASS  #comment node, detached range, type 8 
-PASS  #comment node, current doc's range, type 8 
-PASS  #comment node, foreign doc's range, type 8 
-PASS  #comment node, XML doc's range, type 8 
-PASS  #comment node, detached range, type 8 
-PASS  #document-fragment node, current doc's range, type 11 
-PASS  #document-fragment node, foreign doc's range, type 11 
-PASS  #document-fragment node, XML doc's range, type 11 
-PASS  #document-fragment node, detached range, type 11 
-PASS  #document-fragment node, current doc's range, type 11 
-PASS  #document-fragment node, foreign doc's range, type 11 
-PASS  #document-fragment node, XML doc's range, type 11 
-PASS  #document-fragment node, detached range, type 11 
-PASS  #document-fragment node, current doc's range, type 11 
-PASS  #document-fragment node, foreign doc's range, type 11 
-PASS  #document-fragment node, XML doc's range, type 11 
-PASS  #document-fragment node, detached range, type 11 
</del><ins>+PASS current doc: #document node, current doc's range, type 9 
+PASS current doc: #document node, foreign doc's range, type 9 
+PASS current doc: #document node, XML doc's range, type 9 
+PASS current doc: #document node, detached range, type 9 
+PASS current doc[0]: html node, current doc's range, type 10 
+PASS current doc[0]: html node, foreign doc's range, type 10 
+PASS current doc[0]: html node, XML doc's range, type 10 
+PASS current doc[0]: html node, detached range, type 10 
+PASS current doc[1]: html node, current doc's range, type 1 
+PASS current doc[1]: html node, foreign doc's range, type 1 
+PASS current doc[1]: html node, XML doc's range, type 1 
+PASS current doc[1]: html node, detached range, type 1 
+PASS current doc[1][0]: head node, current doc's range, type 1 
+PASS current doc[1][0]: head node, foreign doc's range, type 1 
+PASS current doc[1][0]: head node, XML doc's range, type 1 
+PASS current doc[1][0]: head node, detached range, type 1 
+PASS current doc[1][0][0]: title node, current doc's range, type 1 
+PASS current doc[1][0][0]: title node, foreign doc's range, type 1 
+PASS current doc[1][0][0]: title node, XML doc's range, type 1 
+PASS current doc[1][0][0]: title node, detached range, type 1 
+PASS current doc[1][0][0][0]: #text node, current doc's range, type 3 
+PASS current doc[1][0][0][0]: #text node, foreign doc's range, type 3 
+PASS current doc[1][0][0][0]: #text node, XML doc's range, type 3 
+PASS current doc[1][0][0][0]: #text node, detached range, type 3 
+PASS current doc[1][0][1]: #text node, current doc's range, type 3 
+PASS current doc[1][0][1]: #text node, foreign doc's range, type 3 
+PASS current doc[1][0][1]: #text node, XML doc's range, type 3 
+PASS current doc[1][0][1]: #text node, detached range, type 3 
+PASS current doc[1][0][2]: link node, current doc's range, type 1 
+PASS current doc[1][0][2]: link node, foreign doc's range, type 1 
+PASS current doc[1][0][2]: link node, XML doc's range, type 1 
+PASS current doc[1][0][2]: link node, detached range, type 1 
+PASS current doc[1][0][3]: #text node, current doc's range, type 3 
+PASS current doc[1][0][3]: #text node, foreign doc's range, type 3 
+PASS current doc[1][0][3]: #text node, XML doc's range, type 3 
+PASS current doc[1][0][3]: #text node, detached range, type 3 
+PASS current doc[1][0][4]: meta node, current doc's range, type 1 
+PASS current doc[1][0][4]: meta node, foreign doc's range, type 1 
+PASS current doc[1][0][4]: meta node, XML doc's range, type 1 
+PASS current doc[1][0][4]: meta node, detached range, type 1 
+PASS current doc[1][0][5]: #text node, current doc's range, type 3 
+PASS current doc[1][0][5]: #text node, foreign doc's range, type 3 
+PASS current doc[1][0][5]: #text node, XML doc's range, type 3 
+PASS current doc[1][0][5]: #text node, detached range, type 3 
+PASS current doc[1][1]: body node, current doc's range, type 1 
+PASS current doc[1][1]: body node, foreign doc's range, type 1 
+PASS current doc[1][1]: body node, XML doc's range, type 1 
+PASS current doc[1][1]: body node, detached range, type 1 
+PASS current doc[1][1][0]: div node, current doc's range, type 1 
+PASS current doc[1][1][0]: div node, foreign doc's range, type 1 
+PASS current doc[1][1][0]: div node, XML doc's range, type 1 
+PASS current doc[1][1][0]: div node, detached range, type 1 
+PASS current doc[1][1][0][0]: p node, current doc's range, type 1 
+PASS current doc[1][1][0][0]: p node, foreign doc's range, type 1 
+PASS current doc[1][1][0][0]: p node, XML doc's range, type 1 
+PASS current doc[1][1][0][0]: p node, detached range, type 1 
+PASS current doc[1][1][0][0][0]: #text node, current doc's range, type 3 
+PASS current doc[1][1][0][0][0]: #text node, foreign doc's range, type 3 
+PASS current doc[1][1][0][0][0]: #text node, XML doc's range, type 3 
+PASS current doc[1][1][0][0][0]: #text node, detached range, type 3 
+PASS current doc[1][1][0][1]: p node, current doc's range, type 1 
+PASS current doc[1][1][0][1]: p node, foreign doc's range, type 1 
+PASS current doc[1][1][0][1]: p node, XML doc's range, type 1 
+PASS current doc[1][1][0][1]: p node, detached range, type 1 
+PASS current doc[1][1][0][1][0]: #text node, current doc's range, type 3 
+PASS current doc[1][1][0][1][0]: #text node, foreign doc's range, type 3 
+PASS current doc[1][1][0][1][0]: #text node, XML doc's range, type 3 
+PASS current doc[1][1][0][1][0]: #text node, detached range, type 3 
+PASS current doc[1][1][0][2]: p node, current doc's range, type 1 
+PASS current doc[1][1][0][2]: p node, foreign doc's range, type 1 
+PASS current doc[1][1][0][2]: p node, XML doc's range, type 1 
+PASS current doc[1][1][0][2]: p node, detached range, type 1 
+PASS current doc[1][1][0][2][0]: #text node, current doc's range, type 3 
+PASS current doc[1][1][0][2][0]: #text node, foreign doc's range, type 3 
+PASS current doc[1][1][0][2][0]: #text node, XML doc's range, type 3 
+PASS current doc[1][1][0][2][0]: #text node, detached range, type 3 
+PASS current doc[1][1][0][3]: p node, current doc's range, type 1 
+PASS current doc[1][1][0][3]: p node, foreign doc's range, type 1 
+PASS current doc[1][1][0][3]: p node, XML doc's range, type 1 
+PASS current doc[1][1][0][3]: p node, detached range, type 1 
+PASS current doc[1][1][0][3][0]: #text node, current doc's range, type 3 
+PASS current doc[1][1][0][3][0]: #text node, foreign doc's range, type 3 
+PASS current doc[1][1][0][3][0]: #text node, XML doc's range, type 3 
+PASS current doc[1][1][0][3][0]: #text node, detached range, type 3 
+PASS current doc[1][1][0][4]: p node, current doc's range, type 1 
+PASS current doc[1][1][0][4]: p node, foreign doc's range, type 1 
+PASS current doc[1][1][0][4]: p node, XML doc's range, type 1 
+PASS current doc[1][1][0][4]: p node, detached range, type 1 
+PASS current doc[1][1][0][4][0]: #text node, current doc's range, type 3 
+PASS current doc[1][1][0][4][0]: #text node, foreign doc's range, type 3 
+PASS current doc[1][1][0][4][0]: #text node, XML doc's range, type 3 
+PASS current doc[1][1][0][4][0]: #text node, detached range, type 3 
+PASS current doc[1][1][0][5]: #comment node, current doc's range, type 8 
+PASS current doc[1][1][0][5]: #comment node, foreign doc's range, type 8 
+PASS current doc[1][1][0][5]: #comment node, XML doc's range, type 8 
+PASS current doc[1][1][0][5]: #comment node, detached range, type 8 
+PASS current doc[1][1][2]: #text node, current doc's range, type 3 
+PASS current doc[1][1][2]: #text node, foreign doc's range, type 3 
+PASS current doc[1][1][2]: #text node, XML doc's range, type 3 
+PASS current doc[1][1][2]: #text node, detached range, type 3 
+PASS current doc[1][1][3]: script node, current doc's range, type 1 
+PASS current doc[1][1][3]: script node, foreign doc's range, type 1 
+PASS current doc[1][1][3]: script node, XML doc's range, type 1 
+PASS current doc[1][1][3]: script node, detached range, type 1 
+PASS current doc[1][1][4]: #text node, current doc's range, type 3 
+PASS current doc[1][1][4]: #text node, foreign doc's range, type 3 
+PASS current doc[1][1][4]: #text node, XML doc's range, type 3 
+PASS current doc[1][1][4]: #text node, detached range, type 3 
+PASS current doc[1][1][5]: script node, current doc's range, type 1 
+PASS current doc[1][1][5]: script node, foreign doc's range, type 1 
+PASS current doc[1][1][5]: script node, XML doc's range, type 1 
+PASS current doc[1][1][5]: script node, detached range, type 1 
+PASS current doc[1][1][6]: #text node, current doc's range, type 3 
+PASS current doc[1][1][6]: #text node, foreign doc's range, type 3 
+PASS current doc[1][1][6]: #text node, XML doc's range, type 3 
+PASS current doc[1][1][6]: #text node, detached range, type 3 
+PASS current doc[1][1][7]: script node, current doc's range, type 1 
+PASS current doc[1][1][7]: script node, foreign doc's range, type 1 
+PASS current doc[1][1][7]: script node, XML doc's range, type 1 
+PASS current doc[1][1][7]: script node, detached range, type 1 
+PASS current doc[1][1][8]: #text node, current doc's range, type 3 
+PASS current doc[1][1][8]: #text node, foreign doc's range, type 3 
+PASS current doc[1][1][8]: #text node, XML doc's range, type 3 
+PASS current doc[1][1][8]: #text node, detached range, type 3 
+PASS current doc[1][1][9]: script node, current doc's range, type 1 
+PASS current doc[1][1][9]: script node, foreign doc's range, type 1 
+PASS current doc[1][1][9]: script node, XML doc's range, type 1 
+PASS current doc[1][1][9]: script node, detached range, type 1 
+PASS current doc[1][1][9][0]: #text node, current doc's range, type 3 
+PASS current doc[1][1][9][0]: #text node, foreign doc's range, type 3 
+PASS current doc[1][1][9][0]: #text node, XML doc's range, type 3 
+PASS current doc[1][1][9][0]: #text node, detached range, type 3 
+PASS foreign doc: #document node, current doc's range, type 9 
+PASS foreign doc: #document node, foreign doc's range, type 9 
+PASS foreign doc: #document node, XML doc's range, type 9 
+PASS foreign doc: #document node, detached range, type 9 
+PASS foreign doc[0]: html node, current doc's range, type 10 
+PASS foreign doc[0]: html node, foreign doc's range, type 10 
+PASS foreign doc[0]: html node, XML doc's range, type 10 
+PASS foreign doc[0]: html node, detached range, type 10 
+PASS foreign doc[1]: html node, current doc's range, type 1 
+PASS foreign doc[1]: html node, foreign doc's range, type 1 
+PASS foreign doc[1]: html node, XML doc's range, type 1 
+PASS foreign doc[1]: html node, detached range, type 1 
+PASS foreign doc[1][0]: head node, current doc's range, type 1 
+PASS foreign doc[1][0]: head node, foreign doc's range, type 1 
+PASS foreign doc[1][0]: head node, XML doc's range, type 1 
+PASS foreign doc[1][0]: head node, detached range, type 1 
+PASS foreign doc[1][0][0]: title node, current doc's range, type 1 
+PASS foreign doc[1][0][0]: title node, foreign doc's range, type 1 
+PASS foreign doc[1][0][0]: title node, XML doc's range, type 1 
+PASS foreign doc[1][0][0]: title node, detached range, type 1 
+PASS foreign doc[1][0][0][0]: #text node, current doc's range, type 3 
+PASS foreign doc[1][0][0][0]: #text node, foreign doc's range, type 3 
+PASS foreign doc[1][0][0][0]: #text node, XML doc's range, type 3 
+PASS foreign doc[1][0][0][0]: #text node, detached range, type 3 
+PASS foreign doc[1][1]: body node, current doc's range, type 1 
+PASS foreign doc[1][1]: body node, foreign doc's range, type 1 
+PASS foreign doc[1][1]: body node, XML doc's range, type 1 
+PASS foreign doc[1][1]: body node, detached range, type 1 
+PASS foreign doc[1][1][0]: p node, current doc's range, type 1 
+PASS foreign doc[1][1][0]: p node, foreign doc's range, type 1 
+PASS foreign doc[1][1][0]: p node, XML doc's range, type 1 
+PASS foreign doc[1][1][0]: p node, detached range, type 1 
+PASS foreign doc[1][1][0][0]: #text node, current doc's range, type 3 
+PASS foreign doc[1][1][0][0]: #text node, foreign doc's range, type 3 
+PASS foreign doc[1][1][0][0]: #text node, XML doc's range, type 3 
+PASS foreign doc[1][1][0][0]: #text node, detached range, type 3 
+PASS foreign doc[1][1][1]: p node, current doc's range, type 1 
+PASS foreign doc[1][1][1]: p node, foreign doc's range, type 1 
+PASS foreign doc[1][1][1]: p node, XML doc's range, type 1 
+PASS foreign doc[1][1][1]: p node, detached range, type 1 
+PASS foreign doc[1][1][1][0]: #text node, current doc's range, type 3 
+PASS foreign doc[1][1][1][0]: #text node, foreign doc's range, type 3 
+PASS foreign doc[1][1][1][0]: #text node, XML doc's range, type 3 
+PASS foreign doc[1][1][1][0]: #text node, detached range, type 3 
+PASS foreign doc[1][1][2]: #text node, current doc's range, type 3 
+PASS foreign doc[1][1][2]: #text node, foreign doc's range, type 3 
+PASS foreign doc[1][1][2]: #text node, XML doc's range, type 3 
+PASS foreign doc[1][1][2]: #text node, detached range, type 3 
+PASS foreign doc[2]: #comment node, current doc's range, type 8 
+PASS foreign doc[2]: #comment node, foreign doc's range, type 8 
+PASS foreign doc[2]: #comment node, XML doc's range, type 8 
+PASS foreign doc[2]: #comment node, detached range, type 8 
+PASS detached div in current doc: div node, current doc's range, type 1 
+PASS detached div in current doc: div node, foreign doc's range, type 1 
+PASS detached div in current doc: div node, XML doc's range, type 1 
+PASS detached div in current doc: div node, detached range, type 1 
+PASS detached div in current doc[0]: p node, current doc's range, type 1 
+PASS detached div in current doc[0]: p node, foreign doc's range, type 1 
+PASS detached div in current doc[0]: p node, XML doc's range, type 1 
+PASS detached div in current doc[0]: p node, detached range, type 1 
+PASS detached div in current doc[0][0]: #text node, current doc's range, type 3 
+PASS detached div in current doc[0][0]: #text node, foreign doc's range, type 3 
+PASS detached div in current doc[0][0]: #text node, XML doc's range, type 3 
+PASS detached div in current doc[0][0]: #text node, detached range, type 3 
+PASS detached div in current doc[1]: p node, current doc's range, type 1 
+PASS detached div in current doc[1]: p node, foreign doc's range, type 1 
+PASS detached div in current doc[1]: p node, XML doc's range, type 1 
+PASS detached div in current doc[1]: p node, detached range, type 1 
+PASS detached div in current doc[1][0]: #text node, current doc's range, type 3 
+PASS detached div in current doc[1][0]: #text node, foreign doc's range, type 3 
+PASS detached div in current doc[1][0]: #text node, XML doc's range, type 3 
+PASS detached div in current doc[1][0]: #text node, detached range, type 3 
+PASS xmlDoc: #document node, current doc's range, type 9 
+PASS xmlDoc: #document node, foreign doc's range, type 9 
+PASS xmlDoc: #document node, XML doc's range, type 9 
+PASS xmlDoc: #document node, detached range, type 9 
+PASS xmlDoc[0]: qorflesnorf node, current doc's range, type 10 
+PASS xmlDoc[0]: qorflesnorf node, foreign doc's range, type 10 
+PASS xmlDoc[0]: qorflesnorf node, XML doc's range, type 10 
+PASS xmlDoc[0]: qorflesnorf node, detached range, type 10 
+PASS xmlDoc[1]: igiveuponcreativenames node, current doc's range, type 1 
+PASS xmlDoc[1]: igiveuponcreativenames node, foreign doc's range, type 1 
+PASS xmlDoc[1]: igiveuponcreativenames node, XML doc's range, type 1 
+PASS xmlDoc[1]: igiveuponcreativenames node, detached range, type 1 
+PASS xmlDoc[1][0]: #text node, current doc's range, type 3 
+PASS xmlDoc[1][0]: #text node, foreign doc's range, type 3 
+PASS xmlDoc[1][0]: #text node, XML doc's range, type 3 
+PASS xmlDoc[1][0]: #text node, detached range, type 3 
+PASS xmlDoc[2]: somepi node, current doc's range, type 7 
+PASS xmlDoc[2]: somepi node, foreign doc's range, type 7 
+PASS xmlDoc[2]: somepi node, XML doc's range, type 7 
+PASS xmlDoc[2]: somepi node, detached range, type 7 
+PASS xmlDoc[3]: #comment node, current doc's range, type 8 
+PASS xmlDoc[3]: #comment node, foreign doc's range, type 8 
+PASS xmlDoc[3]: #comment node, XML doc's range, type 8 
+PASS xmlDoc[3]: #comment node, detached range, type 8 
+PASS xmlElement: igiveuponcreativenames node, current doc's range, type 1 
+PASS xmlElement: igiveuponcreativenames node, foreign doc's range, type 1 
+PASS xmlElement: igiveuponcreativenames node, XML doc's range, type 1 
+PASS xmlElement: igiveuponcreativenames node, detached range, type 1 
+PASS xmlElement[0]: #text node, current doc's range, type 3 
+PASS xmlElement[0]: #text node, foreign doc's range, type 3 
+PASS xmlElement[0]: #text node, XML doc's range, type 3 
+PASS xmlElement[0]: #text node, detached range, type 3 
+PASS detachedTextNode: #text node, current doc's range, type 3 
+PASS detachedTextNode: #text node, foreign doc's range, type 3 
+PASS detachedTextNode: #text node, XML doc's range, type 3 
+PASS detachedTextNode: #text node, detached range, type 3 
+PASS foreignTextNode: #text node, current doc's range, type 3 
+PASS foreignTextNode: #text node, foreign doc's range, type 3 
+PASS foreignTextNode: #text node, XML doc's range, type 3 
+PASS foreignTextNode: #text node, detached range, type 3 
+PASS xmlTextNode: #text node, current doc's range, type 3 
+PASS xmlTextNode: #text node, foreign doc's range, type 3 
+PASS xmlTextNode: #text node, XML doc's range, type 3 
+PASS xmlTextNode: #text node, detached range, type 3 
+PASS processingInstruction: somepi node, current doc's range, type 7 
+PASS processingInstruction: somepi node, foreign doc's range, type 7 
+PASS processingInstruction: somepi node, XML doc's range, type 7 
+PASS processingInstruction: somepi node, detached range, type 7 
+PASS comment: #comment node, current doc's range, type 8 
+PASS comment: #comment node, foreign doc's range, type 8 
+PASS comment: #comment node, XML doc's range, type 8 
+PASS comment: #comment node, detached range, type 8 
+PASS foreignComment: #comment node, current doc's range, type 8 
+PASS foreignComment: #comment node, foreign doc's range, type 8 
+PASS foreignComment: #comment node, XML doc's range, type 8 
+PASS foreignComment: #comment node, detached range, type 8 
+PASS xmlComment: #comment node, current doc's range, type 8 
+PASS xmlComment: #comment node, foreign doc's range, type 8 
+PASS xmlComment: #comment node, XML doc's range, type 8 
+PASS xmlComment: #comment node, detached range, type 8 
+PASS docfrag: #document-fragment node, current doc's range, type 11 
+PASS docfrag: #document-fragment node, foreign doc's range, type 11 
+PASS docfrag: #document-fragment node, XML doc's range, type 11 
+PASS docfrag: #document-fragment node, detached range, type 11 
+PASS foreignDocfrag: #document-fragment node, current doc's range, type 11 
+PASS foreignDocfrag: #document-fragment node, foreign doc's range, type 11 
+PASS foreignDocfrag: #document-fragment node, XML doc's range, type 11 
+PASS foreignDocfrag: #document-fragment node, detached range, type 11 
+PASS xmlDocfrag: #document-fragment node, current doc's range, type 11 
+PASS xmlDocfrag: #document-fragment node, foreign doc's range, type 11 
+PASS xmlDocfrag: #document-fragment node, XML doc's range, type 11 
+PASS xmlDocfrag: #document-fragment node, detached range, type 11 
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangeselectNodehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-selectNode.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-selectNode.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-selectNode.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -73,24 +73,24 @@
</span><span class="cx">         // This is being modified during the tests, so let's not test it.
</span><span class="cx">         return;
</span><span class="cx">     }
</span><del>-    tests.push([marker + root.nodeName.toLowerCase() + &quot; node, current doc's range, type &quot; + root.nodeType, range, root]);
-    tests.push([marker + root.nodeName.toLowerCase() + &quot; node, foreign doc's range, type &quot; + root.nodeType, foreignRange, root]);
-    tests.push([marker + root.nodeName.toLowerCase() + &quot; node, XML doc's range, type &quot; + root.nodeType, xmlRange, root]);
-    tests.push([marker + root.nodeName.toLowerCase() + &quot; node, detached range, type &quot; + root.nodeType, detachedRange, root]);
</del><ins>+    tests.push([marker + &quot;: &quot; + root.nodeName.toLowerCase() + &quot; node, current doc's range, type &quot; + root.nodeType, range, root]);
+    tests.push([marker + &quot;: &quot; + root.nodeName.toLowerCase() + &quot; node, foreign doc's range, type &quot; + root.nodeType, foreignRange, root]);
+    tests.push([marker + &quot;: &quot; + root.nodeName.toLowerCase() + &quot; node, XML doc's range, type &quot; + root.nodeType, xmlRange, root]);
+    tests.push([marker + &quot;: &quot; + root.nodeName.toLowerCase() + &quot; node, detached range, type &quot; + root.nodeType, detachedRange, root]);
</ins><span class="cx">     for (var i = 0; i &lt; root.childNodes.length; i++) {
</span><del>-        testTree(root.childNodes[i], &quot;**&quot; + marker);
</del><ins>+        testTree(root.childNodes[i], marker + &quot;[&quot; + i + &quot;]&quot;);
</ins><span class="cx">     }
</span><span class="cx"> }
</span><del>-testTree(document, &quot; current doc: &quot;);
-testTree(foreignDoc, &quot; foreign doc: &quot;);
-testTree(detachedDiv, &quot; detached div in current doc: &quot;);
</del><ins>+testTree(document, &quot;current doc&quot;);
+testTree(foreignDoc, &quot;foreign doc&quot;);
+testTree(detachedDiv, &quot;detached div in current doc&quot;);
</ins><span class="cx"> 
</span><del>-var otherTests = [xmlDoc, xmlElement, detachedTextNode, foreignTextNode,
-xmlTextNode, processingInstruction, comment, foreignComment, xmlComment,
-docfrag, foreignDocfrag, xmlDocfrag];
</del><ins>+var otherTests = [&quot;xmlDoc&quot;, &quot;xmlElement&quot;, &quot;detachedTextNode&quot;,
+&quot;foreignTextNode&quot;, &quot;xmlTextNode&quot;, &quot;processingInstruction&quot;, &quot;comment&quot;,
+&quot;foreignComment&quot;, &quot;xmlComment&quot;, &quot;docfrag&quot;, &quot;foreignDocfrag&quot;, &quot;xmlDocfrag&quot;];
</ins><span class="cx"> 
</span><span class="cx"> for (var i = 0; i &lt; otherTests.length; i++) {
</span><del>-    testTree(otherTests[i], &quot; &quot;);
</del><ins>+    testTree(window[otherTests[i]], otherTests[i]);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> generate_tests(testSelectNode, tests);
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight.js (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight.js        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight.js        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -33,11 +33,8 @@
</span><span class="cx">       requestInit[&quot;headers&quot;] = requestHeaders;
</span><span class="cx"> 
</span><span class="cx">       if (allowed) {
</span><del>-        urlParameters += &quot;&amp;allow_methods=&quot; + method;
</del><ins>+        urlParameters += &quot;&amp;allow_methods=&quot; + method + &quot;&amp;control_request_headers&quot;;
</ins><span class="cx">         if (headers) {
</span><del>-          //Let's check prefligh request.
-          //Server will send back headers from Access-Control-Request-Headers in x-control-request-headers
-          urlParameters += &quot;&amp;control_request_headers&quot;
</del><span class="cx">           //Make the server allow the headers
</span><span class="cx">           urlParameters += &quot;&amp;allow_headers=&quot; + headerNames(headers).join(&quot;%20%2C&quot;);
</span><span class="cx">         }
</span><span class="lines">@@ -54,6 +51,8 @@
</span><span class="cx">             let accessControlAllowHeaders = headerNames(headers).sort().join(&quot;,&quot;);
</span><span class="cx">             assert_equals(resp.headers.get(&quot;x-control-request-headers&quot;), accessControlAllowHeaders, &quot;Access-Control-Allow-Headers value&quot;);
</span><span class="cx">             return fetch(RESOURCES_DIR + &quot;clean-stash.py?token=&quot; + uuid_token);
</span><ins>+          } else {
+            assert_equals(resp.headers.get(&quot;x-control-request-headers&quot;), null, &quot;Access-Control-Request-Headers should be omitted&quot;)
</ins><span class="cx">           }
</span><span class="cx">         });
</span><span class="cx">       } else {
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapiheadersheadervaluesexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/header-values-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/header-values-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/header-values-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,10 @@
</span><ins>+
+PASS XMLHttpRequest with value x%00x needs to throw 
+PASS fetch() with value x%00x needs to throw 
+PASS XMLHttpRequest with value x%0Ax needs to throw 
+PASS fetch() with value x%0Ax needs to throw 
+PASS XMLHttpRequest with value x%0Dx needs to throw 
+PASS fetch() with value x%0Dx needs to throw 
+FAIL XMLHttpRequest with all valid values The string did not match the expected pattern.
+FAIL fetch() with all valid values Type error
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapiheadersheadervaluesnormalizeexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/header-values-normalize-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/header-values-normalize-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/header-values-normalize-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,64 @@
</span><ins>+
+PASS XMLHttpRequest with value %00 
+PASS fetch() with value %00 
+FAIL XMLHttpRequest with value %01 The string did not match the expected pattern.
+FAIL fetch() with value %01 promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
+FAIL XMLHttpRequest with value %02 The string did not match the expected pattern.
+FAIL fetch() with value %02 promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
+FAIL XMLHttpRequest with value %03 The string did not match the expected pattern.
+FAIL fetch() with value %03 promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
+FAIL XMLHttpRequest with value %04 The string did not match the expected pattern.
+FAIL fetch() with value %04 promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
+FAIL XMLHttpRequest with value %05 The string did not match the expected pattern.
+FAIL fetch() with value %05 promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
+FAIL XMLHttpRequest with value %06 The string did not match the expected pattern.
+FAIL fetch() with value %06 promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
+FAIL XMLHttpRequest with value %07 The string did not match the expected pattern.
+FAIL fetch() with value %07 promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
+FAIL XMLHttpRequest with value %08 The string did not match the expected pattern.
+FAIL fetch() with value %08 promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
+PASS XMLHttpRequest with value %09 
+PASS fetch() with value %09 
+PASS XMLHttpRequest with value %0A 
+PASS fetch() with value %0A 
+PASS XMLHttpRequest with value %0D 
+PASS fetch() with value %0D 
+FAIL XMLHttpRequest with value %0E The string did not match the expected pattern.
+FAIL fetch() with value %0E promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
+FAIL XMLHttpRequest with value %0F The string did not match the expected pattern.
+FAIL fetch() with value %0F promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
+FAIL XMLHttpRequest with value %10 The string did not match the expected pattern.
+FAIL fetch() with value %10 promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
+FAIL XMLHttpRequest with value %11 The string did not match the expected pattern.
+FAIL fetch() with value %11 promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
+FAIL XMLHttpRequest with value %12 The string did not match the expected pattern.
+FAIL fetch() with value %12 promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
+FAIL XMLHttpRequest with value %13 The string did not match the expected pattern.
+FAIL fetch() with value %13 promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
+FAIL XMLHttpRequest with value %14 The string did not match the expected pattern.
+FAIL fetch() with value %14 promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
+FAIL XMLHttpRequest with value %15 The string did not match the expected pattern.
+FAIL fetch() with value %15 promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
+FAIL XMLHttpRequest with value %16 The string did not match the expected pattern.
+FAIL fetch() with value %16 promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
+FAIL XMLHttpRequest with value %17 The string did not match the expected pattern.
+FAIL fetch() with value %17 promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
+FAIL XMLHttpRequest with value %18 The string did not match the expected pattern.
+FAIL fetch() with value %18 promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
+FAIL XMLHttpRequest with value %19 The string did not match the expected pattern.
+FAIL fetch() with value %19 promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
+FAIL XMLHttpRequest with value %1A The string did not match the expected pattern.
+FAIL fetch() with value %1A promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
+FAIL XMLHttpRequest with value %1B The string did not match the expected pattern.
+FAIL fetch() with value %1B promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
+FAIL XMLHttpRequest with value %1C The string did not match the expected pattern.
+FAIL fetch() with value %1C promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
+FAIL XMLHttpRequest with value %1D The string did not match the expected pattern.
+FAIL fetch() with value %1D promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
+FAIL XMLHttpRequest with value %1E The string did not match the expected pattern.
+FAIL fetch() with value %1E promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
+FAIL XMLHttpRequest with value %1F The string did not match the expected pattern.
+FAIL fetch() with value %1F promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
+PASS XMLHttpRequest with value %20 
+PASS fetch() with value %20 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapiheadersheadervaluesnormalizehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/header-values-normalize.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/header-values-normalize.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/header-values-normalize.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,72 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=utf8&gt;
+&lt;meta name=timeout content=long&gt;
+&lt;title&gt;Header value normalizing test&lt;/title&gt;
+&lt;script src=/resources/testharness.js&gt;&lt;/script&gt;
+&lt;script src=/resources/testharnessreport.js&gt;&lt;/script&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;script&gt;
+for(let i = 0; i &lt; 0x21; i++) {
+  let fail = false,
+      strip = false
+
+  // REMOVE 0x0B/0x0C exception once https://github.com/w3c/wptserve/issues/111 is fixed
+  if(i === 0x0B || i === 0x0C)
+    continue
+
+  if(i === 0) {
+    fail = true
+  }
+
+  if(i === 0x09 || i === 0x0A || i === 0x0D || i === 0x20) {
+    strip = true
+  }
+
+  let url = &quot;../resources/inspect-headers.py?headers=val1|val2|val3&quot;,
+      val = String.fromCharCode(i),
+      expectedVal = strip ? &quot;&quot; : val,
+      val1 = val,
+      expectedVal1 = expectedVal,
+      val2 = &quot;x&quot; + val,
+      expectedVal2 = &quot;x&quot; + expectedVal,
+      val3 = val + &quot;x&quot;,
+      expectedVal3 = expectedVal + &quot;x&quot;
+
+  async_test((t) =&gt; {
+    let xhr = new XMLHttpRequest()
+    xhr.open(&quot;POST&quot;, url)
+    if(fail) {
+        assert_throws(&quot;SyntaxError&quot;, () =&gt; xhr.setRequestHeader(&quot;val1&quot;, val1))
+        assert_throws(&quot;SyntaxError&quot;, () =&gt; xhr.setRequestHeader(&quot;val2&quot;, val2))
+        assert_throws(&quot;SyntaxError&quot;, () =&gt; xhr.setRequestHeader(&quot;val3&quot;, val3))
+        t.done()
+    } else {
+      xhr.setRequestHeader(&quot;val1&quot;, val1)
+      xhr.setRequestHeader(&quot;val2&quot;, val2)
+      xhr.setRequestHeader(&quot;val3&quot;, val3)
+      xhr.onload = t.step_func_done(() =&gt; {
+        assert_equals(xhr.getResponseHeader(&quot;x-request-val1&quot;), expectedVal1)
+        assert_equals(xhr.getResponseHeader(&quot;x-request-val2&quot;), expectedVal2)
+        assert_equals(xhr.getResponseHeader(&quot;x-request-val3&quot;), expectedVal3)
+      })
+      xhr.send()
+    }
+  }, &quot;XMLHttpRequest with value &quot; + encodeURI(val))
+
+  promise_test((t) =&gt; {
+    if(fail) {
+      return Promise.all([
+        promise_rejects(t, new TypeError(), fetch(&quot;about:blank&quot;, { headers: {&quot;val1&quot;: val1} })),
+        promise_rejects(t, new TypeError(), fetch(&quot;about:blank&quot;, { headers: {&quot;val2&quot;: val2} })),
+        promise_rejects(t, new TypeError(), fetch(&quot;about:blank&quot;, { headers: {&quot;val3&quot;: val3} }))
+      ])
+    } else {
+      return fetch(url, { headers: {&quot;val1&quot;: val1, &quot;val2&quot;: val2, &quot;val3&quot;: val3} }).then((res) =&gt; {
+        assert_equals(res.headers.get(&quot;x-request-val1&quot;), expectedVal1)
+        assert_equals(res.headers.get(&quot;x-request-val2&quot;), expectedVal2)
+        assert_equals(res.headers.get(&quot;x-request-val3&quot;), expectedVal3)
+      })
+    }
+  }, &quot;fetch() with value &quot; + encodeURI(val))
+}
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapiheadersheadervalueshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/header-values.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/header-values.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/header-values.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,59 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=utf8&gt;
+&lt;meta name=timeout content=long&gt;
+&lt;title&gt;Header value test&lt;/title&gt;
+&lt;script src=/resources/testharness.js&gt;&lt;/script&gt;
+&lt;script src=/resources/testharnessreport.js&gt;&lt;/script&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;script&gt;
+// Invalid values
+[0, 0x0A, 0x0D].forEach(val =&gt; {
+  val = &quot;x&quot; + String.fromCharCode(val) + &quot;x&quot;
+  test(() =&gt; {
+    let xhr = new XMLHttpRequest()
+    xhr.open(&quot;POST&quot;, &quot;/&quot;)
+    assert_throws(&quot;SyntaxError&quot;, () =&gt; xhr.setRequestHeader(&quot;value-test&quot;, val))
+  }, &quot;XMLHttpRequest with value &quot; + encodeURI(val) + &quot; needs to throw&quot;)
+
+  promise_test(t =&gt; promise_rejects(t, new TypeError(), fetch(&quot;about:blank&quot;, { headers: {&quot;value-test&quot;: val} })), &quot;fetch() with value &quot; + encodeURI(val) + &quot; needs to throw&quot;)
+})
+
+// Valid values
+let headerValues =[]
+for(let i = 0; i &lt; 0x100; i++) {
+  if(i === 0 || i === 0x0A || i === 0x0D) {
+    continue
+  }
+  headerValues.push(&quot;x&quot; + String.fromCharCode(i) + &quot;x&quot;)
+}
+var url = &quot;../resources/inspect-headers.py?headers=&quot;
+headerValues.forEach((_, i) =&gt; {
+  url += &quot;val&quot; + i + &quot;|&quot;
+})
+
+async_test((t) =&gt; {
+  let xhr = new XMLHttpRequest()
+  xhr.open(&quot;POST&quot;, url)
+  headerValues.forEach((val, i) =&gt; {
+    xhr.setRequestHeader(&quot;val&quot; + i, val)
+  })
+  xhr.onload = t.step_func_done(() =&gt; {
+    headerValues.forEach((val, i) =&gt; {
+      assert_equals(xhr.getResponseHeader(&quot;x-request-val&quot; + i), val)
+    })
+  })
+  xhr.send()
+}, &quot;XMLHttpRequest with all valid values&quot;)
+
+promise_test((t) =&gt; {
+  const headers = new Headers
+  headerValues.forEach((val, i) =&gt; {
+    headers.append(&quot;val&quot; + i, val)
+  })
+  return fetch(url, { headers }).then((res) =&gt; {
+    headerValues.forEach((val, i) =&gt; {
+      assert_equals(res.headers.get(&quot;x-request-val&quot; + i), val)
+    })
+  })
+}, &quot;fetch() with all valid values&quot;)
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapiheadersw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/w3c-import.log (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/w3c-import.log        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/w3c-import.log        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -15,6 +15,8 @@
</span><span class="cx"> None
</span><span class="cx"> ------------------------------------------------------------------------
</span><span class="cx"> List of files:
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/header-values-normalize.html
+/LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/header-values.html
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/headers-basic.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/headers-casing.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/headers-combine.html
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapipoliciesreferreroriginexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/policies/referrer-origin-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/policies/referrer-origin-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/policies/referrer-origin-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,4 +1,4 @@
</span><span class="cx"> 
</span><span class="cx"> FAIL Request's referrer is origin assert_equals: request's referrer is http://localhost:8800/ expected &quot;http://localhost:8800/&quot; but got &quot;http://localhost:8800/fetch/api/policies/referrer-origin.html&quot;
</span><del>-PASS Throw a TypeError referrer is not same-origin with origin 
</del><ins>+FAIL Cross-origin referrer is overridden by client origin promise_test: Unhandled rejection with value: object &quot;TypeError: Referrer is not same-origin.&quot;
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapipoliciesreferreroriginworkerexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/policies/referrer-origin-worker-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/policies/referrer-origin-worker-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/policies/referrer-origin-worker-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,4 +1,4 @@
</span><span class="cx"> 
</span><span class="cx"> FAIL Request's referrer is origin assert_equals: request's referrer is http://localhost:8800/ expected &quot;http://localhost:8800/&quot; but got &quot;http://localhost:8800/fetch/api/policies/referrer-origin.js?pipe=sub&quot;
</span><del>-PASS Throw a TypeError referrer is not same-origin with origin 
</del><ins>+FAIL Cross-origin referrer is overridden by client origin promise_test: Unhandled rejection with value: object &quot;TypeError: Referrer is not same-origin.&quot;
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapipoliciesreferreroriginjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/policies/referrer-origin.js (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/policies/referrer-origin.js        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/policies/referrer-origin.js        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -16,7 +16,11 @@
</span><span class="cx"> 
</span><span class="cx"> promise_test(function(test) {
</span><span class="cx">   var referrerUrl = &quot;http://{{domains[www]}}:{{ports[http][0]}}/&quot;;
</span><del>-  return promise_rejects(test, new TypeError(), fetch(fetchedUrl, { &quot;referrer&quot;:  referrerUrl}));
-}, &quot;Throw a TypeError referrer is not same-origin with origin&quot;);
</del><ins>+  return fetch(fetchedUrl, { &quot;referrer&quot;: referrerUrl }).then(function(resp) {
+    assert_equals(resp.status, 200, &quot;HTTP status is 200&quot;);
+    assert_equals(resp.type , &quot;basic&quot;, &quot;Response's type is basic&quot;);
+    assert_equals(resp.headers.get(&quot;x-request-referer&quot;), referrerOrigin, &quot;request's referrer is &quot; + referrerOrigin);
+  });
+}, &quot;Cross-origin referrer is overridden by client origin&quot;);
</ins><span class="cx"> 
</span><span class="cx"> done();
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapirequestrequestcachedefaultconditionalexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-cache-default-conditional-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-cache-default-conditional-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-cache-default-conditional-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,42 +1,42 @@
</span><span class="cx"> 
</span><ins>+PASS RequestCache &quot;default&quot; mode with an If-Modified-Since header (following a request without additional headers) is treated similarly to &quot;no-store&quot; with Etag and stale response 
+PASS RequestCache &quot;default&quot; mode with an If-Modified-Since header (following a request without additional headers) is treated similarly to &quot;no-store&quot; with date and stale response 
+PASS RequestCache &quot;default&quot; mode with an If-Modified-Since header (following a request without additional headers) is treated similarly to &quot;no-store&quot; with Etag and fresh response 
+PASS RequestCache &quot;default&quot; mode with an If-Modified-Since header (following a request without additional headers) is treated similarly to &quot;no-store&quot; with date and fresh response 
</ins><span class="cx"> PASS RequestCache &quot;default&quot; mode with an If-Modified-Since header is treated similarly to &quot;no-store&quot; with Etag and stale response 
</span><span class="cx"> PASS RequestCache &quot;default&quot; mode with an If-Modified-Since header is treated similarly to &quot;no-store&quot; with date and stale response 
</span><span class="cx"> PASS RequestCache &quot;default&quot; mode with an If-Modified-Since header is treated similarly to &quot;no-store&quot; with Etag and fresh response 
</span><span class="cx"> PASS RequestCache &quot;default&quot; mode with an If-Modified-Since header is treated similarly to &quot;no-store&quot; with date and fresh response 
</span><del>-PASS RequestCache &quot;default&quot; mode with an If-Modified-Since header is treated similarly to &quot;no-store&quot; with Etag and stale response 
-PASS RequestCache &quot;default&quot; mode with an If-Modified-Since header is treated similarly to &quot;no-store&quot; with date and stale response 
-PASS RequestCache &quot;default&quot; mode with an If-Modified-Since header is treated similarly to &quot;no-store&quot; with Etag and fresh response 
-PASS RequestCache &quot;default&quot; mode with an If-Modified-Since header is treated similarly to &quot;no-store&quot; with date and fresh response 
</del><ins>+PASS RequestCache &quot;default&quot; mode with an If-None-Match header (following a request without additional headers) is treated similarly to &quot;no-store&quot; with Etag and stale response 
+PASS RequestCache &quot;default&quot; mode with an If-None-Match header (following a request without additional headers) is treated similarly to &quot;no-store&quot; with date and stale response 
+PASS RequestCache &quot;default&quot; mode with an If-None-Match header (following a request without additional headers) is treated similarly to &quot;no-store&quot; with Etag and fresh response 
+PASS RequestCache &quot;default&quot; mode with an If-None-Match header (following a request without additional headers) is treated similarly to &quot;no-store&quot; with date and fresh response 
</ins><span class="cx"> PASS RequestCache &quot;default&quot; mode with an If-None-Match header is treated similarly to &quot;no-store&quot; with Etag and stale response 
</span><span class="cx"> PASS RequestCache &quot;default&quot; mode with an If-None-Match header is treated similarly to &quot;no-store&quot; with date and stale response 
</span><span class="cx"> PASS RequestCache &quot;default&quot; mode with an If-None-Match header is treated similarly to &quot;no-store&quot; with Etag and fresh response 
</span><span class="cx"> PASS RequestCache &quot;default&quot; mode with an If-None-Match header is treated similarly to &quot;no-store&quot; with date and fresh response 
</span><del>-PASS RequestCache &quot;default&quot; mode with an If-None-Match header is treated similarly to &quot;no-store&quot; with Etag and stale response 
-PASS RequestCache &quot;default&quot; mode with an If-None-Match header is treated similarly to &quot;no-store&quot; with date and stale response 
-PASS RequestCache &quot;default&quot; mode with an If-None-Match header is treated similarly to &quot;no-store&quot; with Etag and fresh response 
-PASS RequestCache &quot;default&quot; mode with an If-None-Match header is treated similarly to &quot;no-store&quot; with date and fresh response 
</del><ins>+PASS RequestCache &quot;default&quot; mode with an If-Unmodified-Since header (following a request without additional headers) is treated similarly to &quot;no-store&quot; with Etag and stale response 
+PASS RequestCache &quot;default&quot; mode with an If-Unmodified-Since header (following a request without additional headers) is treated similarly to &quot;no-store&quot; with date and stale response 
+PASS RequestCache &quot;default&quot; mode with an If-Unmodified-Since header (following a request without additional headers) is treated similarly to &quot;no-store&quot; with Etag and fresh response 
+PASS RequestCache &quot;default&quot; mode with an If-Unmodified-Since header (following a request without additional headers) is treated similarly to &quot;no-store&quot; with date and fresh response 
</ins><span class="cx"> PASS RequestCache &quot;default&quot; mode with an If-Unmodified-Since header is treated similarly to &quot;no-store&quot; with Etag and stale response 
</span><span class="cx"> PASS RequestCache &quot;default&quot; mode with an If-Unmodified-Since header is treated similarly to &quot;no-store&quot; with date and stale response 
</span><span class="cx"> PASS RequestCache &quot;default&quot; mode with an If-Unmodified-Since header is treated similarly to &quot;no-store&quot; with Etag and fresh response 
</span><span class="cx"> PASS RequestCache &quot;default&quot; mode with an If-Unmodified-Since header is treated similarly to &quot;no-store&quot; with date and fresh response 
</span><del>-PASS RequestCache &quot;default&quot; mode with an If-Unmodified-Since header is treated similarly to &quot;no-store&quot; with Etag and stale response 
-PASS RequestCache &quot;default&quot; mode with an If-Unmodified-Since header is treated similarly to &quot;no-store&quot; with date and stale response 
-PASS RequestCache &quot;default&quot; mode with an If-Unmodified-Since header is treated similarly to &quot;no-store&quot; with Etag and fresh response 
-PASS RequestCache &quot;default&quot; mode with an If-Unmodified-Since header is treated similarly to &quot;no-store&quot; with date and fresh response 
</del><ins>+PASS RequestCache &quot;default&quot; mode with an If-Match header (following a request without additional headers) is treated similarly to &quot;no-store&quot; with Etag and stale response 
+PASS RequestCache &quot;default&quot; mode with an If-Match header (following a request without additional headers) is treated similarly to &quot;no-store&quot; with date and stale response 
+PASS RequestCache &quot;default&quot; mode with an If-Match header (following a request without additional headers) is treated similarly to &quot;no-store&quot; with Etag and fresh response 
+PASS RequestCache &quot;default&quot; mode with an If-Match header (following a request without additional headers) is treated similarly to &quot;no-store&quot; with date and fresh response 
</ins><span class="cx"> PASS RequestCache &quot;default&quot; mode with an If-Match header is treated similarly to &quot;no-store&quot; with Etag and stale response 
</span><span class="cx"> PASS RequestCache &quot;default&quot; mode with an If-Match header is treated similarly to &quot;no-store&quot; with date and stale response 
</span><span class="cx"> PASS RequestCache &quot;default&quot; mode with an If-Match header is treated similarly to &quot;no-store&quot; with Etag and fresh response 
</span><span class="cx"> PASS RequestCache &quot;default&quot; mode with an If-Match header is treated similarly to &quot;no-store&quot; with date and fresh response 
</span><del>-PASS RequestCache &quot;default&quot; mode with an If-Match header is treated similarly to &quot;no-store&quot; with Etag and stale response 
-PASS RequestCache &quot;default&quot; mode with an If-Match header is treated similarly to &quot;no-store&quot; with date and stale response 
-PASS RequestCache &quot;default&quot; mode with an If-Match header is treated similarly to &quot;no-store&quot; with Etag and fresh response 
-PASS RequestCache &quot;default&quot; mode with an If-Match header is treated similarly to &quot;no-store&quot; with date and fresh response 
</del><ins>+PASS RequestCache &quot;default&quot; mode with an If-Range header (following a request without additional headers) is treated similarly to &quot;no-store&quot; with Etag and stale response 
+PASS RequestCache &quot;default&quot; mode with an If-Range header (following a request without additional headers) is treated similarly to &quot;no-store&quot; with date and stale response 
+PASS RequestCache &quot;default&quot; mode with an If-Range header (following a request without additional headers) is treated similarly to &quot;no-store&quot; with Etag and fresh response 
+PASS RequestCache &quot;default&quot; mode with an If-Range header (following a request without additional headers) is treated similarly to &quot;no-store&quot; with date and fresh response 
</ins><span class="cx"> PASS RequestCache &quot;default&quot; mode with an If-Range header is treated similarly to &quot;no-store&quot; with Etag and stale response 
</span><span class="cx"> PASS RequestCache &quot;default&quot; mode with an If-Range header is treated similarly to &quot;no-store&quot; with date and stale response 
</span><span class="cx"> PASS RequestCache &quot;default&quot; mode with an If-Range header is treated similarly to &quot;no-store&quot; with Etag and fresh response 
</span><span class="cx"> PASS RequestCache &quot;default&quot; mode with an If-Range header is treated similarly to &quot;no-store&quot; with date and fresh response 
</span><del>-PASS RequestCache &quot;default&quot; mode with an If-Range header is treated similarly to &quot;no-store&quot; with Etag and stale response 
-PASS RequestCache &quot;default&quot; mode with an If-Range header is treated similarly to &quot;no-store&quot; with date and stale response 
-PASS RequestCache &quot;default&quot; mode with an If-Range header is treated similarly to &quot;no-store&quot; with Etag and fresh response 
-PASS RequestCache &quot;default&quot; mode with an If-Range header is treated similarly to &quot;no-store&quot; with date and fresh response 
</del><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapirequestrequestcachedefaultconditionalhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-cache-default-conditional.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-cache-default-conditional.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-cache-default-conditional.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -14,7 +14,7 @@
</span><span class="cx">     &lt;script&gt;
</span><span class="cx">     var tests = [
</span><span class="cx">       {
</span><del>-        name: 'RequestCache &quot;default&quot; mode with an If-Modified-Since header is treated similarly to &quot;no-store&quot;',
</del><ins>+        name: 'RequestCache &quot;default&quot; mode with an If-Modified-Since header (following a request without additional headers) is treated similarly to &quot;no-store&quot;',
</ins><span class="cx">         state: &quot;stale&quot;,
</span><span class="cx">         request_cache: [&quot;default&quot;, &quot;default&quot;],
</span><span class="cx">         request_headers: [{}, {&quot;If-Modified-Since&quot;: now.toGMTString()}],
</span><span class="lines">@@ -22,7 +22,7 @@
</span><span class="cx">         expected_no_cache_headers: [false, true],
</span><span class="cx">       },
</span><span class="cx">       {
</span><del>-        name: 'RequestCache &quot;default&quot; mode with an If-Modified-Since header is treated similarly to &quot;no-store&quot;',
</del><ins>+        name: 'RequestCache &quot;default&quot; mode with an If-Modified-Since header (following a request without additional headers) is treated similarly to &quot;no-store&quot;',
</ins><span class="cx">         state: &quot;fresh&quot;,
</span><span class="cx">         request_cache: [&quot;default&quot;, &quot;default&quot;],
</span><span class="cx">         request_headers: [{}, {&quot;If-Modified-Since&quot;: now.toGMTString()}],
</span><span class="lines">@@ -46,7 +46,7 @@
</span><span class="cx">         expected_no_cache_headers: [true, false],
</span><span class="cx">       },
</span><span class="cx">       {
</span><del>-        name: 'RequestCache &quot;default&quot; mode with an If-None-Match header is treated similarly to &quot;no-store&quot;',
</del><ins>+        name: 'RequestCache &quot;default&quot; mode with an If-None-Match header (following a request without additional headers) is treated similarly to &quot;no-store&quot;',
</ins><span class="cx">         state: &quot;stale&quot;,
</span><span class="cx">         request_cache: [&quot;default&quot;, &quot;default&quot;],
</span><span class="cx">         request_headers: [{}, {&quot;If-None-Match&quot;: '&quot;foo&quot;'}],
</span><span class="lines">@@ -54,7 +54,7 @@
</span><span class="cx">         expected_no_cache_headers: [false, true],
</span><span class="cx">       },
</span><span class="cx">       {
</span><del>-        name: 'RequestCache &quot;default&quot; mode with an If-None-Match header is treated similarly to &quot;no-store&quot;',
</del><ins>+        name: 'RequestCache &quot;default&quot; mode with an If-None-Match header (following a request without additional headers) is treated similarly to &quot;no-store&quot;',
</ins><span class="cx">         state: &quot;fresh&quot;,
</span><span class="cx">         request_cache: [&quot;default&quot;, &quot;default&quot;],
</span><span class="cx">         request_headers: [{}, {&quot;If-None-Match&quot;: '&quot;foo&quot;'}],
</span><span class="lines">@@ -78,7 +78,7 @@
</span><span class="cx">         expected_no_cache_headers: [true, false],
</span><span class="cx">       },
</span><span class="cx">       {
</span><del>-        name: 'RequestCache &quot;default&quot; mode with an If-Unmodified-Since header is treated similarly to &quot;no-store&quot;',
</del><ins>+        name: 'RequestCache &quot;default&quot; mode with an If-Unmodified-Since header (following a request without additional headers) is treated similarly to &quot;no-store&quot;',
</ins><span class="cx">         state: &quot;stale&quot;,
</span><span class="cx">         request_cache: [&quot;default&quot;, &quot;default&quot;],
</span><span class="cx">         request_headers: [{}, {&quot;If-Unmodified-Since&quot;: now.toGMTString()}],
</span><span class="lines">@@ -86,7 +86,7 @@
</span><span class="cx">         expected_no_cache_headers: [false, true],
</span><span class="cx">       },
</span><span class="cx">       {
</span><del>-        name: 'RequestCache &quot;default&quot; mode with an If-Unmodified-Since header is treated similarly to &quot;no-store&quot;',
</del><ins>+        name: 'RequestCache &quot;default&quot; mode with an If-Unmodified-Since header (following a request without additional headers) is treated similarly to &quot;no-store&quot;',
</ins><span class="cx">         state: &quot;fresh&quot;,
</span><span class="cx">         request_cache: [&quot;default&quot;, &quot;default&quot;],
</span><span class="cx">         request_headers: [{}, {&quot;If-Unmodified-Since&quot;: now.toGMTString()}],
</span><span class="lines">@@ -110,7 +110,7 @@
</span><span class="cx">         expected_no_cache_headers: [true, false],
</span><span class="cx">       },
</span><span class="cx">       {
</span><del>-        name: 'RequestCache &quot;default&quot; mode with an If-Match header is treated similarly to &quot;no-store&quot;',
</del><ins>+        name: 'RequestCache &quot;default&quot; mode with an If-Match header (following a request without additional headers) is treated similarly to &quot;no-store&quot;',
</ins><span class="cx">         state: &quot;stale&quot;,
</span><span class="cx">         request_cache: [&quot;default&quot;, &quot;default&quot;],
</span><span class="cx">         request_headers: [{}, {&quot;If-Match&quot;: '&quot;foo&quot;'}],
</span><span class="lines">@@ -118,7 +118,7 @@
</span><span class="cx">         expected_no_cache_headers: [false, true],
</span><span class="cx">       },
</span><span class="cx">       {
</span><del>-        name: 'RequestCache &quot;default&quot; mode with an If-Match header is treated similarly to &quot;no-store&quot;',
</del><ins>+        name: 'RequestCache &quot;default&quot; mode with an If-Match header (following a request without additional headers) is treated similarly to &quot;no-store&quot;',
</ins><span class="cx">         state: &quot;fresh&quot;,
</span><span class="cx">         request_cache: [&quot;default&quot;, &quot;default&quot;],
</span><span class="cx">         request_headers: [{}, {&quot;If-Match&quot;: '&quot;foo&quot;'}],
</span><span class="lines">@@ -142,7 +142,7 @@
</span><span class="cx">         expected_no_cache_headers: [true, false],
</span><span class="cx">       },
</span><span class="cx">       {
</span><del>-        name: 'RequestCache &quot;default&quot; mode with an If-Range header is treated similarly to &quot;no-store&quot;',
</del><ins>+        name: 'RequestCache &quot;default&quot; mode with an If-Range header (following a request without additional headers) is treated similarly to &quot;no-store&quot;',
</ins><span class="cx">         state: &quot;stale&quot;,
</span><span class="cx">         request_cache: [&quot;default&quot;, &quot;default&quot;],
</span><span class="cx">         request_headers: [{}, {&quot;If-Range&quot;: '&quot;foo&quot;'}],
</span><span class="lines">@@ -150,7 +150,7 @@
</span><span class="cx">         expected_no_cache_headers: [false, true],
</span><span class="cx">       },
</span><span class="cx">       {
</span><del>-        name: 'RequestCache &quot;default&quot; mode with an If-Range header is treated similarly to &quot;no-store&quot;',
</del><ins>+        name: 'RequestCache &quot;default&quot; mode with an If-Range header (following a request without additional headers) is treated similarly to &quot;no-store&quot;',
</ins><span class="cx">         state: &quot;fresh&quot;,
</span><span class="cx">         request_cache: [&quot;default&quot;, &quot;default&quot;],
</span><span class="cx">         request_headers: [{}, {&quot;If-Range&quot;: '&quot;foo&quot;'}],
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapirequestrequestcacheonlyifcachedexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-cache-only-if-cached-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-cache-only-if-cached-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-cache-only-if-cached-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,10 +1,10 @@
</span><del>-CONSOLE MESSAGE: Unsafe attempt to load URL http://127.0.0.1:8800/fetch/api/request/resources/cache.py?token=1d84352f-432d-46f6-83d6-efd82d81092c&amp;content=0.9413241569924276&amp;tag=0.9895903109991878&amp;expires=Sat,%2003%20Feb%202018%2008:00:00%20GMT from frame with URL http://localhost:8800/fetch/api/request/request-cache-only-if-cached.html. Domains, protocols and ports must match.
</del><ins>+CONSOLE MESSAGE: Unsafe attempt to load URL http://127.0.0.1:8800/fetch/api/request/resources/cache.py?token=bb76af42-6ddb-403f-a10c-3d6a22f25705&amp;content=0.3963966880995944&amp;tag=0.29947394035767183&amp;expires=Tue,%2006%20Feb%202018%2008:00:00%20GMT from frame with URL http://localhost:8800/fetch/api/request/request-cache-only-if-cached.html. Domains, protocols and ports must match.
</ins><span class="cx"> 
</span><del>-CONSOLE MESSAGE: Unsafe attempt to load URL http://127.0.0.1:8800/fetch/api/request/resources/cache.py?token=2cf608f3-2bb8-499c-ae51-2230222c5984&amp;content=0.7260435172644429&amp;date=Thu,%2009%20Feb%202017%2002:59:31%20GMT&amp;expires=Sat,%2003%20Feb%202018%2008:00:00%20GMT from frame with URL http://localhost:8800/fetch/api/request/request-cache-only-if-cached.html. Domains, protocols and ports must match.
</del><ins>+CONSOLE MESSAGE: Unsafe attempt to load URL http://127.0.0.1:8800/fetch/api/request/resources/cache.py?token=b6df6826-91f3-4377-857d-c83cac1c2c07&amp;content=0.7675622863372797&amp;date=Sat,%2011%20Feb%202017%2019:53:27%20GMT&amp;expires=Tue,%2006%20Feb%202018%2008:00:00%20GMT from frame with URL http://localhost:8800/fetch/api/request/request-cache-only-if-cached.html. Domains, protocols and ports must match.
</ins><span class="cx"> 
</span><del>-CONSOLE MESSAGE: Unsafe attempt to load URL http://127.0.0.1:8800/fetch/api/request/resources/cache.py?token=956ebb77-1859-4f31-a52b-26977a1b166e&amp;content=0.18635733973883173&amp;tag=0.2072962381119845&amp;expires=Wed,%2003%20Feb%202016%2008:00:00%20GMT from frame with URL http://localhost:8800/fetch/api/request/request-cache-only-if-cached.html. Domains, protocols and ports must match.
</del><ins>+CONSOLE MESSAGE: Unsafe attempt to load URL http://127.0.0.1:8800/fetch/api/request/resources/cache.py?token=66bd4c2b-e2cb-4a11-857a-2eafa890c060&amp;content=0.6525021020961947&amp;tag=0.6441924056013986&amp;expires=Sat,%2006%20Feb%202016%2008:00:00%20GMT from frame with URL http://localhost:8800/fetch/api/request/request-cache-only-if-cached.html. Domains, protocols and ports must match.
</ins><span class="cx"> 
</span><del>-CONSOLE MESSAGE: Unsafe attempt to load URL http://127.0.0.1:8800/fetch/api/request/resources/cache.py?token=81826c36-42a2-44f0-9d0e-13a9f2c9631b&amp;content=0.3282920975572807&amp;date=Thu,%2009%20Feb%202017%2002:59:31%20GMT&amp;expires=Wed,%2003%20Feb%202016%2008:00:00%20GMT from frame with URL http://localhost:8800/fetch/api/request/request-cache-only-if-cached.html. Domains, protocols and ports must match.
</del><ins>+CONSOLE MESSAGE: Unsafe attempt to load URL http://127.0.0.1:8800/fetch/api/request/resources/cache.py?token=b13fdf93-fffb-4a7b-8e71-22dedfd04879&amp;content=0.9449986445411271&amp;date=Sat,%2011%20Feb%202017%2019:53:27%20GMT&amp;expires=Sat,%2006%20Feb%202016%2008:00:00%20GMT from frame with URL http://localhost:8800/fetch/api/request/request-cache-only-if-cached.html. Domains, protocols and ports must match.
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> PASS RequestCache &quot;only-if-cached&quot; mode checks the cache for previously cached content and avoids revalidation for stale responses with Etag and stale response 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapirequestrequestdisturbedexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-disturbed-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-disturbed-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-disturbed-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,8 +1,10 @@
</span><span class="cx"> 
</span><ins>+FAIL Request's body: initial state assert_equals: body's default value is null expected (object) null but got (undefined) undefined
</ins><span class="cx"> PASS Request without body cannot be disturbed 
</span><span class="cx"> PASS Check cloning a disturbed request 
</span><span class="cx"> PASS Check creating a new request from a disturbed request 
</span><del>-PASS Input request used for creating new request became disturbed 
</del><ins>+FAIL Input request used for creating new request became disturbed assert_not_equals: body should not be undefined got disallowed value undefined
+FAIL Input request used for creating new request became disturbed even if body is not used assert_true: bodyUsed is true when request is disturbed expected true got false
</ins><span class="cx"> PASS Check consuming a disturbed request 
</span><span class="cx"> PASS Request construction failure should not set &quot;bodyUsed&quot; 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapirequestrequestdisturbedhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-disturbed.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-disturbed.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-disturbed.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -16,8 +16,17 @@
</span><span class="cx">       };
</span><span class="cx"> 
</span><span class="cx">       var noBodyConsumed = new Request(&quot;&quot;);
</span><ins>+      var bodyConsumed = new Request(&quot;&quot;, initValuesDict);
+
+      test(() =&gt; {
+        assert_equals(noBodyConsumed.body, null, &quot;body's default value is null&quot;);
+        assert_false(noBodyConsumed.bodyUsed , &quot;bodyUsed is false when request is not disturbed&quot;);
+        assert_not_equals(bodyConsumed.body, null, &quot;non-null body&quot;);
+        assert_true(bodyConsumed.body instanceof ReadableStream, &quot;non-null body type&quot;);
+        assert_false(noBodyConsumed.bodyUsed, &quot;bodyUsed is false when request is not disturbed&quot;);
+      }, &quot;Request's body: initial state&quot;);
+
</ins><span class="cx">       noBodyConsumed.blob();
</span><del>-      var bodyConsumed = new Request(&quot;&quot;, initValuesDict);
</del><span class="cx">       bodyConsumed.blob();
</span><span class="cx"> 
</span><span class="cx">       test(function() {
</span><span class="lines">@@ -39,13 +48,37 @@
</span><span class="cx">         assert_throws(new TypeError(), function() { new Request(bodyConsumed); });
</span><span class="cx">       }, &quot;Check creating a new request from a disturbed request&quot;);
</span><span class="cx"> 
</span><del>-      test(function() {
</del><ins>+      promise_test(function() {
</ins><span class="cx">         var bodyRequest = new Request(&quot;&quot;, initValuesDict);
</span><ins>+        const originalBody = bodyRequest.body;
</ins><span class="cx">         assert_false(bodyRequest.bodyUsed , &quot;bodyUsed is false when request is not disturbed&quot;);
</span><span class="cx">         var requestFromRequest = new Request(bodyRequest);
</span><span class="cx">         assert_true(bodyRequest.bodyUsed , &quot;bodyUsed is true when request is disturbed&quot;);
</span><ins>+        assert_equals(bodyRequest.body, originalBody, &quot;body should not change&quot;);
+        assert_not_equals(originalBody, undefined, &quot;body should not be undefined&quot;);
+        assert_not_equals(originalBody, null, &quot;body should not be null&quot;);
+        assert_not_equals(requestFromRequest.body, originalBody, &quot;new request's body is new&quot;);
+        return requestFromRequest.text(text =&gt; {
+          assert_equals(text, &quot;Request's body&quot;);
+        });
</ins><span class="cx">       }, &quot;Input request used for creating new request became disturbed&quot;);
</span><span class="cx"> 
</span><ins>+      promise_test(() =&gt; {
+        const bodyRequest = new Request(&quot;&quot;, initValuesDict);
+        const originalBody = bodyRequest.body;
+        assert_false(bodyRequest.bodyUsed , &quot;bodyUsed is false when request is not disturbed&quot;);
+        const requestFromRequest = new Request(bodyRequest, { body : &quot;init body&quot; });
+        assert_true(bodyRequest.bodyUsed , &quot;bodyUsed is true when request is disturbed&quot;);
+        assert_equals(bodyRequest.body, originalBody, &quot;body should not change&quot;);
+        assert_not_equals(originalBody, undefined, &quot;body should not be undefined&quot;);
+        assert_not_equals(originalBody, null, &quot;body should not be null&quot;);
+        assert_not_equals(requestFromRequest.body, originalBody, &quot;new request's body is new&quot;);
+
+        return requestFromRequest.text(text =&gt; {
+          assert_equals(text, &quot;init body&quot;);
+        });
+      }, &quot;Input request used for creating new request became disturbed even if body is not used&quot;);
+
</ins><span class="cx">       promise_test(function(test) {
</span><span class="cx">         assert_true(bodyConsumed.bodyUsed , &quot;bodyUsed is true when request is disturbed&quot;);
</span><span class="cx">         return promise_rejects(test, new TypeError(), bodyConsumed.blob());
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapirequestrequesterrorexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-error-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-error-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-error-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -2,9 +2,7 @@
</span><span class="cx"> PASS RequestInit's window is not null 
</span><span class="cx"> PASS Input URL is not valid 
</span><span class="cx"> PASS Input URL has credentials 
</span><del>-PASS RequestInit's mode is navigate 
</del><span class="cx"> PASS RequestInit's referrer is invalid 
</span><del>-PASS RequestInit's referrer has invalid origin 
</del><span class="cx"> PASS RequestInit's method is invalid 
</span><span class="cx"> PASS RequestInit's method is forbidden 
</span><span class="cx"> PASS RequestInit's mode is no-cors and method is not simple 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapirequestrequesterrorhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-error.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-error.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-error.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -27,21 +27,11 @@
</span><span class="cx">       },&quot;Input URL has credentials&quot;);
</span><span class="cx"> 
</span><span class="cx">       test(function() {
</span><del>-        assert_throws(new TypeError() , function() { new Request(&quot;&quot;, {&quot;mode&quot; : &quot;navigate&quot;}); },
-          &quot;Expect TypeError exception&quot;);
-      },&quot;RequestInit's mode is navigate&quot;);
-
-      test(function() {
</del><span class="cx">         assert_throws(new TypeError() , function() { new Request(&quot;&quot;, {&quot;referrer&quot; : &quot;http://:not a valid URL&quot;}); },
</span><span class="cx">           &quot;Expect TypeError exception&quot;);
</span><span class="cx">       },&quot;RequestInit's referrer is invalid&quot;);
</span><span class="cx"> 
</span><span class="cx">       test(function() {
</span><del>-        assert_throws(new TypeError() , function() { new Request(&quot;&quot;, {&quot;referrer&quot; : &quot;http://test.url&quot;}); },
-          &quot;Expect TypeError exception&quot;);
-      },&quot;RequestInit's referrer has invalid origin&quot;)
-
-      test(function() {
</del><span class="cx">         assert_throws(new TypeError() , function() { new Request(&quot;&quot;, {&quot;method&quot; : &quot;IN VALID&quot;}); },
</span><span class="cx">           &quot;Expect TypeError exception&quot;);
</span><span class="cx">       }, &quot;RequestInit's method is invalid&quot;);
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapirequestrequestidlexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-idl-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-idl-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-idl-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -17,6 +17,7 @@
</span><span class="cx"> PASS Request interface: attribute redirect 
</span><span class="cx"> PASS Request interface: attribute integrity 
</span><span class="cx"> PASS Request interface: operation clone() 
</span><ins>+FAIL Request interface: attribute body assert_true: The prototype object must have a property &quot;body&quot; expected true got false
</ins><span class="cx"> PASS Request interface: attribute bodyUsed 
</span><span class="cx"> PASS Request interface: operation arrayBuffer() 
</span><span class="cx"> PASS Request interface: operation blob() 
</span><span class="lines">@@ -38,10 +39,11 @@
</span><span class="cx"> PASS Request interface: new Request(&quot;&quot;) must inherit property &quot;redirect&quot; with the proper type (10) 
</span><span class="cx"> PASS Request interface: new Request(&quot;&quot;) must inherit property &quot;integrity&quot; with the proper type (11) 
</span><span class="cx"> PASS Request interface: new Request(&quot;&quot;) must inherit property &quot;clone&quot; with the proper type (12) 
</span><del>-PASS Request interface: new Request(&quot;&quot;) must inherit property &quot;bodyUsed&quot; with the proper type (13) 
-PASS Request interface: new Request(&quot;&quot;) must inherit property &quot;arrayBuffer&quot; with the proper type (14) 
-PASS Request interface: new Request(&quot;&quot;) must inherit property &quot;blob&quot; with the proper type (15) 
-FAIL Request interface: new Request(&quot;&quot;) must inherit property &quot;formData&quot; with the proper type (16) assert_inherits: property &quot;formData&quot; not found in prototype chain
-PASS Request interface: new Request(&quot;&quot;) must inherit property &quot;json&quot; with the proper type (17) 
-PASS Request interface: new Request(&quot;&quot;) must inherit property &quot;text&quot; with the proper type (18) 
</del><ins>+FAIL Request interface: new Request(&quot;&quot;) must inherit property &quot;body&quot; with the proper type (13) assert_inherits: property &quot;body&quot; not found in prototype chain
+PASS Request interface: new Request(&quot;&quot;) must inherit property &quot;bodyUsed&quot; with the proper type (14) 
+PASS Request interface: new Request(&quot;&quot;) must inherit property &quot;arrayBuffer&quot; with the proper type (15) 
+PASS Request interface: new Request(&quot;&quot;) must inherit property &quot;blob&quot; with the proper type (16) 
+FAIL Request interface: new Request(&quot;&quot;) must inherit property &quot;formData&quot; with the proper type (17) assert_inherits: property &quot;formData&quot; not found in prototype chain
+PASS Request interface: new Request(&quot;&quot;) must inherit property &quot;json&quot; with the proper type (18) 
+PASS Request interface: new Request(&quot;&quot;) must inherit property &quot;text&quot; with the proper type (19) 
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapirequestrequestidlhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-idl.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-idl.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-idl.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -18,6 +18,7 @@
</span><span class="cx">       [NoInterfaceObject,
</span><span class="cx">       Exposed=(Window,Worker)]
</span><span class="cx">       interface Body {
</span><ins>+        readonly attribute ReadableStream? body;
</ins><span class="cx">         readonly attribute boolean bodyUsed;
</span><span class="cx">         [NewObject] Promise&lt;ArrayBuffer&gt; arrayBuffer();
</span><span class="cx">         [NewObject] Promise&lt;Blob&gt; blob();
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapirequestrequestinit001subexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-init-001.sub-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-init-001.sub-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-init-001.sub-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -9,6 +9,7 @@
</span><span class="cx"> PASS Check referrer init value of /relative/ressource and associated getter 
</span><span class="cx"> PASS Check referrer init value of http://localhost:8800/relative/ressource?query=true#fragment and associated getter 
</span><span class="cx"> PASS Check referrer init value of http://localhost:8800/ and associated getter 
</span><ins>+FAIL Check referrer init value of http://test.url and associated getter Referrer is not same-origin.
</ins><span class="cx"> PASS Check referrer init value of about:client and associated getter 
</span><span class="cx"> PASS Check referrer init value of  and associated getter 
</span><span class="cx"> PASS Check referrerPolicy init value of  and associated getter 
</span><span class="lines">@@ -23,6 +24,7 @@
</span><span class="cx"> PASS Check mode init value of same-origin and associated getter 
</span><span class="cx"> PASS Check mode init value of no-cors and associated getter 
</span><span class="cx"> PASS Check mode init value of cors and associated getter 
</span><ins>+FAIL Check mode init value of navigate and associated getter Request constructor does not accept navigate fetch mode.
</ins><span class="cx"> PASS Check credentials init value of omit and associated getter 
</span><span class="cx"> PASS Check credentials init value of same-origin and associated getter 
</span><span class="cx"> PASS Check credentials init value of include and associated getter 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapirequestrequestinit001subhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-init-001.sub.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-init-001.sub.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-init-001.sub.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -16,6 +16,7 @@
</span><span class="cx">       var referrers = {&quot;givenValues&quot; : [&quot;/relative/ressource&quot;,
</span><span class="cx">                                         &quot;http://{{host}}:{{ports[http][0]}}/relative/ressource?query=true#fragment&quot;,
</span><span class="cx">                                         &quot;http://{{host}}:{{ports[http][0]}}/&quot;,
</span><ins>+                                        &quot;http://test.url&quot;,
</ins><span class="cx">                                         &quot;about:client&quot;,
</span><span class="cx">                                         &quot;&quot;
</span><span class="cx">                                        ],
</span><span class="lines">@@ -23,6 +24,7 @@
</span><span class="cx">                                            &quot;http://{{host}}:{{ports[http][0]}}/relative/ressource?query=true#fragment&quot;,
</span><span class="cx">                                            &quot;http://{{host}}:{{ports[http][0]}}/&quot;,
</span><span class="cx">                                            &quot;about:client&quot;,
</span><ins>+                                           &quot;about:client&quot;,
</ins><span class="cx">                                            &quot;&quot;
</span><span class="cx">                                           ]
</span><span class="cx">       };
</span><span class="lines">@@ -47,8 +49,8 @@
</span><span class="cx">                                                   &quot;strict-origin-when-cross-origin&quot;
</span><span class="cx">                                                   ]
</span><span class="cx">       };
</span><del>-      var modes = {&quot;givenValues&quot; : [&quot;same-origin&quot;, &quot;no-cors&quot;, &quot;cors&quot;],
-                   &quot;expectedValues&quot; : [&quot;same-origin&quot;, &quot;no-cors&quot;, &quot;cors&quot;]
</del><ins>+      var modes = {&quot;givenValues&quot; : [&quot;same-origin&quot;, &quot;no-cors&quot;, &quot;cors&quot;, &quot;navigate&quot;],
+                   &quot;expectedValues&quot; : [&quot;same-origin&quot;, &quot;no-cors&quot;, &quot;cors&quot;, &quot;same-origin&quot;]
</ins><span class="cx">       };
</span><span class="cx">       var credentials = {&quot;givenValues&quot; : [&quot;omit&quot;, &quot;same-origin&quot;, &quot;include&quot;],
</span><span class="cx">                           &quot;expectedValues&quot; : [&quot;omit&quot;, &quot;same-origin&quot;, &quot;include&quot;]
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapiresourcespreflightpy"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/resources/preflight.py (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/resources/preflight.py        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/resources/preflight.py        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -14,7 +14,7 @@
</span><span class="cx">             return &quot;ERROR: No access-control-request-method in preflight!&quot;
</span><span class="cx"> 
</span><span class="cx">         if &quot;control_request_headers&quot; in request.GET:
</span><del>-            stashed_data['control_request_headers'] = request.headers.get(&quot;Access-Control-Request-Headers&quot;, &quot;&quot;)
</del><ins>+            stashed_data['control_request_headers'] = request.headers.get(&quot;Access-Control-Request-Headers&quot;, None)
</ins><span class="cx"> 
</span><span class="cx">         if &quot;max_age&quot; in request.GET:
</span><span class="cx">             headers.append((&quot;Access-Control-Max-Age&quot;, request.GET['max_age']))
</span><span class="lines">@@ -45,7 +45,8 @@
</span><span class="cx">     #use x-* headers for returning value to bodyless responses
</span><span class="cx">     headers.append((&quot;Access-Control-Expose-Headers&quot;, &quot;x-did-preflight, x-control-request-headers, x-referrer, x-preflight-referrer, x-origin&quot;))
</span><span class="cx">     headers.append((&quot;x-did-preflight&quot;, stashed_data['preflight']))
</span><del>-    headers.append((&quot;x-control-request-headers&quot;, stashed_data['control_request_headers']))
</del><ins>+    if stashed_data['control_request_headers'] != None:
+      headers.append((&quot;x-control-request-headers&quot;, stashed_data['control_request_headers']))
</ins><span class="cx">     headers.append((&quot;x-preflight-referrer&quot;, stashed_data['preflight_referrer']))
</span><span class="cx">     headers.append((&quot;x-referrer&quot;, request.headers.get(&quot;Referer&quot;, &quot;&quot;) ))
</span><span class="cx">     headers.append((&quot;x-origin&quot;, request.headers.get(&quot;Origin&quot;, &quot;&quot;) ))
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapiresponseresponseidlexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/response/response-idl-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/response/response-idl-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/response/response-idl-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -12,8 +12,8 @@
</span><span class="cx"> PASS Response interface: attribute ok 
</span><span class="cx"> PASS Response interface: attribute statusText 
</span><span class="cx"> PASS Response interface: attribute headers 
</span><ins>+PASS Response interface: operation clone() 
</ins><span class="cx"> PASS Response interface: attribute body 
</span><del>-PASS Response interface: operation clone() 
</del><span class="cx"> PASS Response interface: attribute bodyUsed 
</span><span class="cx"> PASS Response interface: operation arrayBuffer() 
</span><span class="cx"> PASS Response interface: operation blob() 
</span><span class="lines">@@ -31,8 +31,8 @@
</span><span class="cx"> PASS Response interface: new Response() must inherit property &quot;ok&quot; with the proper type (5) 
</span><span class="cx"> PASS Response interface: new Response() must inherit property &quot;statusText&quot; with the proper type (6) 
</span><span class="cx"> PASS Response interface: new Response() must inherit property &quot;headers&quot; with the proper type (7) 
</span><del>-PASS Response interface: new Response() must inherit property &quot;body&quot; with the proper type (8) 
-PASS Response interface: new Response() must inherit property &quot;clone&quot; with the proper type (9) 
</del><ins>+PASS Response interface: new Response() must inherit property &quot;clone&quot; with the proper type (8) 
+PASS Response interface: new Response() must inherit property &quot;body&quot; with the proper type (9) 
</ins><span class="cx"> PASS Response interface: new Response() must inherit property &quot;bodyUsed&quot; with the proper type (10) 
</span><span class="cx"> PASS Response interface: new Response() must inherit property &quot;arrayBuffer&quot; with the proper type (11) 
</span><span class="cx"> PASS Response interface: new Response() must inherit property &quot;blob&quot; with the proper type (12) 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapiresponseresponseidlhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/response/response-idl.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/response/response-idl.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/response/response-idl.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -18,6 +18,7 @@
</span><span class="cx">       [NoInterfaceObject,
</span><span class="cx">       Exposed=(Window,Worker)]
</span><span class="cx">       interface Body {
</span><ins>+        readonly attribute ReadableStream? body;
</ins><span class="cx">         readonly attribute boolean bodyUsed;
</span><span class="cx">         [NewObject] Promise&lt;ArrayBuffer&gt; arrayBuffer();
</span><span class="cx">         [NewObject] Promise&lt;Blob&gt; blob();
</span><span class="lines">@@ -40,7 +41,6 @@
</span><span class="cx">         readonly attribute boolean ok;
</span><span class="cx">         readonly attribute ByteString statusText;
</span><span class="cx">         [SameObject] readonly attribute Headers headers;
</span><del>-        readonly attribute ReadableStream? body;
</del><span class="cx"> 
</span><span class="cx">         [NewObject] Response clone();
</span><span class="cx">       };
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfontsOWNERS"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fonts/OWNERS (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fonts/OWNERS                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fonts/OWNERS        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+@gsnedders
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfontsw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fonts/w3c-import.log (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fonts/w3c-import.log        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fonts/w3c-import.log        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -17,3 +17,4 @@
</span><span class="cx"> List of files:
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/fonts/CanvasTest.sfd
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/fonts/CanvasTest.ttf
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/fonts/OWNERS
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshrtimeidlharnessexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/idlharness-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/idlharness-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/idlharness-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,20 +1,16 @@
</span><span class="cx"> High Resolution Time IDL tests
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-FAIL Window interface: attribute performance assert_true: The prototype object must have a property &quot;performance&quot; expected true got false
</del><ins>+PASS Window interface: attribute performance 
</ins><span class="cx"> PASS WorkerGlobalScope interface: existence and properties of interface object 
</span><del>-FAIL Performance interface: existence and properties of interface object undefined is not an object (evaluating 'this.array
-                     .members[this.base]
-                     .has_extended_attribute')
</del><ins>+PASS Performance interface: existence and properties of interface object 
</ins><span class="cx"> PASS Performance interface object length 
</span><span class="cx"> PASS Performance interface object name 
</span><del>-FAIL Performance interface: existence and properties of interface prototype object undefined is not an object (evaluating 'this.array
-                         .members[inherit_interface]
-                         .has_extended_attribute')
</del><ins>+PASS Performance interface: existence and properties of interface prototype object 
</ins><span class="cx"> PASS Performance interface: existence and properties of interface prototype object's &quot;constructor&quot; property 
</span><span class="cx"> PASS Performance interface: operation now() 
</span><span class="cx"> PASS Performance must be primary interface of window.performance 
</span><del>-FAIL Stringification of window.performance undefined is not an object (evaluating 'this.array.members[this.base].has_stringifier')
</del><ins>+PASS Stringification of window.performance 
</ins><span class="cx"> PASS Performance interface: window.performance must inherit property &quot;now&quot; with the proper type (0) 
</span><span class="cx"> typedef double DOMHighResTimeStamp;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshrtimeidlharnesshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/idlharness.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/idlharness.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/idlharness.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -15,7 +15,7 @@
</span><span class="cx"> &lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</span><span class="cx"> 
</span><span class="cx"> &lt;pre id='untested_idl' style='display:none'&gt;
</span><del>-
</del><ins>+[PrimaryGlobal]
</ins><span class="cx"> interface Window {
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="lines">@@ -23,6 +23,9 @@
</span><span class="cx"> interface WorkerGlobalScope {
</span><span class="cx"> };
</span><span class="cx"> 
</span><ins>+[Exposed=(Window,Worker)]
+interface EventTarget {
+};
</ins><span class="cx"> &lt;/pre&gt;
</span><span class="cx"> 
</span><span class="cx"> &lt;pre id='idl'&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshrtimew3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/w3c-import.log (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/w3c-import.log        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/w3c-import.log        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -21,3 +21,4 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/hr-time/idlharness.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/hr-time/monotonic-clock.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/hr-time/test_cross_frame_start.html
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/hr-time/window-worker-time-origin.html
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshrtimewindowworkertimeoriginexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/window-worker-time-origin-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/window-worker-time-origin-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/window-worker-time-origin-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+Description
+
+This test validates that a Worker's time origin is its moment of creation and differs from its spawner's.
+
+
+PASS Worker time origin is approximately its creation time 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshrtimewindowworkertimeoriginhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/window-worker-time-origin.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/window-worker-time-origin.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/window-worker-time-origin.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,36 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;performance.now() time origin&lt;/title&gt;
+&lt;meta name=&quot;author&quot; title=&quot;JosephPecoraro&quot; href=&quot;mailto:joepeck@webkit.org&quot;&gt;
+&lt;meta name=&quot;assert&quot; content=&quot;Time origin in Worker should be Worker's moment of creation.&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://w3c.github.io/hr-time/#time-origin-1&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+async_test(function(t) {
+  this.step_timeout(function() {
+    var workerScript = 'postMessage({now: performance.now()})';
+    var blob = new Blob([workerScript]);
+    var worker = new Worker(URL.createObjectURL(blob));
+    var windowWorkerCreationTime = performance.now();
+    worker.addEventListener(&quot;message&quot;, t.step_func_done(function(event) {
+      var workerNow = event.data.now;
+
+      // We waited 1s to spawn the worker. So verify the worker timestamp is at least less then 0.5 seconds.
+      assert_less_than(workerNow, 500, &quot;worker performance.now() must be very close to its creation time&quot;);
+
+      // We waited 1s to spawn the worker. Window's now is ~1000, Worker's now will be much lower.
+      assert_greater_than(windowWorkerCreationTime - workerNow, 500, &quot;window's time origin must be before worker's time origin&quot;);
+    }));
+  }, 1000);
+}, 'Worker time origin is approximately its creation time');
+&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;h1&gt;Description&lt;/h1&gt;
+&lt;p&gt;This test validates that a Worker's time origin is its moment of creation and differs from its spawner's.&lt;/p&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlOWNERS"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/OWNERS (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/OWNERS        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/OWNERS        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,6 +1,5 @@
</span><span class="cx"> @ayg
</span><span class="cx"> @Ms2ger
</span><del>-@gsnedders
</del><span class="cx"> @jdm
</span><span class="cx"> @jgraham
</span><span class="cx"> @sideshowbarker
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersbrowsingthewebhistorytraversalbrowsing_context_name0html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/history-traversal/browsing_context_name-0.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/history-traversal/browsing_context_name-0.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/history-traversal/browsing_context_name-0.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,35 @@
</span><ins>+&lt;iframe id=&quot;test&quot;&gt;&lt;/iframe&gt;
+&lt;script&gt;
+var opener = window.opener;
+var t = opener.t;
+var f = document.getElementById(&quot;test&quot;);
+var l = opener.document.getElementById(&quot;step_log&quot;);
+
+log = function(t) {l.textContent += (&quot;\n&quot; + t)}
+var navigated = false;
+var steps = [
+  () =&gt; f.src = &quot;browsing_context_name-1.html&quot;,
+  () =&gt; {
+    navigated = true;
+    opener.assert_equals(f.contentWindow.name, &quot;test&quot;, &quot;Initial load&quot;);
+    f.src = &quot;browsing_context_name-2.html&quot;
+  },
+  () =&gt; {
+    opener.assert_equals(f.contentWindow.name, &quot;test1&quot;);
+    opener.assert_equals(history.length, 2);
+    history.back()
+  },
+  () =&gt; {
+    opener.assert_equals(f.contentWindow.name, &quot;test1&quot;, &quot;After navigation&quot;);
+    t.done();
+  }
+].map((x, i) =&gt; t.step_func(() =&gt; {log(&quot;Step &quot; + (i+1)); x()}));
+
+next = () =&gt; steps.shift()();
+
+onload = () =&gt; {
+  log(&quot;page load&quot;);
+  f.onload = () =&gt; {log(&quot;iframe onload&quot;); next()};
+  setTimeout(next, 0);
+};
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersbrowsingthewebhistorytraversalbrowsing_context_name_cross_originhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/history-traversal/browsing_context_name_cross_origin.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/history-traversal/browsing_context_name_cross_origin.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/history-traversal/browsing_context_name_cross_origin.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -17,7 +17,7 @@
</span><span class="cx"> var steps = [
</span><span class="cx">   function() {f.src = &quot;browsing_context_name-1.html&quot;},
</span><span class="cx">   function() {
</span><del>-                var navigated = true;
</del><ins>+                navigated = true;
</ins><span class="cx">                 assert_equals(f.contentWindow.name, &quot;test&quot;, &quot;Initial load&quot;);
</span><span class="cx">                 setTimeout(next, 0);
</span><span class="cx">               },
</span><span class="lines">@@ -37,5 +37,5 @@
</span><span class="cx"> 
</span><span class="cx"> f.onload=next;
</span><span class="cx"> 
</span><del>-onload = setTimeout(next, 0);
</del><ins>+onload = function() { setTimeout(next, 0); };
</ins><span class="cx"> &lt;/script&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersbrowsingthewebhistorytraversalsameurlexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/history-traversal/same-url-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/history-traversal/same-url-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/history-traversal/same-url-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+FAIL Test same-URL navigation and its effects on history assert_equals: expected 1 but got 100
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersbrowsingthewebhistorytraversalsameurlhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/history-traversal/same-url.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/history-traversal/same-url.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/history-traversal/same-url.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,38 @@
</span><ins>+&lt;title&gt;Test same-URL navigation and its effects on history&lt;/title&gt;
+&lt;script src=/resources/testharness.js&gt;&lt;/script&gt;
+&lt;script src=/resources/testharnessreport.js&gt;&lt;/script&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;iframe src=resources/a.html&gt;&lt;/iframe&gt;
+&lt;script&gt;
+async_test((t) =&gt; {
+  let state = &quot;begin&quot;
+  self[0].frameElement.onload = t.step_func(() =&gt; {
+    if(state === &quot;b first&quot;) {
+      assert_equals(history.length, 2)
+
+      state = &quot;c first&quot;
+      self[0].location = &quot;resources/c.html&quot;
+    } else if (state === &quot;c first&quot;) {
+      assert_equals(history.length, 3)
+
+      state = &quot;a second&quot;
+      history.back(2)
+    } else if (state === &quot;a second&quot;) {
+      assert_equals(history.length, 3)
+
+      state = &quot;a third&quot;
+      self[0].location.href = &quot;resources/a.html&quot;
+    } else if (state === &quot;a third&quot;) {
+      assert_equals(history.length, 3)
+      t.done()
+    }
+  })
+  onload = t.step_func(() =&gt; {
+    assert_equals(state, &quot;begin&quot;)
+    assert_equals(history.length, 1)
+
+    state = &quot;b first&quot;
+    self[0].location = &quot;resources/b.html&quot;
+  })
+})
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersbrowsingthewebhistorytraversalw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/history-traversal/w3c-import.log (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/history-traversal/w3c-import.log        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/history-traversal/w3c-import.log        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -18,8 +18,8 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/history-traversal/001-1.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/history-traversal/001-2.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/history-traversal/001.html
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/history-traversal/MANIFEST
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/history-traversal/PopStateEvent.html
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/history-traversal/browsing_context_name-0.html
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/history-traversal/browsing_context_name-1.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/history-traversal/browsing_context_name-2.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/history-traversal/browsing_context_name-3.html
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersbrowsingthewebnavigatingacrossdocumentsnavigationunloadformsubmit1html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit-1.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit-1.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit-1.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,23 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+
+&lt;h1&gt;navigation-unload-form-submit-1.html&lt;/h1&gt;
+
+&lt;script&gt;
+let isSubmit = false;
+
+window.unload = function () {
+    window.location = 'is-Submit' + isSubmit;
+}
+
+function setIsSubmit() {
+    isSubmit = true;
+}
+&lt;/script&gt;
+
+&lt;form onsubmit=&quot;setIsSubmit&quot; action=&quot;navigation-unload-form-submit-2.html&quot;&gt;
+  &lt;input type=&quot;submit&quot;&gt;
+&lt;/form&gt;
+
+&lt;script&gt;
+parent.finishedLoading();
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersbrowsingthewebnavigatingacrossdocumentsnavigationunloadformsubmit2html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit-2.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit-2.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit-2.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+
+&lt;h1&gt;navigation-unload-form-submit-2.html&lt;/h1&gt;
+
+&lt;script&gt;
+parent.finishedLoading();
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersbrowsingthewebnavigatingacrossdocumentsnavigationunloadformsubmitexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+CONSOLE MESSAGE: line 22: TypeError: parent.finishedLoading is not a function. (In 'parent.finishedLoading()', 'parent.finishedLoading' is undefined)
+
+
+PASS Tests that navigation during an unload caused by a form submit does nothing 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersbrowsingthewebnavigatingacrossdocumentsnavigationunloadformsubmithtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,24 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://html.spec.whatwg.org/multipage/browsers.html#navigating-across-documents&quot;&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Domenic Denicola&quot; href=&quot;mailto:d@domenic.me&quot;&gt;
+
+&lt;iframe id=&quot;i&quot; src=&quot;navigation-unload-form-submit-1.html&quot;&gt;&lt;/iframe&gt;
+
+&lt;!--  derived from https://bugzilla.mozilla.org/show_bug.cgi?id=247660#c0  --&gt;
+
+&lt;script&gt;
+var test = async_test('Tests that navigation during an unload caused by a form submit does nothing');
+window.onload = test.step_func(function() {
+    var i = document.querySelector('#i');
+
+    window.finishedLoading = test.step_func_done(function () {
+        assert_equals(i.contentWindow.location.pathname.split('/').pop(), 'navigation-unload-form-submit-2.html');
+        assert_equals(i.contentWindow.location.hash, '');
+    });
+
+    i.contentWindow.document.querySelector('input[type=&quot;submit&quot;]').click();
+});
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersbrowsingthewebnavigatingacrossdocumentsnavigationunloadsameoriginfragment1html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment-1.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment-1.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment-1.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,9 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+
+&lt;h1&gt;navigation-unload-same-origin-fragment-1.html&lt;/h1&gt;
+
+&lt;script&gt;
+if (parent.finishedLoading) {
+    parent.finishedLoading();
+}
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersbrowsingthewebnavigatingacrossdocumentsnavigationunloadsameoriginfragment2html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment-2.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment-2.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment-2.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,9 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+
+&lt;h1&gt;navigation-unload-same-origin-fragment-2.html&lt;/h1&gt;
+
+&lt;script&gt;
+if (parent.finishedLoading) {
+    parent.finishedLoading();
+}
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersbrowsingthewebnavigatingacrossdocumentsnavigationunloadsameoriginfragmentexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+
+PASS Tests that a fragment navigation in the unload handler will not block the initial navigation 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersbrowsingthewebnavigatingacrossdocumentsnavigationunloadsameoriginfragmenthtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://html.spec.whatwg.org/multipage/browsers.html#navigating-across-documents&quot;&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Domenic Denicola&quot; href=&quot;mailto:d@domenic.me&quot;&gt;
+
+&lt;iframe id=&quot;i&quot; src=&quot;navigation-unload-same-origin-fragment-1.html&quot;&gt;&lt;/iframe&gt;
+
+&lt;!--  a timeout indicates that setting i.contentWindow.location.hash (a second navigation) aborted the first navigation,
+    and so it stayed on a.html and finishedLoading was never called  --&gt;
+
+&lt;script&gt;
+var test = async_test('Tests that a fragment navigation in the unload handler will not block the initial navigation');
+window.onload = test.step_func(function() {
+    var i = document.querySelector('#i');
+
+    i.contentWindow.onunload = test.step_func(function() {
+        i.contentWindow.location.hash = '#fragment';
+    });
+
+    window.finishedLoading = test.step_func_done(function () {
+        assert_equals(i.contentWindow.location.pathname.split('/').pop(), 'navigation-unload-same-origin-fragment-2.html');
+        assert_equals(i.contentWindow.location.hash, '');
+    });
+
+    i.contentWindow.location.href = 'navigation-unload-same-origin-fragment-2.html';
+});
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersbrowsingthewebnavigatingacrossdocumentsnavigation_unload_same_originexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_same_origin-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_same_origin-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_same_origin-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,4 +1,4 @@
</span><span class="cx"> frame &quot;&lt;!--framePath //&lt;!--frame0--&gt;--&gt;&quot; - has 1 onunload handler(s)
</span><span class="cx"> 
</span><del>-FAIL Same-origin navigation started from unload handler assert_equals: expected &quot;001-3&quot; but got &quot;001-2&quot;
</del><ins>+PASS Same-origin navigation started from unload handler 
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersbrowsingthewebnavigatingacrossdocumentsnavigation_unload_same_originhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_same_origin.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_same_origin.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_same_origin.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -13,7 +13,7 @@
</span><span class="cx"> });
</span><span class="cx"> 
</span><span class="cx"> onmessage = t.step_func(function(e) {
</span><del>-  assert_equals(e.data, &quot;001-3&quot;);
</del><ins>+  assert_equals(e.data, &quot;001-2&quot;);
</ins><span class="cx">   t.done();
</span><span class="cx"> });
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersbrowsingthewebnavigatingacrossdocumentsw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/w3c-import.log (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/w3c-import.log        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/w3c-import.log        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -41,7 +41,6 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/013.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/014.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/015.html
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/MANIFEST
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/blank.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/child_navigates_parent_location-1.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/child_navigates_parent_location-2.html
</span><span class="lines">@@ -57,6 +56,12 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/href.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-query-fragment-components.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling.html
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit-1.html
+/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit-2.html
+/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-form-submit.html
+/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment-1.html
+/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment-2.html
+/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment.html
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_data_url-1.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_data_url.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_same_origin-1.html
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersbrowsingthewebreadmediapageloadimageexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/read-media/pageload-image-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/read-media/pageload-image-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/read-media/pageload-image-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,5 +1,3 @@
</span><del>-CONSOLE MESSAGE: line 1409: Blocked a frame with origin &quot;http://localhost:8800&quot; from accessing a frame with origin &quot;null&quot;.  The frame requesting access has a protocol of &quot;http&quot;, the frame being accessed has a protocol of &quot;data&quot;. Protocols must match.
</del><span class="cx"> 
</span><ins>+PASS The document for a standalone media file should have one child in the body. 
</ins><span class="cx"> 
</span><del>-FAIL The document for a standalone media file should have one child in the body. null is not an object (evaluating 'testframe.contentDocument.body')
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersbrowsingthewebreadmediapageloadimagehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/read-media/pageload-image.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/read-media/pageload-image.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/read-media/pageload-image.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -13,6 +13,7 @@
</span><span class="cx"> 
</span><span class="cx">   function frameLoaded() {
</span><span class="cx">     var testframe = document.getElementById('testframe');
</span><ins>+    assert_equals(testframe.contentDocument.contentType, &quot;image/png&quot;);
</ins><span class="cx">     var testframeChildren = testframe.contentDocument.body.childNodes;
</span><span class="cx">     assert_equals(testframeChildren.length, 1, &quot;Body of image document has 1 child&quot;);
</span><span class="cx">     assert_equals(testframeChildren[0].nodeName, &quot;IMG&quot;, &quot;Only child of body must be an &lt;img&gt; element&quot;);
</span><span class="lines">@@ -24,7 +25,6 @@
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx">   &lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</span><del>-  &lt;iframe id=&quot;testframe&quot; onload=&quot;t.step(frameLoaded)&quot;
-   src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9oMFgQGMyFwHucAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAADElEQVQI12P4//8/AAX+Av7czFnnAAAAAElFTkSuQmCC&quot;&gt;&lt;/iframe&gt;
</del><ins>+  &lt;iframe id=&quot;testframe&quot; onload=&quot;t.step(frameLoaded)&quot; src=&quot;/images/blue.png&quot;&gt;&lt;/iframe&gt;
</ins><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersbrowsingthewebreadmediapageloadvideohtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/read-media/pageload-video.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/read-media/pageload-video.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/read-media/pageload-video.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -13,6 +13,7 @@
</span><span class="cx"> 
</span><span class="cx">   function frameLoaded() {
</span><span class="cx">     var testframe = document.getElementById('testframe');
</span><ins>+    assert_equals(testframe.contentDocument.contentType, &quot;video/webm&quot;);
</ins><span class="cx">     var testframeChildren = testframe.contentDocument.body.childNodes;
</span><span class="cx">     assert_equals(testframeChildren.length, 1, &quot;Body of image document has 1 child&quot;);
</span><span class="cx">     assert_equals(testframeChildren[0].nodeName, &quot;VIDEO&quot;, &quot;Only child of body must be an &lt;video&gt; element&quot;);
</span><span class="lines">@@ -24,7 +25,6 @@
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx">   &lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</span><del>-  &lt;iframe id=&quot;testframe&quot; onload=&quot;t.step(frameLoaded)&quot;
-   src=&quot;data:video/webm,&quot;&gt;&lt;/iframe&gt;
</del><ins>+  &lt;iframe id=&quot;testframe&quot; onload=&quot;t.step(frameLoaded)&quot; src=&quot;/media/white.webm&quot;&gt;&lt;/iframe&gt;
</ins><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersbrowsingthewebscrolltofragidw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/scroll-to-fragid/w3c-import.log (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/scroll-to-fragid/w3c-import.log        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/scroll-to-fragid/w3c-import.log        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -22,7 +22,6 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/scroll-to-fragid/005.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/scroll-to-fragid/006.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/scroll-to-fragid/007.html
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/scroll-to-fragid/MANIFEST
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/scroll-to-fragid/scroll-frag-percent-encoded.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/scroll-to-fragid/scroll-to-anchor-name.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/scroll-to-fragid/scroll-to-id-top.html
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersbrowsingthewebunloadingdocumentspromptw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/prompt/w3c-import.log (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/prompt/w3c-import.log        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/prompt/w3c-import.log        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -21,7 +21,6 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/prompt/002-1.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/prompt/002.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/prompt/003.html
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/prompt/MANIFEST
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/prompt/manual-001.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/prompt/manual-002.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/prompt/manual-003.html
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersbrowsingthewebunloadingdocumentsunloadw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/unload/w3c-import.log (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/unload/w3c-import.log        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/unload/w3c-import.log        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -34,6 +34,5 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/unload/008.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/unload/009-1.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/unload/009.html
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/unload/MANIFEST
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/unload/manual-001-1.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/unload/manual-001.html
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersbrowsingthewebunloadingdocumentsw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/w3c-import.log (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/w3c-import.log        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/w3c-import.log        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -20,7 +20,6 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/003.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/004.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/005.html
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/MANIFEST
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/base.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/beforeunload-on-history-back-1.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/beforeunload-on-history-back.html
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsershistorythelocationinterfacelocationprotocolsetternonbrokenexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/location-protocol-setter-non-broken-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/location-protocol-setter-non-broken-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/location-protocol-setter-non-broken-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><ins>+CONSOLE MESSAGE: Not allowed to load local resource: script%3E
</ins><span class="cx"> CONSOLE MESSAGE: Not allowed to load local resource: blank.html
</span><del>-CONSOLE MESSAGE: Not allowed to load local resource: script%3E
</del><span class="cx"> 
</span><span class="cx"> PASS Set HTTP URL frame location.protocol to x 
</span><span class="cx"> PASS Set data URL frame location.protocol to x 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersofflinebrowserstatenavigator_online_onlineexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/offline/browser-state/navigator_online_online-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/offline/browser-state/navigator_online_online-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/offline/browser-state/navigator_online_online-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,3 +1,3 @@
</span><span class="cx"> 
</span><del>-PASS Offline Application Cache - navigator_online_online 
</del><ins>+FAIL Offline Application Cache - navigator_online_online assert_true: onLine test expected true got false
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersorigincrossoriginobjectsframehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/origin/cross-origin-objects/frame.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/origin/cross-origin-objects/frame.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/origin/cross-origin-objects/frame.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -35,7 +35,7 @@
</span><span class="cx"> &lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><del>-  &lt;!-- Two subframes to give us some indexed properties --&gt;
</del><ins>+  &lt;!--  Two subframes to give us some indexed properties  --&gt;
</ins><span class="cx">   &lt;iframe&gt;&lt;/iframe&gt;
</span><span class="cx">   &lt;iframe&gt;&lt;/iframe&gt;
</span><span class="cx"> &lt;/body&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnamesw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/w3c-import.log (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/w3c-import.log        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/w3c-import.log        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -19,7 +19,6 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/001.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/002-1.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/002.html
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/MANIFEST
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/browsing-context-choose-existing.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/browsing-context-choose-parent.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/browsing-context-choose-self-1.html
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsnestedbrowsingcontextsframeElementsubexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/nested-browsing-contexts/frameElement.sub-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/nested-browsing-contexts/frameElement.sub-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/nested-browsing-contexts/frameElement.sub-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,8 +1,7 @@
</span><ins>+CONSOLE MESSAGE: line 7: Blocked a frame with origin &quot;http://127.0.0.1:8800&quot; from accessing a frame with origin &quot;http://localhost:8800&quot;. Protocols, domains, and ports must match.
</ins><span class="cx"> 
</span><del>-Harness Error (TIMEOUT), message = null
-
</del><span class="cx"> PASS The window's frameElement attribute must return its container element if it is a nested browsing context 
</span><del>-FAIL The SecurityError must be thrown if the window accesses to frameElement attribute of a Window which does not have the same effective script origin assert_throws: The SecurityError exception should be thrown. function &quot;function () { frames[1].frameElement; }&quot; did not throw
-TIMEOUT The window's frameElement attribute must return null if the container's document does not have the same effective script origin Test timed out
</del><ins>+PASS The SecurityError must be thrown if the window accesses to frameElement attribute of a Window which does not have the same effective script origin 
+PASS The window's frameElement attribute must return null if the container's document does not have the same effective script origin 
</ins><span class="cx"> PASS The window's frameElement attribute must return null if it is not a nested browsing context 
</span><span class="cx">         
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsnestedbrowsingcontextsw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/nested-browsing-contexts/w3c-import.log (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/nested-browsing-contexts/w3c-import.log        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/nested-browsing-contexts/w3c-import.log        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -15,7 +15,6 @@
</span><span class="cx"> None
</span><span class="cx"> ------------------------------------------------------------------------
</span><span class="cx"> List of files:
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/nested-browsing-contexts/MANIFEST
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/nested-browsing-contexts/contains.json
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/nested-browsing-contexts/test.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/nested-browsing-contexts/testcase3.html
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowstargetingcrossoriginnestedbrowsingcontextssubexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/targeting-cross-origin-nested-browsing-contexts.sub-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/targeting-cross-origin-nested-browsing-contexts.sub-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/targeting-cross-origin-nested-browsing-contexts.sub-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,7 +1,5 @@
</span><span class="cx"> CONSOLE MESSAGE: line 19: Unsafe JavaScript attempt to initiate navigation for frame with URL 'about:blank' from frame with URL 'http://localhost:8800/html/browsers/windows/targeting-cross-origin-nested-browsing-contexts.sub.html'. The frame attempting navigation is neither same-origin with the target, nor is it the target's parent or opener.
</span><span class="cx"> 
</span><del>-CONSOLE MESSAGE: line 19: Unsafe JavaScript attempt to initiate navigation for frame with URL 'about:blank' from frame with URL 'http://localhost:8800/html/browsers/windows/targeting-cross-origin-nested-browsing-contexts.sub.html'. The frame attempting navigation is neither same-origin with the target, nor is it the target's parent or opener.
</del><span class="cx"> 
</span><del>-
</del><span class="cx"> PASS Targeting nested browsing contexts 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmldomdynamicmarkupinsertiondocumentwriteemptyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/dynamic-markup-insertion/document-write/empty.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/dynamic-markup-insertion/document-write/empty.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/dynamic-markup-insertion/document-write/empty.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;html&gt;&lt;body&gt;&lt;/body&gt;&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmldomdynamicmarkupinsertiondocumentwritew3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/dynamic-markup-insertion/document-write/w3c-import.log (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/dynamic-markup-insertion/document-write/w3c-import.log        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/dynamic-markup-insertion/document-write/w3c-import.log        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -79,6 +79,7 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/dom/dynamic-markup-insertion/document-write/051.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/dom/dynamic-markup-insertion/document-write/document.write-01.xhtml
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/dom/dynamic-markup-insertion/document-write/document.write-02.html
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/html/dom/dynamic-markup-insertion/document-write/empty.html
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/dom/dynamic-markup-insertion/document-write/iframe_001.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/dom/dynamic-markup-insertion/document-write/iframe_002.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/dom/dynamic-markup-insertion/document-write/iframe_003.html
</span><span class="lines">@@ -107,3 +108,4 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/dom/dynamic-markup-insertion/document-write/script_011.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/dom/dynamic-markup-insertion/document-write/script_012.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/dom/dynamic-markup-insertion/document-write/script_013.html
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/html/dom/dynamic-markup-insertion/document-write/write-active-document.html
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmldomdynamicmarkupinsertiondocumentwritewriteactivedocumentexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/dynamic-markup-insertion/document-write/write-active-document-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/dynamic-markup-insertion/document-write/write-active-document-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/dynamic-markup-insertion/document-write/write-active-document-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+FAIL document.write only writes to active documents assert_equals: expected (string) &quot;IFRAME&quot; but got (undefined) undefined
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmldomdynamicmarkupinsertiondocumentwritewriteactivedocumenthtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/dynamic-markup-insertion/document-write/write-active-document.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/dynamic-markup-insertion/document-write/write-active-document.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/dynamic-markup-insertion/document-write/write-active-document.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,35 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;title&gt;document.write only writes to active documents&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;body&gt;&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;&lt;/body&gt;
+&lt;script&gt;
+  async_test(function(t) {
+    var child = document.createElement(&quot;iframe&quot;);
+    child.src = &quot;empty.html?1&quot;;
+    child.onload = t.step_func(function() {
+      var child1 = child.contentDocument;
+      var link = child1.createElement(&quot;a&quot;);
+      link.href = &quot;data:text/html,Clicked.&quot;;
+      link.innerText = &quot;Link.&quot;;
+      child1.body.appendChild(link);
+      var grandchild = child1.createElement(&quot;iframe&quot;);
+      grandchild.src = &quot;empty.html?2&quot;;
+      grandchild.onload = t.step_func(function() {
+        var grandchild1 = grandchild.contentDocument;
+        child.onload = t.step_func(function() {
+          // This is a write to an inactive document
+          child1.write('WRITE HAPPENED');
+          assert_equals(child1.body.lastChild.tagName, &quot;IFRAME&quot;);
+          // This is a write to an active but not fully active document
+          grandchild1.write('WRITE HAPPENED');
+          assert_equals(grandchild1.body.innerHTML, &quot;WRITE HAPPENED&quot;);
+          t.done();
+        });
+        link.click();
+      });
+      child1.body.appendChild(grandchild);
+    });
+    document.body.appendChild(child);
+  });
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmldomdynamicmarkupinsertionopeningtheinputstream010expectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/dynamic-markup-insertion/opening-the-input-stream/010-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/dynamic-markup-insertion/opening-the-input-stream/010-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/dynamic-markup-insertion/opening-the-input-stream/010-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,4 +1,4 @@
</span><del>-#PID UNRESPONSIVE - com.apple.WebKit.WebContent.Development (pid 23342)
</del><ins>+#PID UNRESPONSIVE - com.apple.WebKit.WebContent.Development (pid 42707)
</ins><span class="cx"> FAIL: Timed out waiting for notifyDone to be called
</span><span class="cx"> 
</span><span class="cx"> #EOF
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmldomelementsformsjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/elements-forms.js (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/elements-forms.js        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/elements-forms.js        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -79,8 +79,7 @@
</span><span class="cx">     formTarget: &quot;string&quot;,
</span><span class="cx">     name: &quot;string&quot;,
</span><span class="cx">     type: {type: &quot;enum&quot;, keywords: [&quot;submit&quot;, &quot;reset&quot;, &quot;button&quot;], defaultVal: &quot;submit&quot;},
</span><del>-    value: &quot;string&quot;,
-    // TODO: menu
</del><ins>+    value: &quot;string&quot;
</ins><span class="cx">   },
</span><span class="cx">   select: {
</span><span class="cx">     autofocus: &quot;boolean&quot;,
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmldomelementsmiscjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/elements-misc.js (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/elements-misc.js        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/elements-misc.js        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -10,6 +10,7 @@
</span><span class="cx">   script: {
</span><span class="cx">     src: &quot;url&quot;,
</span><span class="cx">     type: &quot;string&quot;,
</span><ins>+    noModule: &quot;boolean&quot;,
</ins><span class="cx">     charset: &quot;string&quot;,
</span><span class="cx">     // TODO: async attribute (complicated).
</span><span class="cx">     defer: &quot;boolean&quot;,
</span><span class="lines">@@ -16,6 +17,10 @@
</span><span class="cx">     crossOrigin: {type: &quot;enum&quot;, keywords: [&quot;anonymous&quot;, &quot;use-credentials&quot;], nonCanon:{&quot;&quot;: &quot;anonymous&quot;}, isNullable: true, defaultVal: null, invalidVal: &quot;anonymous&quot;},
</span><span class="cx">     nonce: &quot;string&quot;,
</span><span class="cx">     integrity: &quot;string&quot;,
</span><ins>+
+    // Obsolete
+    event: &quot;string&quot;,
+    htmlFor: {type: &quot;string&quot;, domAttrName: &quot;for&quot;},
</ins><span class="cx">   },
</span><span class="cx">   noscript: {},
</span><span class="cx"> 
</span><span class="lines">@@ -36,8 +41,8 @@
</span><span class="cx">   summary: {},
</span><span class="cx">   menu: {
</span><span class="cx">     // Conforming
</span><del>-    //TODO: check that missing value default is popup if parent's type is popup
-    type: {type: &quot;enum&quot;, keywords:[&quot;popup&quot;, &quot;toolbar&quot;], defaultVal: &quot;toolbar&quot;},
</del><ins>+    //TODO: check that missing value default is context if parent's type is context
+    type: {type: &quot;enum&quot;, keywords:[&quot;context&quot;, &quot;toolbar&quot;], defaultVal: &quot;toolbar&quot;},
</ins><span class="cx">     label: &quot;string&quot;,
</span><span class="cx"> 
</span><span class="cx">     // Obsolete
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmldominterfacesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/interfaces-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/interfaces-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/interfaces-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -5,6 +5,7 @@
</span><span class="cx"> CONSOLE MESSAGE: line 251: callback not yet supported
</span><span class="cx"> CONSOLE MESSAGE: line 251: callback not yet supported
</span><span class="cx"> CONSOLE MESSAGE: line 251: callback not yet supported
</span><ins>+CONSOLE MESSAGE: WebSocket network error: The operation couldn’t be completed. Network is down
</ins><span class="cx"> HTML IDL tests
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="lines">@@ -168,146 +169,140 @@
</span><span class="cx"> PASS Document interface: iframe.contentDocument must inherit property &quot;createTreeWalker&quot; with the proper type (28) 
</span><span class="cx"> PASS Document interface: calling createTreeWalker(Node,unsigned long,NodeFilter) on iframe.contentDocument with too few arguments must throw TypeError 
</span><span class="cx"> PASS Document interface: iframe.contentDocument must inherit property &quot;styleSheets&quot; with the proper type (29) 
</span><del>-FAIL Document interface: iframe.contentDocument must inherit property &quot;selectedStyleSheetSet&quot; with the proper type (30) assert_inherits: property &quot;selectedStyleSheetSet&quot; not found in prototype chain
-FAIL Document interface: iframe.contentDocument must inherit property &quot;lastStyleSheetSet&quot; with the proper type (31) assert_inherits: property &quot;lastStyleSheetSet&quot; not found in prototype chain
-FAIL Document interface: iframe.contentDocument must inherit property &quot;preferredStyleSheetSet&quot; with the proper type (32) assert_inherits: property &quot;preferredStyleSheetSet&quot; not found in prototype chain
-FAIL Document interface: iframe.contentDocument must inherit property &quot;styleSheetSets&quot; with the proper type (33) assert_inherits: property &quot;styleSheetSets&quot; not found in prototype chain
-FAIL Document interface: iframe.contentDocument must inherit property &quot;enableStyleSheetsForSet&quot; with the proper type (34) assert_inherits: property &quot;enableStyleSheetsForSet&quot; not found in prototype chain
-FAIL Document interface: calling enableStyleSheetsForSet(DOMString) on iframe.contentDocument with too few arguments must throw TypeError assert_inherits: property &quot;enableStyleSheetsForSet&quot; not found in prototype chain
</del><span class="cx"> PASS Document interface: iframe.contentDocument must have own property &quot;location&quot; 
</span><del>-PASS Document interface: iframe.contentDocument must inherit property &quot;domain&quot; with the proper type (36) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;referrer&quot; with the proper type (37) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;cookie&quot; with the proper type (38) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;lastModified&quot; with the proper type (39) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;readyState&quot; with the proper type (40) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;title&quot; with the proper type (42) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;dir&quot; with the proper type (43) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;body&quot; with the proper type (44) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;head&quot; with the proper type (45) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;images&quot; with the proper type (46) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;embeds&quot; with the proper type (47) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;plugins&quot; with the proper type (48) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;links&quot; with the proper type (49) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;forms&quot; with the proper type (50) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;scripts&quot; with the proper type (51) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;getElementsByName&quot; with the proper type (52) 
</del><ins>+PASS Document interface: iframe.contentDocument must inherit property &quot;domain&quot; with the proper type (31) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;referrer&quot; with the proper type (32) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;cookie&quot; with the proper type (33) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;lastModified&quot; with the proper type (34) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;readyState&quot; with the proper type (35) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;title&quot; with the proper type (37) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;dir&quot; with the proper type (38) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;body&quot; with the proper type (39) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;head&quot; with the proper type (40) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;images&quot; with the proper type (41) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;embeds&quot; with the proper type (42) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;plugins&quot; with the proper type (43) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;links&quot; with the proper type (44) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;forms&quot; with the proper type (45) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;scripts&quot; with the proper type (46) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;getElementsByName&quot; with the proper type (47) 
</ins><span class="cx"> PASS Document interface: calling getElementsByName(DOMString) on iframe.contentDocument with too few arguments must throw TypeError 
</span><del>-PASS Document interface: iframe.contentDocument must inherit property &quot;currentScript&quot; with the proper type (53) 
-FAIL Document interface: iframe.contentDocument must inherit property &quot;open&quot; with the proper type (54) assert_inherits: property &quot;open&quot; found on object expected in prototype chain
</del><ins>+PASS Document interface: iframe.contentDocument must inherit property &quot;currentScript&quot; with the proper type (48) 
+FAIL Document interface: iframe.contentDocument must inherit property &quot;open&quot; with the proper type (49) assert_inherits: property &quot;open&quot; found on object expected in prototype chain
</ins><span class="cx"> FAIL Document interface: calling open(DOMString,DOMString) on iframe.contentDocument with too few arguments must throw TypeError assert_inherits: property &quot;open&quot; found on object expected in prototype chain
</span><del>-FAIL Document interface: iframe.contentDocument must inherit property &quot;open&quot; with the proper type (55) assert_inherits: property &quot;open&quot; found on object expected in prototype chain
</del><ins>+FAIL Document interface: iframe.contentDocument must inherit property &quot;open&quot; with the proper type (50) assert_inherits: property &quot;open&quot; found on object expected in prototype chain
</ins><span class="cx"> FAIL Document interface: calling open(USVString,DOMString,DOMString) on iframe.contentDocument with too few arguments must throw TypeError assert_inherits: property &quot;open&quot; found on object expected in prototype chain
</span><del>-PASS Document interface: iframe.contentDocument must inherit property &quot;close&quot; with the proper type (56) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;write&quot; with the proper type (57) 
</del><ins>+PASS Document interface: iframe.contentDocument must inherit property &quot;close&quot; with the proper type (51) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;write&quot; with the proper type (52) 
</ins><span class="cx"> PASS Document interface: calling write(DOMString) on iframe.contentDocument with too few arguments must throw TypeError 
</span><del>-PASS Document interface: iframe.contentDocument must inherit property &quot;writeln&quot; with the proper type (58) 
</del><ins>+PASS Document interface: iframe.contentDocument must inherit property &quot;writeln&quot; with the proper type (53) 
</ins><span class="cx"> PASS Document interface: calling writeln(DOMString) on iframe.contentDocument with too few arguments must throw TypeError 
</span><del>-PASS Document interface: iframe.contentDocument must inherit property &quot;defaultView&quot; with the proper type (59) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;activeElement&quot; with the proper type (60) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;hasFocus&quot; with the proper type (61) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;designMode&quot; with the proper type (62) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;execCommand&quot; with the proper type (63) 
</del><ins>+PASS Document interface: iframe.contentDocument must inherit property &quot;defaultView&quot; with the proper type (54) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;activeElement&quot; with the proper type (55) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;hasFocus&quot; with the proper type (56) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;designMode&quot; with the proper type (57) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;execCommand&quot; with the proper type (58) 
</ins><span class="cx"> PASS Document interface: calling execCommand(DOMString,boolean,DOMString) on iframe.contentDocument with too few arguments must throw TypeError 
</span><del>-PASS Document interface: iframe.contentDocument must inherit property &quot;queryCommandEnabled&quot; with the proper type (64) 
</del><ins>+PASS Document interface: iframe.contentDocument must inherit property &quot;queryCommandEnabled&quot; with the proper type (59) 
</ins><span class="cx"> PASS Document interface: calling queryCommandEnabled(DOMString) on iframe.contentDocument with too few arguments must throw TypeError 
</span><del>-PASS Document interface: iframe.contentDocument must inherit property &quot;queryCommandIndeterm&quot; with the proper type (65) 
</del><ins>+PASS Document interface: iframe.contentDocument must inherit property &quot;queryCommandIndeterm&quot; with the proper type (60) 
</ins><span class="cx"> PASS Document interface: calling queryCommandIndeterm(DOMString) on iframe.contentDocument with too few arguments must throw TypeError 
</span><del>-PASS Document interface: iframe.contentDocument must inherit property &quot;queryCommandState&quot; with the proper type (66) 
</del><ins>+PASS Document interface: iframe.contentDocument must inherit property &quot;queryCommandState&quot; with the proper type (61) 
</ins><span class="cx"> PASS Document interface: calling queryCommandState(DOMString) on iframe.contentDocument with too few arguments must throw TypeError 
</span><del>-PASS Document interface: iframe.contentDocument must inherit property &quot;queryCommandSupported&quot; with the proper type (67) 
</del><ins>+PASS Document interface: iframe.contentDocument must inherit property &quot;queryCommandSupported&quot; with the proper type (62) 
</ins><span class="cx"> PASS Document interface: calling queryCommandSupported(DOMString) on iframe.contentDocument with too few arguments must throw TypeError 
</span><del>-PASS Document interface: iframe.contentDocument must inherit property &quot;queryCommandValue&quot; with the proper type (68) 
</del><ins>+PASS Document interface: iframe.contentDocument must inherit property &quot;queryCommandValue&quot; with the proper type (63) 
</ins><span class="cx"> PASS Document interface: calling queryCommandValue(DOMString) on iframe.contentDocument with too few arguments must throw TypeError 
</span><del>-PASS Document interface: iframe.contentDocument must inherit property &quot;onreadystatechange&quot; with the proper type (69) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;fgColor&quot; with the proper type (70) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;linkColor&quot; with the proper type (71) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;vlinkColor&quot; with the proper type (72) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;alinkColor&quot; with the proper type (73) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;bgColor&quot; with the proper type (74) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;anchors&quot; with the proper type (75) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;applets&quot; with the proper type (76) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;clear&quot; with the proper type (77) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;captureEvents&quot; with the proper type (78) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;releaseEvents&quot; with the proper type (79) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;all&quot; with the proper type (80) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;getElementById&quot; with the proper type (81) 
</del><ins>+PASS Document interface: iframe.contentDocument must inherit property &quot;onreadystatechange&quot; with the proper type (64) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;fgColor&quot; with the proper type (65) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;linkColor&quot; with the proper type (66) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;vlinkColor&quot; with the proper type (67) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;alinkColor&quot; with the proper type (68) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;bgColor&quot; with the proper type (69) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;anchors&quot; with the proper type (70) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;applets&quot; with the proper type (71) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;clear&quot; with the proper type (72) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;captureEvents&quot; with the proper type (73) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;releaseEvents&quot; with the proper type (74) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;all&quot; with the proper type (75) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;getElementById&quot; with the proper type (76) 
</ins><span class="cx"> PASS Document interface: calling getElementById(DOMString) on iframe.contentDocument with too few arguments must throw TypeError 
</span><del>-PASS Document interface: iframe.contentDocument must inherit property &quot;children&quot; with the proper type (82) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;firstElementChild&quot; with the proper type (83) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;lastElementChild&quot; with the proper type (84) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;childElementCount&quot; with the proper type (85) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;prepend&quot; with the proper type (86) 
</del><ins>+PASS Document interface: iframe.contentDocument must inherit property &quot;children&quot; with the proper type (77) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;firstElementChild&quot; with the proper type (78) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;lastElementChild&quot; with the proper type (79) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;childElementCount&quot; with the proper type (80) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;prepend&quot; with the proper type (81) 
</ins><span class="cx"> PASS Document interface: calling prepend([object Object],[object Object]) on iframe.contentDocument with too few arguments must throw TypeError 
</span><del>-PASS Document interface: iframe.contentDocument must inherit property &quot;append&quot; with the proper type (87) 
</del><ins>+PASS Document interface: iframe.contentDocument must inherit property &quot;append&quot; with the proper type (82) 
</ins><span class="cx"> PASS Document interface: calling append([object Object],[object Object]) on iframe.contentDocument with too few arguments must throw TypeError 
</span><del>-PASS Document interface: iframe.contentDocument must inherit property &quot;querySelector&quot; with the proper type (88) 
</del><ins>+PASS Document interface: iframe.contentDocument must inherit property &quot;querySelector&quot; with the proper type (83) 
</ins><span class="cx"> PASS Document interface: calling querySelector(DOMString) on iframe.contentDocument with too few arguments must throw TypeError 
</span><del>-PASS Document interface: iframe.contentDocument must inherit property &quot;querySelectorAll&quot; with the proper type (89) 
</del><ins>+PASS Document interface: iframe.contentDocument must inherit property &quot;querySelectorAll&quot; with the proper type (84) 
</ins><span class="cx"> PASS Document interface: calling querySelectorAll(DOMString) on iframe.contentDocument with too few arguments must throw TypeError 
</span><del>-PASS Document interface: iframe.contentDocument must inherit property &quot;onabort&quot; with the proper type (90) 
-FAIL Document interface: iframe.contentDocument must inherit property &quot;onauxclick&quot; with the proper type (91) assert_inherits: property &quot;onauxclick&quot; not found in prototype chain
-PASS Document interface: iframe.contentDocument must inherit property &quot;onblur&quot; with the proper type (92) 
-FAIL Document interface: iframe.contentDocument must inherit property &quot;oncancel&quot; with the proper type (93) assert_inherits: property &quot;oncancel&quot; not found in prototype chain
-PASS Document interface: iframe.contentDocument must inherit property &quot;oncanplay&quot; with the proper type (94) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;oncanplaythrough&quot; with the proper type (95) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;onchange&quot; with the proper type (96) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;onclick&quot; with the proper type (97) 
-FAIL Document interface: iframe.contentDocument must inherit property &quot;onclose&quot; with the proper type (98) assert_inherits: property &quot;onclose&quot; not found in prototype chain
-PASS Document interface: iframe.contentDocument must inherit property &quot;oncontextmenu&quot; with the proper type (99) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;oncuechange&quot; with the proper type (100) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;ondblclick&quot; with the proper type (101) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;ondrag&quot; with the proper type (102) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;ondragend&quot; with the proper type (103) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;ondragenter&quot; with the proper type (104) 
-FAIL Document interface: iframe.contentDocument must inherit property &quot;ondragexit&quot; with the proper type (105) assert_inherits: property &quot;ondragexit&quot; not found in prototype chain
-PASS Document interface: iframe.contentDocument must inherit property &quot;ondragleave&quot; with the proper type (106) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;ondragover&quot; with the proper type (107) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;ondragstart&quot; with the proper type (108) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;ondrop&quot; with the proper type (109) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;ondurationchange&quot; with the proper type (110) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;onemptied&quot; with the proper type (111) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;onended&quot; with the proper type (112) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;onerror&quot; with the proper type (113) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;onfocus&quot; with the proper type (114) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;oninput&quot; with the proper type (115) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;oninvalid&quot; with the proper type (116) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;onkeydown&quot; with the proper type (117) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;onkeypress&quot; with the proper type (118) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;onkeyup&quot; with the proper type (119) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;onload&quot; with the proper type (120) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;onloadeddata&quot; with the proper type (121) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;onloadedmetadata&quot; with the proper type (122) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;onloadstart&quot; with the proper type (123) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;onmousedown&quot; with the proper type (124) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;onmouseenter&quot; with the proper type (125) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;onmouseleave&quot; with the proper type (126) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;onmousemove&quot; with the proper type (127) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;onmouseout&quot; with the proper type (128) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;onmouseover&quot; with the proper type (129) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;onmouseup&quot; with the proper type (130) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;onmousewheel&quot; with the proper type (131) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;onpause&quot; with the proper type (132) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;onplay&quot; with the proper type (133) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;onplaying&quot; with the proper type (134) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;onprogress&quot; with the proper type (135) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;onratechange&quot; with the proper type (136) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;onreset&quot; with the proper type (137) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;onresize&quot; with the proper type (138) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;onscroll&quot; with the proper type (139) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;onseeked&quot; with the proper type (140) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;onseeking&quot; with the proper type (141) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;onselect&quot; with the proper type (142) 
-FAIL Document interface: iframe.contentDocument must inherit property &quot;onshow&quot; with the proper type (143) assert_inherits: property &quot;onshow&quot; not found in prototype chain
-PASS Document interface: iframe.contentDocument must inherit property &quot;onstalled&quot; with the proper type (144) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;onsubmit&quot; with the proper type (145) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;onsuspend&quot; with the proper type (146) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;ontimeupdate&quot; with the proper type (147) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;ontoggle&quot; with the proper type (148) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;onvolumechange&quot; with the proper type (149) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;onwaiting&quot; with the proper type (150) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;oncopy&quot; with the proper type (151) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;oncut&quot; with the proper type (152) 
-PASS Document interface: iframe.contentDocument must inherit property &quot;onpaste&quot; with the proper type (153) 
</del><ins>+PASS Document interface: iframe.contentDocument must inherit property &quot;onabort&quot; with the proper type (85) 
+FAIL Document interface: iframe.contentDocument must inherit property &quot;onauxclick&quot; with the proper type (86) assert_inherits: property &quot;onauxclick&quot; not found in prototype chain
+PASS Document interface: iframe.contentDocument must inherit property &quot;onblur&quot; with the proper type (87) 
+FAIL Document interface: iframe.contentDocument must inherit property &quot;oncancel&quot; with the proper type (88) assert_inherits: property &quot;oncancel&quot; not found in prototype chain
+PASS Document interface: iframe.contentDocument must inherit property &quot;oncanplay&quot; with the proper type (89) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;oncanplaythrough&quot; with the proper type (90) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;onchange&quot; with the proper type (91) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;onclick&quot; with the proper type (92) 
+FAIL Document interface: iframe.contentDocument must inherit property &quot;onclose&quot; with the proper type (93) assert_inherits: property &quot;onclose&quot; not found in prototype chain
+PASS Document interface: iframe.contentDocument must inherit property &quot;oncontextmenu&quot; with the proper type (94) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;oncuechange&quot; with the proper type (95) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;ondblclick&quot; with the proper type (96) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;ondrag&quot; with the proper type (97) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;ondragend&quot; with the proper type (98) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;ondragenter&quot; with the proper type (99) 
+FAIL Document interface: iframe.contentDocument must inherit property &quot;ondragexit&quot; with the proper type (100) assert_inherits: property &quot;ondragexit&quot; not found in prototype chain
+PASS Document interface: iframe.contentDocument must inherit property &quot;ondragleave&quot; with the proper type (101) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;ondragover&quot; with the proper type (102) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;ondragstart&quot; with the proper type (103) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;ondrop&quot; with the proper type (104) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;ondurationchange&quot; with the proper type (105) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;onemptied&quot; with the proper type (106) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;onended&quot; with the proper type (107) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;onerror&quot; with the proper type (108) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;onfocus&quot; with the proper type (109) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;oninput&quot; with the proper type (110) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;oninvalid&quot; with the proper type (111) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;onkeydown&quot; with the proper type (112) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;onkeypress&quot; with the proper type (113) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;onkeyup&quot; with the proper type (114) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;onload&quot; with the proper type (115) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;onloadeddata&quot; with the proper type (116) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;onloadedmetadata&quot; with the proper type (117) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;onloadstart&quot; with the proper type (118) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;onmousedown&quot; with the proper type (119) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;onmouseenter&quot; with the proper type (120) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;onmouseleave&quot; with the proper type (121) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;onmousemove&quot; with the proper type (122) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;onmouseout&quot; with the proper type (123) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;onmouseover&quot; with the proper type (124) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;onmouseup&quot; with the proper type (125) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;onmousewheel&quot; with the proper type (126) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;onpause&quot; with the proper type (127) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;onplay&quot; with the proper type (128) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;onplaying&quot; with the proper type (129) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;onprogress&quot; with the proper type (130) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;onratechange&quot; with the proper type (131) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;onreset&quot; with the proper type (132) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;onresize&quot; with the proper type (133) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;onscroll&quot; with the proper type (134) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;onseeked&quot; with the proper type (135) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;onseeking&quot; with the proper type (136) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;onselect&quot; with the proper type (137) 
+FAIL Document interface: iframe.contentDocument must inherit property &quot;onshow&quot; with the proper type (138) assert_inherits: property &quot;onshow&quot; not found in prototype chain
+PASS Document interface: iframe.contentDocument must inherit property &quot;onstalled&quot; with the proper type (139) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;onsubmit&quot; with the proper type (140) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;onsuspend&quot; with the proper type (141) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;ontimeupdate&quot; with the proper type (142) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;ontoggle&quot; with the proper type (143) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;onvolumechange&quot; with the proper type (144) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;onwaiting&quot; with the proper type (145) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;oncopy&quot; with the proper type (146) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;oncut&quot; with the proper type (147) 
+PASS Document interface: iframe.contentDocument must inherit property &quot;onpaste&quot; with the proper type (148) 
</ins><span class="cx"> PASS Node interface: iframe.contentDocument must inherit property &quot;ELEMENT_NODE&quot; with the proper type (0) 
</span><span class="cx"> PASS Node interface: iframe.contentDocument must inherit property &quot;ATTRIBUTE_NODE&quot; with the proper type (1) 
</span><span class="cx"> PASS Node interface: iframe.contentDocument must inherit property &quot;TEXT_NODE&quot; with the proper type (2) 
</span><span class="lines">@@ -417,146 +412,140 @@
</span><span class="cx"> PASS Document interface: new Document() must inherit property &quot;createTreeWalker&quot; with the proper type (28) 
</span><span class="cx"> PASS Document interface: calling createTreeWalker(Node,unsigned long,NodeFilter) on new Document() with too few arguments must throw TypeError 
</span><span class="cx"> PASS Document interface: new Document() must inherit property &quot;styleSheets&quot; with the proper type (29) 
</span><del>-FAIL Document interface: new Document() must inherit property &quot;selectedStyleSheetSet&quot; with the proper type (30) assert_inherits: property &quot;selectedStyleSheetSet&quot; not found in prototype chain
-FAIL Document interface: new Document() must inherit property &quot;lastStyleSheetSet&quot; with the proper type (31) assert_inherits: property &quot;lastStyleSheetSet&quot; not found in prototype chain
-FAIL Document interface: new Document() must inherit property &quot;preferredStyleSheetSet&quot; with the proper type (32) assert_inherits: property &quot;preferredStyleSheetSet&quot; not found in prototype chain
-FAIL Document interface: new Document() must inherit property &quot;styleSheetSets&quot; with the proper type (33) assert_inherits: property &quot;styleSheetSets&quot; not found in prototype chain
-FAIL Document interface: new Document() must inherit property &quot;enableStyleSheetsForSet&quot; with the proper type (34) assert_inherits: property &quot;enableStyleSheetsForSet&quot; not found in prototype chain
-FAIL Document interface: calling enableStyleSheetsForSet(DOMString) on new Document() with too few arguments must throw TypeError assert_inherits: property &quot;enableStyleSheetsForSet&quot; not found in prototype chain
</del><span class="cx"> PASS Document interface: new Document() must have own property &quot;location&quot; 
</span><del>-PASS Document interface: new Document() must inherit property &quot;domain&quot; with the proper type (36) 
-PASS Document interface: new Document() must inherit property &quot;referrer&quot; with the proper type (37) 
-PASS Document interface: new Document() must inherit property &quot;cookie&quot; with the proper type (38) 
-PASS Document interface: new Document() must inherit property &quot;lastModified&quot; with the proper type (39) 
-PASS Document interface: new Document() must inherit property &quot;readyState&quot; with the proper type (40) 
-PASS Document interface: new Document() must inherit property &quot;title&quot; with the proper type (42) 
-PASS Document interface: new Document() must inherit property &quot;dir&quot; with the proper type (43) 
-PASS Document interface: new Document() must inherit property &quot;body&quot; with the proper type (44) 
-PASS Document interface: new Document() must inherit property &quot;head&quot; with the proper type (45) 
-PASS Document interface: new Document() must inherit property &quot;images&quot; with the proper type (46) 
-PASS Document interface: new Document() must inherit property &quot;embeds&quot; with the proper type (47) 
-PASS Document interface: new Document() must inherit property &quot;plugins&quot; with the proper type (48) 
-PASS Document interface: new Document() must inherit property &quot;links&quot; with the proper type (49) 
-PASS Document interface: new Document() must inherit property &quot;forms&quot; with the proper type (50) 
-PASS Document interface: new Document() must inherit property &quot;scripts&quot; with the proper type (51) 
-PASS Document interface: new Document() must inherit property &quot;getElementsByName&quot; with the proper type (52) 
</del><ins>+PASS Document interface: new Document() must inherit property &quot;domain&quot; with the proper type (31) 
+PASS Document interface: new Document() must inherit property &quot;referrer&quot; with the proper type (32) 
+PASS Document interface: new Document() must inherit property &quot;cookie&quot; with the proper type (33) 
+PASS Document interface: new Document() must inherit property &quot;lastModified&quot; with the proper type (34) 
+PASS Document interface: new Document() must inherit property &quot;readyState&quot; with the proper type (35) 
+PASS Document interface: new Document() must inherit property &quot;title&quot; with the proper type (37) 
+PASS Document interface: new Document() must inherit property &quot;dir&quot; with the proper type (38) 
+PASS Document interface: new Document() must inherit property &quot;body&quot; with the proper type (39) 
+PASS Document interface: new Document() must inherit property &quot;head&quot; with the proper type (40) 
+PASS Document interface: new Document() must inherit property &quot;images&quot; with the proper type (41) 
+PASS Document interface: new Document() must inherit property &quot;embeds&quot; with the proper type (42) 
+PASS Document interface: new Document() must inherit property &quot;plugins&quot; with the proper type (43) 
+PASS Document interface: new Document() must inherit property &quot;links&quot; with the proper type (44) 
+PASS Document interface: new Document() must inherit property &quot;forms&quot; with the proper type (45) 
+PASS Document interface: new Document() must inherit property &quot;scripts&quot; with the proper type (46) 
+PASS Document interface: new Document() must inherit property &quot;getElementsByName&quot; with the proper type (47) 
</ins><span class="cx"> PASS Document interface: calling getElementsByName(DOMString) on new Document() with too few arguments must throw TypeError 
</span><del>-PASS Document interface: new Document() must inherit property &quot;currentScript&quot; with the proper type (53) 
-FAIL Document interface: new Document() must inherit property &quot;open&quot; with the proper type (54) assert_inherits: property &quot;open&quot; not found in prototype chain
</del><ins>+PASS Document interface: new Document() must inherit property &quot;currentScript&quot; with the proper type (48) 
+FAIL Document interface: new Document() must inherit property &quot;open&quot; with the proper type (49) assert_inherits: property &quot;open&quot; not found in prototype chain
</ins><span class="cx"> FAIL Document interface: calling open(DOMString,DOMString) on new Document() with too few arguments must throw TypeError assert_inherits: property &quot;open&quot; not found in prototype chain
</span><del>-FAIL Document interface: new Document() must inherit property &quot;open&quot; with the proper type (55) assert_inherits: property &quot;open&quot; not found in prototype chain
</del><ins>+FAIL Document interface: new Document() must inherit property &quot;open&quot; with the proper type (50) assert_inherits: property &quot;open&quot; not found in prototype chain
</ins><span class="cx"> FAIL Document interface: calling open(USVString,DOMString,DOMString) on new Document() with too few arguments must throw TypeError assert_inherits: property &quot;open&quot; not found in prototype chain
</span><del>-FAIL Document interface: new Document() must inherit property &quot;close&quot; with the proper type (56) assert_inherits: property &quot;close&quot; not found in prototype chain
-FAIL Document interface: new Document() must inherit property &quot;write&quot; with the proper type (57) assert_inherits: property &quot;write&quot; not found in prototype chain
</del><ins>+FAIL Document interface: new Document() must inherit property &quot;close&quot; with the proper type (51) assert_inherits: property &quot;close&quot; not found in prototype chain
+FAIL Document interface: new Document() must inherit property &quot;write&quot; with the proper type (52) assert_inherits: property &quot;write&quot; not found in prototype chain
</ins><span class="cx"> FAIL Document interface: calling write(DOMString) on new Document() with too few arguments must throw TypeError assert_inherits: property &quot;write&quot; not found in prototype chain
</span><del>-FAIL Document interface: new Document() must inherit property &quot;writeln&quot; with the proper type (58) assert_inherits: property &quot;writeln&quot; not found in prototype chain
</del><ins>+FAIL Document interface: new Document() must inherit property &quot;writeln&quot; with the proper type (53) assert_inherits: property &quot;writeln&quot; not found in prototype chain
</ins><span class="cx"> FAIL Document interface: calling writeln(DOMString) on new Document() with too few arguments must throw TypeError assert_inherits: property &quot;writeln&quot; not found in prototype chain
</span><del>-PASS Document interface: new Document() must inherit property &quot;defaultView&quot; with the proper type (59) 
-PASS Document interface: new Document() must inherit property &quot;activeElement&quot; with the proper type (60) 
-PASS Document interface: new Document() must inherit property &quot;hasFocus&quot; with the proper type (61) 
-PASS Document interface: new Document() must inherit property &quot;designMode&quot; with the proper type (62) 
-PASS Document interface: new Document() must inherit property &quot;execCommand&quot; with the proper type (63) 
</del><ins>+PASS Document interface: new Document() must inherit property &quot;defaultView&quot; with the proper type (54) 
+PASS Document interface: new Document() must inherit property &quot;activeElement&quot; with the proper type (55) 
+PASS Document interface: new Document() must inherit property &quot;hasFocus&quot; with the proper type (56) 
+PASS Document interface: new Document() must inherit property &quot;designMode&quot; with the proper type (57) 
+PASS Document interface: new Document() must inherit property &quot;execCommand&quot; with the proper type (58) 
</ins><span class="cx"> PASS Document interface: calling execCommand(DOMString,boolean,DOMString) on new Document() with too few arguments must throw TypeError 
</span><del>-PASS Document interface: new Document() must inherit property &quot;queryCommandEnabled&quot; with the proper type (64) 
</del><ins>+PASS Document interface: new Document() must inherit property &quot;queryCommandEnabled&quot; with the proper type (59) 
</ins><span class="cx"> PASS Document interface: calling queryCommandEnabled(DOMString) on new Document() with too few arguments must throw TypeError 
</span><del>-PASS Document interface: new Document() must inherit property &quot;queryCommandIndeterm&quot; with the proper type (65) 
</del><ins>+PASS Document interface: new Document() must inherit property &quot;queryCommandIndeterm&quot; with the proper type (60) 
</ins><span class="cx"> PASS Document interface: calling queryCommandIndeterm(DOMString) on new Document() with too few arguments must throw TypeError 
</span><del>-PASS Document interface: new Document() must inherit property &quot;queryCommandState&quot; with the proper type (66) 
</del><ins>+PASS Document interface: new Document() must inherit property &quot;queryCommandState&quot; with the proper type (61) 
</ins><span class="cx"> PASS Document interface: calling queryCommandState(DOMString) on new Document() with too few arguments must throw TypeError 
</span><del>-PASS Document interface: new Document() must inherit property &quot;queryCommandSupported&quot; with the proper type (67) 
</del><ins>+PASS Document interface: new Document() must inherit property &quot;queryCommandSupported&quot; with the proper type (62) 
</ins><span class="cx"> PASS Document interface: calling queryCommandSupported(DOMString) on new Document() with too few arguments must throw TypeError 
</span><del>-PASS Document interface: new Document() must inherit property &quot;queryCommandValue&quot; with the proper type (68) 
</del><ins>+PASS Document interface: new Document() must inherit property &quot;queryCommandValue&quot; with the proper type (63) 
</ins><span class="cx"> PASS Document interface: calling queryCommandValue(DOMString) on new Document() with too few arguments must throw TypeError 
</span><del>-PASS Document interface: new Document() must inherit property &quot;onreadystatechange&quot; with the proper type (69) 
-FAIL Document interface: new Document() must inherit property &quot;fgColor&quot; with the proper type (70) assert_inherits: property &quot;fgColor&quot; not found in prototype chain
-FAIL Document interface: new Document() must inherit property &quot;linkColor&quot; with the proper type (71) assert_inherits: property &quot;linkColor&quot; not found in prototype chain
-FAIL Document interface: new Document() must inherit property &quot;vlinkColor&quot; with the proper type (72) assert_inherits: property &quot;vlinkColor&quot; not found in prototype chain
-FAIL Document interface: new Document() must inherit property &quot;alinkColor&quot; with the proper type (73) assert_inherits: property &quot;alinkColor&quot; not found in prototype chain
-FAIL Document interface: new Document() must inherit property &quot;bgColor&quot; with the proper type (74) assert_inherits: property &quot;bgColor&quot; not found in prototype chain
-PASS Document interface: new Document() must inherit property &quot;anchors&quot; with the proper type (75) 
-PASS Document interface: new Document() must inherit property &quot;applets&quot; with the proper type (76) 
-FAIL Document interface: new Document() must inherit property &quot;clear&quot; with the proper type (77) assert_inherits: property &quot;clear&quot; not found in prototype chain
-FAIL Document interface: new Document() must inherit property &quot;captureEvents&quot; with the proper type (78) assert_inherits: property &quot;captureEvents&quot; not found in prototype chain
-FAIL Document interface: new Document() must inherit property &quot;releaseEvents&quot; with the proper type (79) assert_inherits: property &quot;releaseEvents&quot; not found in prototype chain
-FAIL Document interface: new Document() must inherit property &quot;all&quot; with the proper type (80) assert_inherits: property &quot;all&quot; not found in prototype chain
-PASS Document interface: new Document() must inherit property &quot;getElementById&quot; with the proper type (81) 
</del><ins>+PASS Document interface: new Document() must inherit property &quot;onreadystatechange&quot; with the proper type (64) 
+FAIL Document interface: new Document() must inherit property &quot;fgColor&quot; with the proper type (65) assert_inherits: property &quot;fgColor&quot; not found in prototype chain
+FAIL Document interface: new Document() must inherit property &quot;linkColor&quot; with the proper type (66) assert_inherits: property &quot;linkColor&quot; not found in prototype chain
+FAIL Document interface: new Document() must inherit property &quot;vlinkColor&quot; with the proper type (67) assert_inherits: property &quot;vlinkColor&quot; not found in prototype chain
+FAIL Document interface: new Document() must inherit property &quot;alinkColor&quot; with the proper type (68) assert_inherits: property &quot;alinkColor&quot; not found in prototype chain
+FAIL Document interface: new Document() must inherit property &quot;bgColor&quot; with the proper type (69) assert_inherits: property &quot;bgColor&quot; not found in prototype chain
+PASS Document interface: new Document() must inherit property &quot;anchors&quot; with the proper type (70) 
+PASS Document interface: new Document() must inherit property &quot;applets&quot; with the proper type (71) 
+FAIL Document interface: new Document() must inherit property &quot;clear&quot; with the proper type (72) assert_inherits: property &quot;clear&quot; not found in prototype chain
+FAIL Document interface: new Document() must inherit property &quot;captureEvents&quot; with the proper type (73) assert_inherits: property &quot;captureEvents&quot; not found in prototype chain
+FAIL Document interface: new Document() must inherit property &quot;releaseEvents&quot; with the proper type (74) assert_inherits: property &quot;releaseEvents&quot; not found in prototype chain
+FAIL Document interface: new Document() must inherit property &quot;all&quot; with the proper type (75) assert_inherits: property &quot;all&quot; not found in prototype chain
+PASS Document interface: new Document() must inherit property &quot;getElementById&quot; with the proper type (76) 
</ins><span class="cx"> PASS Document interface: calling getElementById(DOMString) on new Document() with too few arguments must throw TypeError 
</span><del>-PASS Document interface: new Document() must inherit property &quot;children&quot; with the proper type (82) 
-PASS Document interface: new Document() must inherit property &quot;firstElementChild&quot; with the proper type (83) 
-PASS Document interface: new Document() must inherit property &quot;lastElementChild&quot; with the proper type (84) 
-PASS Document interface: new Document() must inherit property &quot;childElementCount&quot; with the proper type (85) 
-PASS Document interface: new Document() must inherit property &quot;prepend&quot; with the proper type (86) 
</del><ins>+PASS Document interface: new Document() must inherit property &quot;children&quot; with the proper type (77) 
+PASS Document interface: new Document() must inherit property &quot;firstElementChild&quot; with the proper type (78) 
+PASS Document interface: new Document() must inherit property &quot;lastElementChild&quot; with the proper type (79) 
+PASS Document interface: new Document() must inherit property &quot;childElementCount&quot; with the proper type (80) 
+PASS Document interface: new Document() must inherit property &quot;prepend&quot; with the proper type (81) 
</ins><span class="cx"> PASS Document interface: calling prepend([object Object],[object Object]) on new Document() with too few arguments must throw TypeError 
</span><del>-PASS Document interface: new Document() must inherit property &quot;append&quot; with the proper type (87) 
</del><ins>+PASS Document interface: new Document() must inherit property &quot;append&quot; with the proper type (82) 
</ins><span class="cx"> PASS Document interface: calling append([object Object],[object Object]) on new Document() with too few arguments must throw TypeError 
</span><del>-PASS Document interface: new Document() must inherit property &quot;querySelector&quot; with the proper type (88) 
</del><ins>+PASS Document interface: new Document() must inherit property &quot;querySelector&quot; with the proper type (83) 
</ins><span class="cx"> PASS Document interface: calling querySelector(DOMString) on new Document() with too few arguments must throw TypeError 
</span><del>-PASS Document interface: new Document() must inherit property &quot;querySelectorAll&quot; with the proper type (89) 
</del><ins>+PASS Document interface: new Document() must inherit property &quot;querySelectorAll&quot; with the proper type (84) 
</ins><span class="cx"> PASS Document interface: calling querySelectorAll(DOMString) on new Document() with too few arguments must throw TypeError 
</span><del>-PASS Document interface: new Document() must inherit property &quot;onabort&quot; with the proper type (90) 
-FAIL Document interface: new Document() must inherit property &quot;onauxclick&quot; with the proper type (91) assert_inherits: property &quot;onauxclick&quot; not found in prototype chain
-PASS Document interface: new Document() must inherit property &quot;onblur&quot; with the proper type (92) 
-FAIL Document interface: new Document() must inherit property &quot;oncancel&quot; with the proper type (93) assert_inherits: property &quot;oncancel&quot; not found in prototype chain
-PASS Document interface: new Document() must inherit property &quot;oncanplay&quot; with the proper type (94) 
-PASS Document interface: new Document() must inherit property &quot;oncanplaythrough&quot; with the proper type (95) 
-PASS Document interface: new Document() must inherit property &quot;onchange&quot; with the proper type (96) 
-PASS Document interface: new Document() must inherit property &quot;onclick&quot; with the proper type (97) 
-FAIL Document interface: new Document() must inherit property &quot;onclose&quot; with the proper type (98) assert_inherits: property &quot;onclose&quot; not found in prototype chain
-PASS Document interface: new Document() must inherit property &quot;oncontextmenu&quot; with the proper type (99) 
-PASS Document interface: new Document() must inherit property &quot;oncuechange&quot; with the proper type (100) 
-PASS Document interface: new Document() must inherit property &quot;ondblclick&quot; with the proper type (101) 
-PASS Document interface: new Document() must inherit property &quot;ondrag&quot; with the proper type (102) 
-PASS Document interface: new Document() must inherit property &quot;ondragend&quot; with the proper type (103) 
-PASS Document interface: new Document() must inherit property &quot;ondragenter&quot; with the proper type (104) 
-FAIL Document interface: new Document() must inherit property &quot;ondragexit&quot; with the proper type (105) assert_inherits: property &quot;ondragexit&quot; not found in prototype chain
-PASS Document interface: new Document() must inherit property &quot;ondragleave&quot; with the proper type (106) 
-PASS Document interface: new Document() must inherit property &quot;ondragover&quot; with the proper type (107) 
-PASS Document interface: new Document() must inherit property &quot;ondragstart&quot; with the proper type (108) 
-PASS Document interface: new Document() must inherit property &quot;ondrop&quot; with the proper type (109) 
-PASS Document interface: new Document() must inherit property &quot;ondurationchange&quot; with the proper type (110) 
-PASS Document interface: new Document() must inherit property &quot;onemptied&quot; with the proper type (111) 
-PASS Document interface: new Document() must inherit property &quot;onended&quot; with the proper type (112) 
-PASS Document interface: new Document() must inherit property &quot;onerror&quot; with the proper type (113) 
-PASS Document interface: new Document() must inherit property &quot;onfocus&quot; with the proper type (114) 
-PASS Document interface: new Document() must inherit property &quot;oninput&quot; with the proper type (115) 
-PASS Document interface: new Document() must inherit property &quot;oninvalid&quot; with the proper type (116) 
-PASS Document interface: new Document() must inherit property &quot;onkeydown&quot; with the proper type (117) 
-PASS Document interface: new Document() must inherit property &quot;onkeypress&quot; with the proper type (118) 
-PASS Document interface: new Document() must inherit property &quot;onkeyup&quot; with the proper type (119) 
-PASS Document interface: new Document() must inherit property &quot;onload&quot; with the proper type (120) 
-PASS Document interface: new Document() must inherit property &quot;onloadeddata&quot; with the proper type (121) 
-PASS Document interface: new Document() must inherit property &quot;onloadedmetadata&quot; with the proper type (122) 
-PASS Document interface: new Document() must inherit property &quot;onloadstart&quot; with the proper type (123) 
-PASS Document interface: new Document() must inherit property &quot;onmousedown&quot; with the proper type (124) 
-PASS Document interface: new Document() must inherit property &quot;onmouseenter&quot; with the proper type (125) 
-PASS Document interface: new Document() must inherit property &quot;onmouseleave&quot; with the proper type (126) 
-PASS Document interface: new Document() must inherit property &quot;onmousemove&quot; with the proper type (127) 
-PASS Document interface: new Document() must inherit property &quot;onmouseout&quot; with the proper type (128) 
-PASS Document interface: new Document() must inherit property &quot;onmouseover&quot; with the proper type (129) 
-PASS Document interface: new Document() must inherit property &quot;onmouseup&quot; with the proper type (130) 
-PASS Document interface: new Document() must inherit property &quot;onmousewheel&quot; with the proper type (131) 
-PASS Document interface: new Document() must inherit property &quot;onpause&quot; with the proper type (132) 
-PASS Document interface: new Document() must inherit property &quot;onplay&quot; with the proper type (133) 
-PASS Document interface: new Document() must inherit property &quot;onplaying&quot; with the proper type (134) 
-PASS Document interface: new Document() must inherit property &quot;onprogress&quot; with the proper type (135) 
-PASS Document interface: new Document() must inherit property &quot;onratechange&quot; with the proper type (136) 
-PASS Document interface: new Document() must inherit property &quot;onreset&quot; with the proper type (137) 
-PASS Document interface: new Document() must inherit property &quot;onresize&quot; with the proper type (138) 
-PASS Document interface: new Document() must inherit property &quot;onscroll&quot; with the proper type (139) 
-PASS Document interface: new Document() must inherit property &quot;onseeked&quot; with the proper type (140) 
-PASS Document interface: new Document() must inherit property &quot;onseeking&quot; with the proper type (141) 
-PASS Document interface: new Document() must inherit property &quot;onselect&quot; with the proper type (142) 
-FAIL Document interface: new Document() must inherit property &quot;onshow&quot; with the proper type (143) assert_inherits: property &quot;onshow&quot; not found in prototype chain
-PASS Document interface: new Document() must inherit property &quot;onstalled&quot; with the proper type (144) 
-PASS Document interface: new Document() must inherit property &quot;onsubmit&quot; with the proper type (145) 
-PASS Document interface: new Document() must inherit property &quot;onsuspend&quot; with the proper type (146) 
-PASS Document interface: new Document() must inherit property &quot;ontimeupdate&quot; with the proper type (147) 
-PASS Document interface: new Document() must inherit property &quot;ontoggle&quot; with the proper type (148) 
-PASS Document interface: new Document() must inherit property &quot;onvolumechange&quot; with the proper type (149) 
-PASS Document interface: new Document() must inherit property &quot;onwaiting&quot; with the proper type (150) 
-PASS Document interface: new Document() must inherit property &quot;oncopy&quot; with the proper type (151) 
-PASS Document interface: new Document() must inherit property &quot;oncut&quot; with the proper type (152) 
-PASS Document interface: new Document() must inherit property &quot;onpaste&quot; with the proper type (153) 
</del><ins>+PASS Document interface: new Document() must inherit property &quot;onabort&quot; with the proper type (85) 
+FAIL Document interface: new Document() must inherit property &quot;onauxclick&quot; with the proper type (86) assert_inherits: property &quot;onauxclick&quot; not found in prototype chain
+PASS Document interface: new Document() must inherit property &quot;onblur&quot; with the proper type (87) 
+FAIL Document interface: new Document() must inherit property &quot;oncancel&quot; with the proper type (88) assert_inherits: property &quot;oncancel&quot; not found in prototype chain
+PASS Document interface: new Document() must inherit property &quot;oncanplay&quot; with the proper type (89) 
+PASS Document interface: new Document() must inherit property &quot;oncanplaythrough&quot; with the proper type (90) 
+PASS Document interface: new Document() must inherit property &quot;onchange&quot; with the proper type (91) 
+PASS Document interface: new Document() must inherit property &quot;onclick&quot; with the proper type (92) 
+FAIL Document interface: new Document() must inherit property &quot;onclose&quot; with the proper type (93) assert_inherits: property &quot;onclose&quot; not found in prototype chain
+PASS Document interface: new Document() must inherit property &quot;oncontextmenu&quot; with the proper type (94) 
+PASS Document interface: new Document() must inherit property &quot;oncuechange&quot; with the proper type (95) 
+PASS Document interface: new Document() must inherit property &quot;ondblclick&quot; with the proper type (96) 
+PASS Document interface: new Document() must inherit property &quot;ondrag&quot; with the proper type (97) 
+PASS Document interface: new Document() must inherit property &quot;ondragend&quot; with the proper type (98) 
+PASS Document interface: new Document() must inherit property &quot;ondragenter&quot; with the proper type (99) 
+FAIL Document interface: new Document() must inherit property &quot;ondragexit&quot; with the proper type (100) assert_inherits: property &quot;ondragexit&quot; not found in prototype chain
+PASS Document interface: new Document() must inherit property &quot;ondragleave&quot; with the proper type (101) 
+PASS Document interface: new Document() must inherit property &quot;ondragover&quot; with the proper type (102) 
+PASS Document interface: new Document() must inherit property &quot;ondragstart&quot; with the proper type (103) 
+PASS Document interface: new Document() must inherit property &quot;ondrop&quot; with the proper type (104) 
+PASS Document interface: new Document() must inherit property &quot;ondurationchange&quot; with the proper type (105) 
+PASS Document interface: new Document() must inherit property &quot;onemptied&quot; with the proper type (106) 
+PASS Document interface: new Document() must inherit property &quot;onended&quot; with the proper type (107) 
+PASS Document interface: new Document() must inherit property &quot;onerror&quot; with the proper type (108) 
+PASS Document interface: new Document() must inherit property &quot;onfocus&quot; with the proper type (109) 
+PASS Document interface: new Document() must inherit property &quot;oninput&quot; with the proper type (110) 
+PASS Document interface: new Document() must inherit property &quot;oninvalid&quot; with the proper type (111) 
+PASS Document interface: new Document() must inherit property &quot;onkeydown&quot; with the proper type (112) 
+PASS Document interface: new Document() must inherit property &quot;onkeypress&quot; with the proper type (113) 
+PASS Document interface: new Document() must inherit property &quot;onkeyup&quot; with the proper type (114) 
+PASS Document interface: new Document() must inherit property &quot;onload&quot; with the proper type (115) 
+PASS Document interface: new Document() must inherit property &quot;onloadeddata&quot; with the proper type (116) 
+PASS Document interface: new Document() must inherit property &quot;onloadedmetadata&quot; with the proper type (117) 
+PASS Document interface: new Document() must inherit property &quot;onloadstart&quot; with the proper type (118) 
+PASS Document interface: new Document() must inherit property &quot;onmousedown&quot; with the proper type (119) 
+PASS Document interface: new Document() must inherit property &quot;onmouseenter&quot; with the proper type (120) 
+PASS Document interface: new Document() must inherit property &quot;onmouseleave&quot; with the proper type (121) 
+PASS Document interface: new Document() must inherit property &quot;onmousemove&quot; with the proper type (122) 
+PASS Document interface: new Document() must inherit property &quot;onmouseout&quot; with the proper type (123) 
+PASS Document interface: new Document() must inherit property &quot;onmouseover&quot; with the proper type (124) 
+PASS Document interface: new Document() must inherit property &quot;onmouseup&quot; with the proper type (125) 
+PASS Document interface: new Document() must inherit property &quot;onmousewheel&quot; with the proper type (126) 
+PASS Document interface: new Document() must inherit property &quot;onpause&quot; with the proper type (127) 
+PASS Document interface: new Document() must inherit property &quot;onplay&quot; with the proper type (128) 
+PASS Document interface: new Document() must inherit property &quot;onplaying&quot; with the proper type (129) 
+PASS Document interface: new Document() must inherit property &quot;onprogress&quot; with the proper type (130) 
+PASS Document interface: new Document() must inherit property &quot;onratechange&quot; with the proper type (131) 
+PASS Document interface: new Document() must inherit property &quot;onreset&quot; with the proper type (132) 
+PASS Document interface: new Document() must inherit property &quot;onresize&quot; with the proper type (133) 
+PASS Document interface: new Document() must inherit property &quot;onscroll&quot; with the proper type (134) 
+PASS Document interface: new Document() must inherit property &quot;onseeked&quot; with the proper type (135) 
+PASS Document interface: new Document() must inherit property &quot;onseeking&quot; with the proper type (136) 
+PASS Document interface: new Document() must inherit property &quot;onselect&quot; with the proper type (137) 
+FAIL Document interface: new Document() must inherit property &quot;onshow&quot; with the proper type (138) assert_inherits: property &quot;onshow&quot; not found in prototype chain
+PASS Document interface: new Document() must inherit property &quot;onstalled&quot; with the proper type (139) 
+PASS Document interface: new Document() must inherit property &quot;onsubmit&quot; with the proper type (140) 
+PASS Document interface: new Document() must inherit property &quot;onsuspend&quot; with the proper type (141) 
+PASS Document interface: new Document() must inherit property &quot;ontimeupdate&quot; with the proper type (142) 
+PASS Document interface: new Document() must inherit property &quot;ontoggle&quot; with the proper type (143) 
+PASS Document interface: new Document() must inherit property &quot;onvolumechange&quot; with the proper type (144) 
+PASS Document interface: new Document() must inherit property &quot;onwaiting&quot; with the proper type (145) 
+PASS Document interface: new Document() must inherit property &quot;oncopy&quot; with the proper type (146) 
+PASS Document interface: new Document() must inherit property &quot;oncut&quot; with the proper type (147) 
+PASS Document interface: new Document() must inherit property &quot;onpaste&quot; with the proper type (148) 
</ins><span class="cx"> PASS Node interface: new Document() must inherit property &quot;ELEMENT_NODE&quot; with the proper type (0) 
</span><span class="cx"> PASS Node interface: new Document() must inherit property &quot;ATTRIBUTE_NODE&quot; with the proper type (1) 
</span><span class="cx"> PASS Node interface: new Document() must inherit property &quot;TEXT_NODE&quot; with the proper type (2) 
</span><span class="lines">@@ -666,146 +655,140 @@
</span><span class="cx"> PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;createTreeWalker&quot; with the proper type (28) 
</span><span class="cx"> PASS Document interface: calling createTreeWalker(Node,unsigned long,NodeFilter) on document.implementation.createDocument(null, &quot;&quot;, null) with too few arguments must throw TypeError 
</span><span class="cx"> PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;styleSheets&quot; with the proper type (29) 
</span><del>-FAIL Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;selectedStyleSheetSet&quot; with the proper type (30) assert_inherits: property &quot;selectedStyleSheetSet&quot; not found in prototype chain
-FAIL Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;lastStyleSheetSet&quot; with the proper type (31) assert_inherits: property &quot;lastStyleSheetSet&quot; not found in prototype chain
-FAIL Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;preferredStyleSheetSet&quot; with the proper type (32) assert_inherits: property &quot;preferredStyleSheetSet&quot; not found in prototype chain
-FAIL Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;styleSheetSets&quot; with the proper type (33) assert_inherits: property &quot;styleSheetSets&quot; not found in prototype chain
-FAIL Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;enableStyleSheetsForSet&quot; with the proper type (34) assert_inherits: property &quot;enableStyleSheetsForSet&quot; not found in prototype chain
-FAIL Document interface: calling enableStyleSheetsForSet(DOMString) on document.implementation.createDocument(null, &quot;&quot;, null) with too few arguments must throw TypeError assert_inherits: property &quot;enableStyleSheetsForSet&quot; not found in prototype chain
</del><span class="cx"> PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must have own property &quot;location&quot; 
</span><del>-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;domain&quot; with the proper type (36) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;referrer&quot; with the proper type (37) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;cookie&quot; with the proper type (38) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;lastModified&quot; with the proper type (39) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;readyState&quot; with the proper type (40) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;title&quot; with the proper type (42) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;dir&quot; with the proper type (43) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;body&quot; with the proper type (44) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;head&quot; with the proper type (45) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;images&quot; with the proper type (46) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;embeds&quot; with the proper type (47) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;plugins&quot; with the proper type (48) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;links&quot; with the proper type (49) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;forms&quot; with the proper type (50) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;scripts&quot; with the proper type (51) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;getElementsByName&quot; with the proper type (52) 
</del><ins>+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;domain&quot; with the proper type (31) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;referrer&quot; with the proper type (32) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;cookie&quot; with the proper type (33) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;lastModified&quot; with the proper type (34) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;readyState&quot; with the proper type (35) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;title&quot; with the proper type (37) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;dir&quot; with the proper type (38) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;body&quot; with the proper type (39) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;head&quot; with the proper type (40) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;images&quot; with the proper type (41) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;embeds&quot; with the proper type (42) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;plugins&quot; with the proper type (43) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;links&quot; with the proper type (44) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;forms&quot; with the proper type (45) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;scripts&quot; with the proper type (46) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;getElementsByName&quot; with the proper type (47) 
</ins><span class="cx"> PASS Document interface: calling getElementsByName(DOMString) on document.implementation.createDocument(null, &quot;&quot;, null) with too few arguments must throw TypeError 
</span><del>-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;currentScript&quot; with the proper type (53) 
-FAIL Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;open&quot; with the proper type (54) assert_inherits: property &quot;open&quot; not found in prototype chain
</del><ins>+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;currentScript&quot; with the proper type (48) 
+FAIL Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;open&quot; with the proper type (49) assert_inherits: property &quot;open&quot; not found in prototype chain
</ins><span class="cx"> FAIL Document interface: calling open(DOMString,DOMString) on document.implementation.createDocument(null, &quot;&quot;, null) with too few arguments must throw TypeError assert_inherits: property &quot;open&quot; not found in prototype chain
</span><del>-FAIL Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;open&quot; with the proper type (55) assert_inherits: property &quot;open&quot; not found in prototype chain
</del><ins>+FAIL Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;open&quot; with the proper type (50) assert_inherits: property &quot;open&quot; not found in prototype chain
</ins><span class="cx"> FAIL Document interface: calling open(USVString,DOMString,DOMString) on document.implementation.createDocument(null, &quot;&quot;, null) with too few arguments must throw TypeError assert_inherits: property &quot;open&quot; not found in prototype chain
</span><del>-FAIL Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;close&quot; with the proper type (56) assert_inherits: property &quot;close&quot; not found in prototype chain
-FAIL Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;write&quot; with the proper type (57) assert_inherits: property &quot;write&quot; not found in prototype chain
</del><ins>+FAIL Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;close&quot; with the proper type (51) assert_inherits: property &quot;close&quot; not found in prototype chain
+FAIL Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;write&quot; with the proper type (52) assert_inherits: property &quot;write&quot; not found in prototype chain
</ins><span class="cx"> FAIL Document interface: calling write(DOMString) on document.implementation.createDocument(null, &quot;&quot;, null) with too few arguments must throw TypeError assert_inherits: property &quot;write&quot; not found in prototype chain
</span><del>-FAIL Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;writeln&quot; with the proper type (58) assert_inherits: property &quot;writeln&quot; not found in prototype chain
</del><ins>+FAIL Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;writeln&quot; with the proper type (53) assert_inherits: property &quot;writeln&quot; not found in prototype chain
</ins><span class="cx"> FAIL Document interface: calling writeln(DOMString) on document.implementation.createDocument(null, &quot;&quot;, null) with too few arguments must throw TypeError assert_inherits: property &quot;writeln&quot; not found in prototype chain
</span><del>-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;defaultView&quot; with the proper type (59) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;activeElement&quot; with the proper type (60) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;hasFocus&quot; with the proper type (61) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;designMode&quot; with the proper type (62) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;execCommand&quot; with the proper type (63) 
</del><ins>+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;defaultView&quot; with the proper type (54) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;activeElement&quot; with the proper type (55) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;hasFocus&quot; with the proper type (56) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;designMode&quot; with the proper type (57) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;execCommand&quot; with the proper type (58) 
</ins><span class="cx"> PASS Document interface: calling execCommand(DOMString,boolean,DOMString) on document.implementation.createDocument(null, &quot;&quot;, null) with too few arguments must throw TypeError 
</span><del>-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;queryCommandEnabled&quot; with the proper type (64) 
</del><ins>+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;queryCommandEnabled&quot; with the proper type (59) 
</ins><span class="cx"> PASS Document interface: calling queryCommandEnabled(DOMString) on document.implementation.createDocument(null, &quot;&quot;, null) with too few arguments must throw TypeError 
</span><del>-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;queryCommandIndeterm&quot; with the proper type (65) 
</del><ins>+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;queryCommandIndeterm&quot; with the proper type (60) 
</ins><span class="cx"> PASS Document interface: calling queryCommandIndeterm(DOMString) on document.implementation.createDocument(null, &quot;&quot;, null) with too few arguments must throw TypeError 
</span><del>-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;queryCommandState&quot; with the proper type (66) 
</del><ins>+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;queryCommandState&quot; with the proper type (61) 
</ins><span class="cx"> PASS Document interface: calling queryCommandState(DOMString) on document.implementation.createDocument(null, &quot;&quot;, null) with too few arguments must throw TypeError 
</span><del>-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;queryCommandSupported&quot; with the proper type (67) 
</del><ins>+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;queryCommandSupported&quot; with the proper type (62) 
</ins><span class="cx"> PASS Document interface: calling queryCommandSupported(DOMString) on document.implementation.createDocument(null, &quot;&quot;, null) with too few arguments must throw TypeError 
</span><del>-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;queryCommandValue&quot; with the proper type (68) 
</del><ins>+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;queryCommandValue&quot; with the proper type (63) 
</ins><span class="cx"> PASS Document interface: calling queryCommandValue(DOMString) on document.implementation.createDocument(null, &quot;&quot;, null) with too few arguments must throw TypeError 
</span><del>-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onreadystatechange&quot; with the proper type (69) 
-FAIL Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;fgColor&quot; with the proper type (70) assert_inherits: property &quot;fgColor&quot; not found in prototype chain
-FAIL Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;linkColor&quot; with the proper type (71) assert_inherits: property &quot;linkColor&quot; not found in prototype chain
-FAIL Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;vlinkColor&quot; with the proper type (72) assert_inherits: property &quot;vlinkColor&quot; not found in prototype chain
-FAIL Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;alinkColor&quot; with the proper type (73) assert_inherits: property &quot;alinkColor&quot; not found in prototype chain
-FAIL Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;bgColor&quot; with the proper type (74) assert_inherits: property &quot;bgColor&quot; not found in prototype chain
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;anchors&quot; with the proper type (75) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;applets&quot; with the proper type (76) 
-FAIL Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;clear&quot; with the proper type (77) assert_inherits: property &quot;clear&quot; not found in prototype chain
-FAIL Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;captureEvents&quot; with the proper type (78) assert_inherits: property &quot;captureEvents&quot; not found in prototype chain
-FAIL Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;releaseEvents&quot; with the proper type (79) assert_inherits: property &quot;releaseEvents&quot; not found in prototype chain
-FAIL Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;all&quot; with the proper type (80) assert_inherits: property &quot;all&quot; not found in prototype chain
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;getElementById&quot; with the proper type (81) 
</del><ins>+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onreadystatechange&quot; with the proper type (64) 
+FAIL Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;fgColor&quot; with the proper type (65) assert_inherits: property &quot;fgColor&quot; not found in prototype chain
+FAIL Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;linkColor&quot; with the proper type (66) assert_inherits: property &quot;linkColor&quot; not found in prototype chain
+FAIL Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;vlinkColor&quot; with the proper type (67) assert_inherits: property &quot;vlinkColor&quot; not found in prototype chain
+FAIL Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;alinkColor&quot; with the proper type (68) assert_inherits: property &quot;alinkColor&quot; not found in prototype chain
+FAIL Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;bgColor&quot; with the proper type (69) assert_inherits: property &quot;bgColor&quot; not found in prototype chain
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;anchors&quot; with the proper type (70) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;applets&quot; with the proper type (71) 
+FAIL Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;clear&quot; with the proper type (72) assert_inherits: property &quot;clear&quot; not found in prototype chain
+FAIL Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;captureEvents&quot; with the proper type (73) assert_inherits: property &quot;captureEvents&quot; not found in prototype chain
+FAIL Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;releaseEvents&quot; with the proper type (74) assert_inherits: property &quot;releaseEvents&quot; not found in prototype chain
+FAIL Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;all&quot; with the proper type (75) assert_inherits: property &quot;all&quot; not found in prototype chain
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;getElementById&quot; with the proper type (76) 
</ins><span class="cx"> PASS Document interface: calling getElementById(DOMString) on document.implementation.createDocument(null, &quot;&quot;, null) with too few arguments must throw TypeError 
</span><del>-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;children&quot; with the proper type (82) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;firstElementChild&quot; with the proper type (83) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;lastElementChild&quot; with the proper type (84) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;childElementCount&quot; with the proper type (85) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;prepend&quot; with the proper type (86) 
</del><ins>+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;children&quot; with the proper type (77) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;firstElementChild&quot; with the proper type (78) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;lastElementChild&quot; with the proper type (79) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;childElementCount&quot; with the proper type (80) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;prepend&quot; with the proper type (81) 
</ins><span class="cx"> PASS Document interface: calling prepend([object Object],[object Object]) on document.implementation.createDocument(null, &quot;&quot;, null) with too few arguments must throw TypeError 
</span><del>-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;append&quot; with the proper type (87) 
</del><ins>+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;append&quot; with the proper type (82) 
</ins><span class="cx"> PASS Document interface: calling append([object Object],[object Object]) on document.implementation.createDocument(null, &quot;&quot;, null) with too few arguments must throw TypeError 
</span><del>-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;querySelector&quot; with the proper type (88) 
</del><ins>+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;querySelector&quot; with the proper type (83) 
</ins><span class="cx"> PASS Document interface: calling querySelector(DOMString) on document.implementation.createDocument(null, &quot;&quot;, null) with too few arguments must throw TypeError 
</span><del>-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;querySelectorAll&quot; with the proper type (89) 
</del><ins>+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;querySelectorAll&quot; with the proper type (84) 
</ins><span class="cx"> PASS Document interface: calling querySelectorAll(DOMString) on document.implementation.createDocument(null, &quot;&quot;, null) with too few arguments must throw TypeError 
</span><del>-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onabort&quot; with the proper type (90) 
-FAIL Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onauxclick&quot; with the proper type (91) assert_inherits: property &quot;onauxclick&quot; not found in prototype chain
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onblur&quot; with the proper type (92) 
-FAIL Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;oncancel&quot; with the proper type (93) assert_inherits: property &quot;oncancel&quot; not found in prototype chain
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;oncanplay&quot; with the proper type (94) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;oncanplaythrough&quot; with the proper type (95) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onchange&quot; with the proper type (96) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onclick&quot; with the proper type (97) 
-FAIL Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onclose&quot; with the proper type (98) assert_inherits: property &quot;onclose&quot; not found in prototype chain
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;oncontextmenu&quot; with the proper type (99) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;oncuechange&quot; with the proper type (100) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;ondblclick&quot; with the proper type (101) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;ondrag&quot; with the proper type (102) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;ondragend&quot; with the proper type (103) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;ondragenter&quot; with the proper type (104) 
-FAIL Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;ondragexit&quot; with the proper type (105) assert_inherits: property &quot;ondragexit&quot; not found in prototype chain
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;ondragleave&quot; with the proper type (106) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;ondragover&quot; with the proper type (107) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;ondragstart&quot; with the proper type (108) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;ondrop&quot; with the proper type (109) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;ondurationchange&quot; with the proper type (110) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onemptied&quot; with the proper type (111) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onended&quot; with the proper type (112) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onerror&quot; with the proper type (113) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onfocus&quot; with the proper type (114) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;oninput&quot; with the proper type (115) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;oninvalid&quot; with the proper type (116) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onkeydown&quot; with the proper type (117) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onkeypress&quot; with the proper type (118) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onkeyup&quot; with the proper type (119) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onload&quot; with the proper type (120) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onloadeddata&quot; with the proper type (121) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onloadedmetadata&quot; with the proper type (122) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onloadstart&quot; with the proper type (123) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onmousedown&quot; with the proper type (124) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onmouseenter&quot; with the proper type (125) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onmouseleave&quot; with the proper type (126) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onmousemove&quot; with the proper type (127) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onmouseout&quot; with the proper type (128) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onmouseover&quot; with the proper type (129) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onmouseup&quot; with the proper type (130) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onmousewheel&quot; with the proper type (131) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onpause&quot; with the proper type (132) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onplay&quot; with the proper type (133) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onplaying&quot; with the proper type (134) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onprogress&quot; with the proper type (135) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onratechange&quot; with the proper type (136) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onreset&quot; with the proper type (137) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onresize&quot; with the proper type (138) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onscroll&quot; with the proper type (139) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onseeked&quot; with the proper type (140) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onseeking&quot; with the proper type (141) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onselect&quot; with the proper type (142) 
-FAIL Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onshow&quot; with the proper type (143) assert_inherits: property &quot;onshow&quot; not found in prototype chain
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onstalled&quot; with the proper type (144) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onsubmit&quot; with the proper type (145) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onsuspend&quot; with the proper type (146) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;ontimeupdate&quot; with the proper type (147) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;ontoggle&quot; with the proper type (148) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onvolumechange&quot; with the proper type (149) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onwaiting&quot; with the proper type (150) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;oncopy&quot; with the proper type (151) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;oncut&quot; with the proper type (152) 
-PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onpaste&quot; with the proper type (153) 
</del><ins>+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onabort&quot; with the proper type (85) 
+FAIL Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onauxclick&quot; with the proper type (86) assert_inherits: property &quot;onauxclick&quot; not found in prototype chain
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onblur&quot; with the proper type (87) 
+FAIL Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;oncancel&quot; with the proper type (88) assert_inherits: property &quot;oncancel&quot; not found in prototype chain
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;oncanplay&quot; with the proper type (89) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;oncanplaythrough&quot; with the proper type (90) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onchange&quot; with the proper type (91) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onclick&quot; with the proper type (92) 
+FAIL Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onclose&quot; with the proper type (93) assert_inherits: property &quot;onclose&quot; not found in prototype chain
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;oncontextmenu&quot; with the proper type (94) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;oncuechange&quot; with the proper type (95) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;ondblclick&quot; with the proper type (96) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;ondrag&quot; with the proper type (97) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;ondragend&quot; with the proper type (98) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;ondragenter&quot; with the proper type (99) 
+FAIL Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;ondragexit&quot; with the proper type (100) assert_inherits: property &quot;ondragexit&quot; not found in prototype chain
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;ondragleave&quot; with the proper type (101) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;ondragover&quot; with the proper type (102) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;ondragstart&quot; with the proper type (103) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;ondrop&quot; with the proper type (104) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;ondurationchange&quot; with the proper type (105) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onemptied&quot; with the proper type (106) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onended&quot; with the proper type (107) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onerror&quot; with the proper type (108) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onfocus&quot; with the proper type (109) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;oninput&quot; with the proper type (110) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;oninvalid&quot; with the proper type (111) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onkeydown&quot; with the proper type (112) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onkeypress&quot; with the proper type (113) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onkeyup&quot; with the proper type (114) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onload&quot; with the proper type (115) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onloadeddata&quot; with the proper type (116) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onloadedmetadata&quot; with the proper type (117) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onloadstart&quot; with the proper type (118) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onmousedown&quot; with the proper type (119) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onmouseenter&quot; with the proper type (120) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onmouseleave&quot; with the proper type (121) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onmousemove&quot; with the proper type (122) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onmouseout&quot; with the proper type (123) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onmouseover&quot; with the proper type (124) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onmouseup&quot; with the proper type (125) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onmousewheel&quot; with the proper type (126) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onpause&quot; with the proper type (127) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onplay&quot; with the proper type (128) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onplaying&quot; with the proper type (129) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onprogress&quot; with the proper type (130) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onratechange&quot; with the proper type (131) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onreset&quot; with the proper type (132) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onresize&quot; with the proper type (133) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onscroll&quot; with the proper type (134) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onseeked&quot; with the proper type (135) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onseeking&quot; with the proper type (136) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onselect&quot; with the proper type (137) 
+FAIL Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onshow&quot; with the proper type (138) assert_inherits: property &quot;onshow&quot; not found in prototype chain
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onstalled&quot; with the proper type (139) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onsubmit&quot; with the proper type (140) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onsuspend&quot; with the proper type (141) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;ontimeupdate&quot; with the proper type (142) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;ontoggle&quot; with the proper type (143) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onvolumechange&quot; with the proper type (144) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onwaiting&quot; with the proper type (145) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;oncopy&quot; with the proper type (146) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;oncut&quot; with the proper type (147) 
+PASS Document interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;onpaste&quot; with the proper type (148) 
</ins><span class="cx"> PASS Node interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;ELEMENT_NODE&quot; with the proper type (0) 
</span><span class="cx"> PASS Node interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;ATTRIBUTE_NODE&quot; with the proper type (1) 
</span><span class="cx"> PASS Node interface: document.implementation.createDocument(null, &quot;&quot;, null) must inherit property &quot;TEXT_NODE&quot; with the proper type (2) 
</span><span class="lines">@@ -2084,6 +2067,7 @@
</span><span class="cx"> PASS MediaError interface: constant MEDIA_ERR_SRC_NOT_SUPPORTED on interface object 
</span><span class="cx"> PASS MediaError interface: constant MEDIA_ERR_SRC_NOT_SUPPORTED on interface prototype object 
</span><span class="cx"> PASS MediaError interface: attribute code 
</span><ins>+FAIL MediaError interface: attribute message assert_true: The prototype object must have a property &quot;message&quot; expected true got false
</ins><span class="cx"> PASS MediaError must be primary interface of errorVideo.error 
</span><span class="cx"> PASS Stringification of errorVideo.error 
</span><span class="cx"> PASS MediaError interface: errorVideo.error must inherit property &quot;MEDIA_ERR_ABORTED&quot; with the proper type (0) 
</span><span class="lines">@@ -2091,6 +2075,7 @@
</span><span class="cx"> PASS MediaError interface: errorVideo.error must inherit property &quot;MEDIA_ERR_DECODE&quot; with the proper type (2) 
</span><span class="cx"> PASS MediaError interface: errorVideo.error must inherit property &quot;MEDIA_ERR_SRC_NOT_SUPPORTED&quot; with the proper type (3) 
</span><span class="cx"> PASS MediaError interface: errorVideo.error must inherit property &quot;code&quot; with the proper type (4) 
</span><ins>+FAIL MediaError interface: errorVideo.error must inherit property &quot;message&quot; with the proper type (5) assert_inherits: property &quot;message&quot; not found in prototype chain
</ins><span class="cx"> PASS AudioTrackList interface: existence and properties of interface object 
</span><span class="cx"> PASS AudioTrackList interface object length 
</span><span class="cx"> PASS AudioTrackList interface object name 
</span><span class="lines">@@ -4154,7 +4139,6 @@
</span><span class="cx"> PASS HTMLButtonElement interface: attribute name 
</span><span class="cx"> PASS HTMLButtonElement interface: attribute type 
</span><span class="cx"> PASS HTMLButtonElement interface: attribute value 
</span><del>-FAIL HTMLButtonElement interface: attribute menu assert_true: The prototype object must have a property &quot;menu&quot; expected true got false
</del><span class="cx"> PASS HTMLButtonElement interface: attribute willValidate 
</span><span class="cx"> PASS HTMLButtonElement interface: attribute validity 
</span><span class="cx"> PASS HTMLButtonElement interface: attribute validationMessage 
</span><span class="lines">@@ -4175,15 +4159,14 @@
</span><span class="cx"> PASS HTMLButtonElement interface: document.createElement(&quot;button&quot;) must inherit property &quot;name&quot; with the proper type (8) 
</span><span class="cx"> PASS HTMLButtonElement interface: document.createElement(&quot;button&quot;) must inherit property &quot;type&quot; with the proper type (9) 
</span><span class="cx"> PASS HTMLButtonElement interface: document.createElement(&quot;button&quot;) must inherit property &quot;value&quot; with the proper type (10) 
</span><del>-FAIL HTMLButtonElement interface: document.createElement(&quot;button&quot;) must inherit property &quot;menu&quot; with the proper type (11) assert_inherits: property &quot;menu&quot; not found in prototype chain
-PASS HTMLButtonElement interface: document.createElement(&quot;button&quot;) must inherit property &quot;willValidate&quot; with the proper type (12) 
-PASS HTMLButtonElement interface: document.createElement(&quot;button&quot;) must inherit property &quot;validity&quot; with the proper type (13) 
-PASS HTMLButtonElement interface: document.createElement(&quot;button&quot;) must inherit property &quot;validationMessage&quot; with the proper type (14) 
-PASS HTMLButtonElement interface: document.createElement(&quot;button&quot;) must inherit property &quot;checkValidity&quot; with the proper type (15) 
-PASS HTMLButtonElement interface: document.createElement(&quot;button&quot;) must inherit property &quot;reportValidity&quot; with the proper type (16) 
-PASS HTMLButtonElement interface: document.createElement(&quot;button&quot;) must inherit property &quot;setCustomValidity&quot; with the proper type (17) 
</del><ins>+PASS HTMLButtonElement interface: document.createElement(&quot;button&quot;) must inherit property &quot;willValidate&quot; with the proper type (11) 
+PASS HTMLButtonElement interface: document.createElement(&quot;button&quot;) must inherit property &quot;validity&quot; with the proper type (12) 
+PASS HTMLButtonElement interface: document.createElement(&quot;button&quot;) must inherit property &quot;validationMessage&quot; with the proper type (13) 
+PASS HTMLButtonElement interface: document.createElement(&quot;button&quot;) must inherit property &quot;checkValidity&quot; with the proper type (14) 
+PASS HTMLButtonElement interface: document.createElement(&quot;button&quot;) must inherit property &quot;reportValidity&quot; with the proper type (15) 
+PASS HTMLButtonElement interface: document.createElement(&quot;button&quot;) must inherit property &quot;setCustomValidity&quot; with the proper type (16) 
</ins><span class="cx"> PASS HTMLButtonElement interface: calling setCustomValidity(DOMString) on document.createElement(&quot;button&quot;) with too few arguments must throw TypeError 
</span><del>-PASS HTMLButtonElement interface: document.createElement(&quot;button&quot;) must inherit property &quot;labels&quot; with the proper type (18) 
</del><ins>+PASS HTMLButtonElement interface: document.createElement(&quot;button&quot;) must inherit property &quot;labels&quot; with the proper type (17) 
</ins><span class="cx"> PASS HTMLSelectElement interface: existence and properties of interface object 
</span><span class="cx"> PASS HTMLSelectElement interface object length 
</span><span class="cx"> PASS HTMLSelectElement interface object name 
</span><span class="lines">@@ -4564,11 +4547,14 @@
</span><span class="cx"> PASS HTMLScriptElement interface: existence and properties of interface prototype object's &quot;constructor&quot; property 
</span><span class="cx"> PASS HTMLScriptElement interface: attribute src 
</span><span class="cx"> PASS HTMLScriptElement interface: attribute type 
</span><ins>+PASS HTMLScriptElement interface: attribute noModule 
</ins><span class="cx"> PASS HTMLScriptElement interface: attribute charset 
</span><span class="cx"> PASS HTMLScriptElement interface: attribute async 
</span><span class="cx"> PASS HTMLScriptElement interface: attribute defer 
</span><span class="cx"> PASS HTMLScriptElement interface: attribute crossOrigin 
</span><span class="cx"> PASS HTMLScriptElement interface: attribute text 
</span><ins>+PASS HTMLScriptElement interface: attribute nonce 
+FAIL HTMLScriptElement interface: attribute integrity assert_true: The prototype object must have a property &quot;integrity&quot; expected true got false
</ins><span class="cx"> PASS HTMLScriptElement interface: attribute event 
</span><span class="cx"> PASS HTMLScriptElement interface: attribute htmlFor 
</span><span class="cx"> PASS HTMLScriptElement must be primary interface of document.createElement(&quot;script&quot;) 
</span><span class="lines">@@ -4575,13 +4561,16 @@
</span><span class="cx"> PASS Stringification of document.createElement(&quot;script&quot;) 
</span><span class="cx"> PASS HTMLScriptElement interface: document.createElement(&quot;script&quot;) must inherit property &quot;src&quot; with the proper type (0) 
</span><span class="cx"> PASS HTMLScriptElement interface: document.createElement(&quot;script&quot;) must inherit property &quot;type&quot; with the proper type (1) 
</span><del>-PASS HTMLScriptElement interface: document.createElement(&quot;script&quot;) must inherit property &quot;charset&quot; with the proper type (2) 
-PASS HTMLScriptElement interface: document.createElement(&quot;script&quot;) must inherit property &quot;async&quot; with the proper type (3) 
-PASS HTMLScriptElement interface: document.createElement(&quot;script&quot;) must inherit property &quot;defer&quot; with the proper type (4) 
-PASS HTMLScriptElement interface: document.createElement(&quot;script&quot;) must inherit property &quot;crossOrigin&quot; with the proper type (5) 
-PASS HTMLScriptElement interface: document.createElement(&quot;script&quot;) must inherit property &quot;text&quot; with the proper type (6) 
-PASS HTMLScriptElement interface: document.createElement(&quot;script&quot;) must inherit property &quot;event&quot; with the proper type (7) 
-PASS HTMLScriptElement interface: document.createElement(&quot;script&quot;) must inherit property &quot;htmlFor&quot; with the proper type (8) 
</del><ins>+PASS HTMLScriptElement interface: document.createElement(&quot;script&quot;) must inherit property &quot;noModule&quot; with the proper type (2) 
+PASS HTMLScriptElement interface: document.createElement(&quot;script&quot;) must inherit property &quot;charset&quot; with the proper type (3) 
+PASS HTMLScriptElement interface: document.createElement(&quot;script&quot;) must inherit property &quot;async&quot; with the proper type (4) 
+PASS HTMLScriptElement interface: document.createElement(&quot;script&quot;) must inherit property &quot;defer&quot; with the proper type (5) 
+PASS HTMLScriptElement interface: document.createElement(&quot;script&quot;) must inherit property &quot;crossOrigin&quot; with the proper type (6) 
+PASS HTMLScriptElement interface: document.createElement(&quot;script&quot;) must inherit property &quot;text&quot; with the proper type (7) 
+PASS HTMLScriptElement interface: document.createElement(&quot;script&quot;) must inherit property &quot;nonce&quot; with the proper type (8) 
+FAIL HTMLScriptElement interface: document.createElement(&quot;script&quot;) must inherit property &quot;integrity&quot; with the proper type (9) assert_inherits: property &quot;integrity&quot; not found in prototype chain
+PASS HTMLScriptElement interface: document.createElement(&quot;script&quot;) must inherit property &quot;event&quot; with the proper type (10) 
+PASS HTMLScriptElement interface: document.createElement(&quot;script&quot;) must inherit property &quot;htmlFor&quot; with the proper type (11) 
</ins><span class="cx"> PASS HTMLTemplateElement interface: existence and properties of interface object 
</span><span class="cx"> PASS HTMLTemplateElement interface object length 
</span><span class="cx"> PASS HTMLTemplateElement interface object name 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmldominterfaceshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/interfaces.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/interfaces.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/interfaces.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -577,12 +577,7 @@
</span><span class="cx"> typedef sequence&lt;StyleSheet&gt; StyleSheetList;
</span><span class="cx"> 
</span><span class="cx"> partial interface Document {
</span><del>-  readonly attribute StyleSheetList styleSheets;
-           attribute DOMString? selectedStyleSheetSet;
-  readonly attribute DOMString? lastStyleSheetSet;
-  readonly attribute DOMString? preferredStyleSheetSet;
-  readonly attribute DOMStringList styleSheetSets;
-  void enableStyleSheetsForSet(DOMString? name);
</del><ins>+  [SameObject] readonly attribute StyleSheetList styleSheets;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> [NoInterfaceObject] interface LinkStyle {
</span><span class="lines">@@ -1322,6 +1317,7 @@
</span><span class="cx">   const unsigned short MEDIA_ERR_DECODE = 3;
</span><span class="cx">   const unsigned short MEDIA_ERR_SRC_NOT_SUPPORTED = 4;
</span><span class="cx">   readonly attribute unsigned short code;
</span><ins>+  readonly attribute DOMString message;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> interface AudioTrackList : EventTarget {
</span><span class="lines">@@ -1609,7 +1605,6 @@
</span><span class="cx">            attribute DOMString name;
</span><span class="cx">            attribute DOMString type;
</span><span class="cx">            attribute DOMString value;
</span><del>-           attribute HTMLMenuElement? menu;
</del><span class="cx"> 
</span><span class="cx">   readonly attribute boolean willValidate;
</span><span class="cx">   readonly attribute ValidityState validity;
</span><span class="lines">@@ -1837,15 +1832,20 @@
</span><span class="cx">   void close(optional DOMString returnValue);
</span><span class="cx"> };
</span><span class="cx"> 
</span><ins>+[HTMLConstructor]
</ins><span class="cx"> interface HTMLScriptElement : HTMLElement {
</span><del>-           attribute DOMString src;
-           attribute DOMString type;
-           attribute DOMString charset;
-           attribute boolean async;
-           attribute boolean defer;
-           attribute DOMString? crossOrigin;
-           attribute DOMString text;
</del><ins>+  [CEReactions] attribute USVString src;
+  [CEReactions] attribute DOMString type;
+  [CEReactions] attribute boolean noModule;
+  [CEReactions] attribute DOMString charset;
+  [CEReactions] attribute boolean async;
+  [CEReactions] attribute boolean defer;
+  [CEReactions] attribute DOMString? crossOrigin;
+  [CEReactions] attribute DOMString text;
+  [CEReactions] attribute DOMString nonce;
+  [CEReactions] attribute DOMString integrity;
</ins><span class="cx"> 
</span><ins>+
</ins><span class="cx">   // also has obsolete members
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmldomreflectionmiscexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/reflection-misc-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/reflection-misc-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/reflection-misc-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -597,6 +597,39 @@
</span><span class="cx"> PASS script.type: IDL set to null 
</span><span class="cx"> PASS script.type: IDL set to object &quot;test-toString&quot; 
</span><span class="cx"> PASS script.type: IDL set to object &quot;test-valueOf&quot; 
</span><ins>+PASS script.noModule: typeof IDL attribute 
+PASS script.noModule: IDL get with DOM attribute unset 
+PASS script.noModule: setAttribute() to &quot;&quot; 
+PASS script.noModule: setAttribute() to &quot; foo &quot; 
+PASS script.noModule: setAttribute() to undefined 
+PASS script.noModule: setAttribute() to null 
+PASS script.noModule: setAttribute() to 7 
+PASS script.noModule: setAttribute() to 1.5 
+PASS script.noModule: setAttribute() to true 
+PASS script.noModule: setAttribute() to false 
+PASS script.noModule: setAttribute() to object &quot;[object Object]&quot; 
+PASS script.noModule: setAttribute() to NaN 
+PASS script.noModule: setAttribute() to Infinity 
+PASS script.noModule: setAttribute() to -Infinity 
+PASS script.noModule: setAttribute() to &quot;\0&quot; 
+PASS script.noModule: setAttribute() to object &quot;test-toString&quot; 
+PASS script.noModule: setAttribute() to object &quot;test-valueOf&quot; 
+PASS script.noModule: setAttribute() to &quot;noModule&quot; 
+PASS script.noModule: IDL set to &quot;&quot; 
+PASS script.noModule: IDL set to &quot; foo &quot; 
+PASS script.noModule: IDL set to undefined 
+PASS script.noModule: IDL set to null 
+PASS script.noModule: IDL set to 7 
+PASS script.noModule: IDL set to 1.5 
+PASS script.noModule: IDL set to true 
+PASS script.noModule: IDL set to false 
+PASS script.noModule: IDL set to object &quot;[object Object]&quot; 
+PASS script.noModule: IDL set to NaN 
+PASS script.noModule: IDL set to Infinity 
+PASS script.noModule: IDL set to -Infinity 
+PASS script.noModule: IDL set to &quot;\0&quot; 
+PASS script.noModule: IDL set to object &quot;test-toString&quot; 
+PASS script.noModule: IDL set to object &quot;test-valueOf&quot; 
</ins><span class="cx"> PASS script.charset: typeof IDL attribute 
</span><span class="cx"> PASS script.charset: IDL get with DOM attribute unset 
</span><span class="cx"> PASS script.charset: setAttribute() to &quot;&quot; 
</span><span class="lines">@@ -778,6 +811,70 @@
</span><span class="cx"> FAIL script.integrity: IDL set to null assert_equals: getAttribute() expected &quot;null&quot; but got &quot;test-valueOf&quot;
</span><span class="cx"> FAIL script.integrity: IDL set to object &quot;test-toString&quot; assert_equals: getAttribute() expected &quot;test-toString&quot; but got &quot;test-valueOf&quot;
</span><span class="cx"> FAIL script.integrity: IDL set to object &quot;test-valueOf&quot; assert_equals: IDL get expected (string) &quot;test-valueOf&quot; but got (object) object &quot;test-valueOf&quot;
</span><ins>+PASS script.event: typeof IDL attribute 
+PASS script.event: IDL get with DOM attribute unset 
+PASS script.event: setAttribute() to &quot;&quot; 
+PASS script.event: setAttribute() to &quot; \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f  foo &quot; 
+PASS script.event: setAttribute() to undefined 
+PASS script.event: setAttribute() to 7 
+PASS script.event: setAttribute() to 1.5 
+PASS script.event: setAttribute() to true 
+PASS script.event: setAttribute() to false 
+PASS script.event: setAttribute() to object &quot;[object Object]&quot; 
+PASS script.event: setAttribute() to NaN 
+PASS script.event: setAttribute() to Infinity 
+PASS script.event: setAttribute() to -Infinity 
+PASS script.event: setAttribute() to &quot;\0&quot; 
+PASS script.event: setAttribute() to null 
+PASS script.event: setAttribute() to object &quot;test-toString&quot; 
+PASS script.event: setAttribute() to object &quot;test-valueOf&quot; 
+PASS script.event: IDL set to &quot;&quot; 
+PASS script.event: IDL set to &quot; \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f  foo &quot; 
+PASS script.event: IDL set to undefined 
+PASS script.event: IDL set to 7 
+PASS script.event: IDL set to 1.5 
+PASS script.event: IDL set to true 
+PASS script.event: IDL set to false 
+PASS script.event: IDL set to object &quot;[object Object]&quot; 
+PASS script.event: IDL set to NaN 
+PASS script.event: IDL set to Infinity 
+PASS script.event: IDL set to -Infinity 
+PASS script.event: IDL set to &quot;\0&quot; 
+PASS script.event: IDL set to null 
+PASS script.event: IDL set to object &quot;test-toString&quot; 
+PASS script.event: IDL set to object &quot;test-valueOf&quot; 
+PASS script.htmlFor (&lt;script for&gt;): typeof IDL attribute 
+PASS script.htmlFor (&lt;script for&gt;): IDL get with DOM attribute unset 
+PASS script.htmlFor (&lt;script for&gt;): setAttribute() to &quot;&quot; 
+PASS script.htmlFor (&lt;script for&gt;): setAttribute() to &quot; \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f  foo &quot; 
+PASS script.htmlFor (&lt;script for&gt;): setAttribute() to undefined 
+PASS script.htmlFor (&lt;script for&gt;): setAttribute() to 7 
+PASS script.htmlFor (&lt;script for&gt;): setAttribute() to 1.5 
+PASS script.htmlFor (&lt;script for&gt;): setAttribute() to true 
+PASS script.htmlFor (&lt;script for&gt;): setAttribute() to false 
+PASS script.htmlFor (&lt;script for&gt;): setAttribute() to object &quot;[object Object]&quot; 
+PASS script.htmlFor (&lt;script for&gt;): setAttribute() to NaN 
+PASS script.htmlFor (&lt;script for&gt;): setAttribute() to Infinity 
+PASS script.htmlFor (&lt;script for&gt;): setAttribute() to -Infinity 
+PASS script.htmlFor (&lt;script for&gt;): setAttribute() to &quot;\0&quot; 
+PASS script.htmlFor (&lt;script for&gt;): setAttribute() to null 
+PASS script.htmlFor (&lt;script for&gt;): setAttribute() to object &quot;test-toString&quot; 
+PASS script.htmlFor (&lt;script for&gt;): setAttribute() to object &quot;test-valueOf&quot; 
+PASS script.htmlFor (&lt;script for&gt;): IDL set to &quot;&quot; 
+PASS script.htmlFor (&lt;script for&gt;): IDL set to &quot; \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f  foo &quot; 
+PASS script.htmlFor (&lt;script for&gt;): IDL set to undefined 
+PASS script.htmlFor (&lt;script for&gt;): IDL set to 7 
+PASS script.htmlFor (&lt;script for&gt;): IDL set to 1.5 
+PASS script.htmlFor (&lt;script for&gt;): IDL set to true 
+PASS script.htmlFor (&lt;script for&gt;): IDL set to false 
+PASS script.htmlFor (&lt;script for&gt;): IDL set to object &quot;[object Object]&quot; 
+PASS script.htmlFor (&lt;script for&gt;): IDL set to NaN 
+PASS script.htmlFor (&lt;script for&gt;): IDL set to Infinity 
+PASS script.htmlFor (&lt;script for&gt;): IDL set to -Infinity 
+PASS script.htmlFor (&lt;script for&gt;): IDL set to &quot;\0&quot; 
+PASS script.htmlFor (&lt;script for&gt;): IDL set to null 
+PASS script.htmlFor (&lt;script for&gt;): IDL set to object &quot;test-toString&quot; 
+PASS script.htmlFor (&lt;script for&gt;): IDL set to object &quot;test-valueOf&quot; 
</ins><span class="cx"> PASS noscript.title: typeof IDL attribute 
</span><span class="cx"> PASS noscript.title: IDL get with DOM attribute unset 
</span><span class="cx"> PASS noscript.title: setAttribute() to &quot;&quot; 
</span><span class="lines">@@ -2450,11 +2547,11 @@
</span><span class="cx"> FAIL menu.type: setAttribute() to null assert_equals: IDL get expected (string) &quot;toolbar&quot; but got (undefined) undefined
</span><span class="cx"> FAIL menu.type: setAttribute() to object &quot;test-toString&quot; assert_equals: IDL get expected (string) &quot;toolbar&quot; but got (undefined) undefined
</span><span class="cx"> FAIL menu.type: setAttribute() to object &quot;test-valueOf&quot; assert_equals: IDL get expected (string) &quot;toolbar&quot; but got (undefined) undefined
</span><del>-FAIL menu.type: setAttribute() to &quot;popup&quot; assert_equals: IDL get expected (string) &quot;popup&quot; but got (undefined) undefined
-FAIL menu.type: setAttribute() to &quot;xpopup&quot; assert_equals: IDL get expected (string) &quot;toolbar&quot; but got (undefined) undefined
-FAIL menu.type: setAttribute() to &quot;popup\0&quot; assert_equals: IDL get expected (string) &quot;toolbar&quot; but got (undefined) undefined
-FAIL menu.type: setAttribute() to &quot;opup&quot; assert_equals: IDL get expected (string) &quot;toolbar&quot; but got (undefined) undefined
-FAIL menu.type: setAttribute() to &quot;POPUP&quot; assert_equals: IDL get expected (string) &quot;popup&quot; but got (undefined) undefined
</del><ins>+FAIL menu.type: setAttribute() to &quot;context&quot; assert_equals: IDL get expected (string) &quot;context&quot; but got (undefined) undefined
+FAIL menu.type: setAttribute() to &quot;xcontext&quot; assert_equals: IDL get expected (string) &quot;toolbar&quot; but got (undefined) undefined
+FAIL menu.type: setAttribute() to &quot;context\0&quot; assert_equals: IDL get expected (string) &quot;toolbar&quot; but got (undefined) undefined
+FAIL menu.type: setAttribute() to &quot;ontext&quot; assert_equals: IDL get expected (string) &quot;toolbar&quot; but got (undefined) undefined
+FAIL menu.type: setAttribute() to &quot;CONTEXT&quot; assert_equals: IDL get expected (string) &quot;context&quot; but got (undefined) undefined
</ins><span class="cx"> FAIL menu.type: setAttribute() to &quot;toolbar&quot; assert_equals: IDL get expected (string) &quot;toolbar&quot; but got (undefined) undefined
</span><span class="cx"> FAIL menu.type: setAttribute() to &quot;xtoolbar&quot; assert_equals: IDL get expected (string) &quot;toolbar&quot; but got (undefined) undefined
</span><span class="cx"> FAIL menu.type: setAttribute() to &quot;toolbar\0&quot; assert_equals: IDL get expected (string) &quot;toolbar&quot; but got (undefined) undefined
</span><span class="lines">@@ -2475,11 +2572,11 @@
</span><span class="cx"> FAIL menu.type: IDL set to null assert_equals: IDL get expected (string) &quot;toolbar&quot; but got (object) null
</span><span class="cx"> FAIL menu.type: IDL set to object &quot;test-toString&quot; assert_equals: getAttribute() expected &quot;test-toString&quot; but got &quot;TOOLBAR&quot;
</span><span class="cx"> FAIL menu.type: IDL set to object &quot;test-valueOf&quot; assert_equals: getAttribute() expected &quot;test-valueOf&quot; but got &quot;TOOLBAR&quot;
</span><del>-FAIL menu.type: IDL set to &quot;popup&quot; assert_equals: getAttribute() expected &quot;popup&quot; but got &quot;TOOLBAR&quot;
-FAIL menu.type: IDL set to &quot;xpopup&quot; assert_equals: getAttribute() expected &quot;xpopup&quot; but got &quot;TOOLBAR&quot;
-FAIL menu.type: IDL set to &quot;popup\0&quot; assert_equals: getAttribute() expected &quot;popup\0&quot; but got &quot;TOOLBAR&quot;
-FAIL menu.type: IDL set to &quot;opup&quot; assert_equals: getAttribute() expected &quot;opup&quot; but got &quot;TOOLBAR&quot;
-FAIL menu.type: IDL set to &quot;POPUP&quot; assert_equals: getAttribute() expected &quot;POPUP&quot; but got &quot;TOOLBAR&quot;
</del><ins>+FAIL menu.type: IDL set to &quot;context&quot; assert_equals: getAttribute() expected &quot;context&quot; but got &quot;TOOLBAR&quot;
+FAIL menu.type: IDL set to &quot;xcontext&quot; assert_equals: getAttribute() expected &quot;xcontext&quot; but got &quot;TOOLBAR&quot;
+FAIL menu.type: IDL set to &quot;context\0&quot; assert_equals: getAttribute() expected &quot;context\0&quot; but got &quot;TOOLBAR&quot;
+FAIL menu.type: IDL set to &quot;ontext&quot; assert_equals: getAttribute() expected &quot;ontext&quot; but got &quot;TOOLBAR&quot;
+FAIL menu.type: IDL set to &quot;CONTEXT&quot; assert_equals: getAttribute() expected &quot;CONTEXT&quot; but got &quot;TOOLBAR&quot;
</ins><span class="cx"> FAIL menu.type: IDL set to &quot;toolbar&quot; assert_equals: getAttribute() expected &quot;toolbar&quot; but got &quot;TOOLBAR&quot;
</span><span class="cx"> FAIL menu.type: IDL set to &quot;xtoolbar&quot; assert_equals: getAttribute() expected &quot;xtoolbar&quot; but got &quot;TOOLBAR&quot;
</span><span class="cx"> FAIL menu.type: IDL set to &quot;toolbar\0&quot; assert_equals: getAttribute() expected &quot;toolbar\0&quot; but got &quot;TOOLBAR&quot;
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsembeddedcontentimagemapscontainsjson"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/image-maps/contains.json (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/image-maps/contains.json        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/image-maps/contains.json        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -4,7 +4,7 @@
</span><span class="cx">         &quot;original_id&quot;: &quot;authoring&quot;
</span><span class="cx">     },
</span><span class="cx">     {
</span><del>-        &quot;id&quot;: &quot;processing-model-0&quot;,
-        &quot;original_id&quot;: &quot;processing-model-0&quot;
</del><ins>+        &quot;id&quot;: &quot;image-map-processing-model&quot;,
+        &quot;original_id&quot;: &quot;image-map-processing-model&quot;
</ins><span class="cx">     }
</span><del>-]
</del><span class="cx">\ No newline at end of file
</span><ins>+]
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsembeddedcontenttheareaelementareadownloadclickexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-area-element/area-download-click-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-area-element/area-download-click-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-area-element/area-download-click-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+Download started.
+Downloading URL with suggested filename &quot;foo.html&quot;
+Download completed.
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsembeddedcontenttheareaelementareadownloadclickhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-area-element/area-download-click.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-area-element/area-download-click.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-area-element/area-download-click.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,27 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;Clicking on an &amp;lt;area&gt; element with a download attribute must not throw an exception&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Domenic Denicola&quot; href=&quot;mailto:d@domenic.me&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://html.spec.whatwg.org/multipage/#the-area-element:activation-behaviour&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://github.com/whatwg/html/issues/2116&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;img src=&quot;/images/threecolors.png&quot; usemap=&quot;#x&quot; id=&quot;img&quot; width=&quot;300&quot; height=&quot;300&quot;&gt;
+&lt;map name=&quot;x&quot;&gt;
+  &lt;area id=&quot;blob-url&quot; download=&quot;foo.html&quot; coords=&quot;0,0,300,300&quot;&gt;
+&lt;/map&gt;
+
+&lt;script&gt;
+&quot;use strict&quot;;
+
+const string = &quot;test&quot;;
+const blob = new Blob([string], { type: &quot;text/html&quot; });
+
+const link = document.querySelector(&quot;#blob-url&quot;);
+link.href = URL.createObjectURL(blob);
+
+link.click();
+
+done();
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsembeddedcontenttheareaelementw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-area-element/w3c-import.log (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-area-element/w3c-import.log        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-area-element/w3c-import.log        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -16,6 +16,7 @@
</span><span class="cx"> ------------------------------------------------------------------------
</span><span class="cx"> List of files:
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-area-element/area-coords.html
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-area-element/area-download-click.html
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-area-element/area-processing.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-area-element/area-shape.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-area-element/area-stringifier.html
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsembeddedcontentthecanvaselementtoBlobjpegexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toBlob.jpeg-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toBlob.jpeg-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toBlob.jpeg-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,8 +1,5 @@
</span><del>-toBlob.jpeg
-toBlob with image/jpeg returns a JPEG Blob
-Actual output:
</del><span class="cx"> 
</span><del>-FAIL toBlob with image/jpeg returns a JPEG Blob canvas.toBlob is not a function. (In 'canvas.toBlob(function(data){
-  _assertSame(data.type, &quot;image/jpeg&quot;, &quot;data.type&quot;, &quot;\&quot;image/jpeg\&quot;&quot;);
-}, 'image/jpeg')', 'canvas.toBlob' is undefined)
</del><ins>+FAIL toBlob with image/jpeg returns a JPEG Blob canvas.toBlob is not a function. (In 'canvas.toBlob(this.step_func_done(function(data) {
+            assert_equals(data.type, &quot;image/jpeg&quot;);
+        }), 'image/jpeg')', 'canvas.toBlob' is undefined)
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsembeddedcontentthecanvaselementtoBlobjpeghtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toBlob.jpeg.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toBlob.jpeg.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toBlob.jpeg.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,29 +1,17 @@
</span><span class="cx"> &lt;!DOCTYPE html&gt;
</span><del>-&lt;!--  DO NOT EDIT! This test has been generated by tools/gentest.py.  --&gt;
</del><span class="cx"> &lt;title&gt;Canvas test: toBlob.jpeg&lt;/title&gt;
</span><span class="cx"> &lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;/common/canvas-tests.js&quot;&gt;&lt;/script&gt;
-&lt;link rel=&quot;stylesheet&quot; href=&quot;/common/canvas-tests.css&quot;&gt;
-&lt;body class=&quot;show_output&quot;&gt;
-
-&lt;h1&gt;toBlob.jpeg&lt;/h1&gt;
-&lt;p class=&quot;desc&quot;&gt;toBlob with image/jpeg returns a JPEG Blob&lt;/p&gt;
-
-
-&lt;p class=&quot;output&quot;&gt;Actual output:&lt;/p&gt;
-&lt;canvas id=&quot;c&quot; class=&quot;output&quot; width=&quot;100&quot; height=&quot;50&quot;&gt;&lt;p class=&quot;fallback&quot;&gt;FAIL (fallback content)&lt;/p&gt;&lt;/canvas&gt;
-
-&lt;ul id=&quot;d&quot;&gt;&lt;/ul&gt;
</del><ins>+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;canvas id=&quot;c&quot;&gt;&lt;/canvas&gt;
</ins><span class="cx"> &lt;script&gt;
</span><del>-var t = async_test(&quot;toBlob with image/jpeg returns a JPEG Blob&quot;);
-_addTest(function(canvas, ctx) {
-
-canvas.toBlob(function(data){
-  _assertSame(data.type, &quot;image/jpeg&quot;, &quot;data.type&quot;, &quot;\&quot;image/jpeg\&quot;&quot;);
-}, 'image/jpeg');
-
-
-});
</del><ins>+async_test(function() {
+    on_event(window, &quot;load&quot;, this.step_func(function() {
+        var canvas = document.getElementById('c');
+        var ctx = canvas.getContext('2d');
+        canvas.toBlob(this.step_func_done(function(data) {
+            assert_equals(data.type, &quot;image/jpeg&quot;);
+        }), 'image/jpeg');
+    }));
+}, &quot;toBlob with image/jpeg returns a JPEG Blob&quot;);
</ins><span class="cx"> &lt;/script&gt;
</span><del>-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsembeddedcontentthecanvaselementtoBlobpngexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toBlob.png-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toBlob.png-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toBlob.png-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,8 +1,5 @@
</span><del>-toBlob.png
-toBlob with image/png returns a PNG Blob
-Actual output:
</del><span class="cx"> 
</span><del>-FAIL toBlob with image/png returns a PNG Blob canvas.toBlob is not a function. (In 'canvas.toBlob(function(data){
-  _assertSame(data.type, &quot;image/png&quot;, &quot;data.type&quot;, &quot;\&quot;image/png\&quot;&quot;);
-}, 'image/png')', 'canvas.toBlob' is undefined)
</del><ins>+FAIL toBlob with image/png returns a PNG Blob canvas.toBlob is not a function. (In 'canvas.toBlob(this.step_func_done(function(data) {
+            assert_equals(data.type, &quot;image/png&quot;);
+        }), 'image/png')', 'canvas.toBlob' is undefined)
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsembeddedcontentthecanvaselementtoBlobpnghtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toBlob.png.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toBlob.png.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-canvas-element/toBlob.png.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,29 +1,17 @@
</span><span class="cx"> &lt;!DOCTYPE html&gt;
</span><del>-&lt;!--  DO NOT EDIT! This test has been generated by tools/gentest.py.  --&gt;
</del><span class="cx"> &lt;title&gt;Canvas test: toBlob.png&lt;/title&gt;
</span><span class="cx"> &lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
</span><del>-&lt;script src=&quot;/common/canvas-tests.js&quot;&gt;&lt;/script&gt;
-&lt;link rel=&quot;stylesheet&quot; href=&quot;/common/canvas-tests.css&quot;&gt;
-&lt;body class=&quot;show_output&quot;&gt;
-
-&lt;h1&gt;toBlob.png&lt;/h1&gt;
-&lt;p class=&quot;desc&quot;&gt;toBlob with image/png returns a PNG Blob&lt;/p&gt;
-
-
-&lt;p class=&quot;output&quot;&gt;Actual output:&lt;/p&gt;
-&lt;canvas id=&quot;c&quot; class=&quot;output&quot; width=&quot;100&quot; height=&quot;50&quot;&gt;&lt;p class=&quot;fallback&quot;&gt;FAIL (fallback content)&lt;/p&gt;&lt;/canvas&gt;
-
-&lt;ul id=&quot;d&quot;&gt;&lt;/ul&gt;
</del><ins>+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;canvas id=&quot;c&quot;&gt;&lt;/canvas&gt;
</ins><span class="cx"> &lt;script&gt;
</span><del>-var t = async_test(&quot;toBlob with image/png returns a PNG Blob&quot;);
-_addTest(function(canvas, ctx) {
-
-canvas.toBlob(function(data){
-  _assertSame(data.type, &quot;image/png&quot;, &quot;data.type&quot;, &quot;\&quot;image/png\&quot;&quot;);
-}, 'image/png');
-
-
-});
</del><ins>+async_test(function() {
+    on_event(window, &quot;load&quot;, this.step_func(function() {
+        var canvas = document.getElementById('c');
+        var ctx = canvas.getContext('2d');
+        canvas.toBlob(this.step_func_done(function(data) {
+            assert_equals(data.type, &quot;image/png&quot;);
+        }), 'image/png');
+    }));
+}, &quot;toBlob with image/png returns a PNG Blob&quot;);
</ins><span class="cx"> &lt;/script&gt;
</span><del>-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsembeddedcontenttheiframeelementiframesynchronouslydiscardexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-synchronously-discard-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-synchronously-discard-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-synchronously-discard-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+FAIL IFrame discards are processed synchronously assert_equals: child window should be discarded expected null but got object &quot;[object Window]&quot;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsembeddedcontenttheiframeelementiframesynchronouslydiscardhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-synchronously-discard.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-synchronously-discard.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-synchronously-discard.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,32 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;IFrame discards are processed synchronously&lt;/title&gt;
+&lt;body&gt;&lt;/body&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+  async_test(function(t) {
+    var child = document.createElement(&quot;iframe&quot;);
+    child.src = &quot;support/blank.htm?1&quot;;
+    child.onload = t.step_func(function () {
+      var childWindow = child.contentWindow;
+      var grandchild = childWindow.document.createElement(&quot;iframe&quot;);
+      grandchild.src = &quot;blank.htm?2&quot;;
+      grandchild.onload = t.step_func(function () {
+        var grandchildWindow = grandchild.contentWindow;
+        assert_equals(child.contentWindow, childWindow, &quot;child window&quot;);
+        assert_equals(childWindow.parent, window, &quot;child parentage&quot;);
+        assert_equals(grandchild.contentWindow, grandchildWindow, &quot;grandchild window&quot;);
+        assert_equals(grandchildWindow.parent, childWindow, &quot;grandchild parentage&quot;);
+        document.body.removeChild(child);
+        assert_equals(child.contentWindow, null, &quot;child should be discarded&quot;);
+        assert_equals(childWindow.parent, null, &quot;child window should be discarded&quot;);
+        assert_equals(grandchild.contentWindow, null, &quot;grandchild should be discarded&quot;);
+        assert_equals(grandchildWindow.parent, null, &quot;grandchild window should be discarded&quot;);
+        t.done();
+      });
+      childWindow.document.body.appendChild(grandchild);
+    });
+    document.body.appendChild(child);
+  });
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsembeddedcontenttheiframeelementw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-iframe-element/w3c-import.log (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-iframe-element/w3c-import.log        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-iframe-element/w3c-import.log        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -25,6 +25,7 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-allowfullscreen.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-append-to-child-document.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-load-event.html
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-synchronously-discard.html
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-with-base-expected.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-with-base.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe_harness.js
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsembeddedcontenttheimgelementenvironmentchangesviewportchangeexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -3,7 +3,7 @@
</span><span class="cx"> 
</span><span class="cx"> PASS img (no src), onload, narrow 
</span><span class="cx"> PASS img (no src), resize to wide 
</span><del>-FAIL img (empty src), onload, narrow assert_equals: expected &quot;&quot; but got &quot;http://localhost:8800/html/semantics/embedded-content/the-img-element/environment-changes/iframed.sub.html?id=4fceefe3-a188-42e1-a0de-f0ef3c45c766&quot;
</del><ins>+FAIL img (empty src), onload, narrow assert_equals: expected &quot;&quot; but got &quot;http://localhost:8800/html/semantics/embedded-content/the-img-element/environment-changes/iframed.sub.html?id=b39577bd-e227-4579-9d0a-60322e1e64b3&quot;
</ins><span class="cx"> PASS img (empty src), resize to wide 
</span><span class="cx"> PASS img (src only) broken image, onload, narrow 
</span><span class="cx"> PASS img (src only) broken image, resize to wide 
</span><span class="lines">@@ -25,7 +25,7 @@
</span><span class="cx"> FAIL picture: same URL in source (max-width:500px) and img, resize to wide assert_unreached: Got unexpected load event Reached unreachable code
</span><span class="cx"> PASS img (no src), onload, wide 
</span><span class="cx"> PASS img (no src), resize to narrow 
</span><del>-FAIL img (empty src), onload, wide assert_equals: expected &quot;&quot; but got &quot;http://localhost:8800/html/semantics/embedded-content/the-img-element/environment-changes/iframed.sub.html?id=6167c066-e03b-464d-93c0-37df45222827&quot;
</del><ins>+FAIL img (empty src), onload, wide assert_equals: expected &quot;&quot; but got &quot;http://localhost:8800/html/semantics/embedded-content/the-img-element/environment-changes/iframed.sub.html?id=eb681cbf-b2bf-4712-8af8-620d18b223d8&quot;
</ins><span class="cx"> PASS img (empty src), resize to narrow 
</span><span class="cx"> PASS img (src only) broken image, onload, wide 
</span><span class="cx"> PASS img (src only) broken image, resize to narrow 
</span><span class="lines">@@ -35,13 +35,13 @@
</span><span class="cx"> PASS img (srcset 1 cand) broken image, resize to narrow 
</span><span class="cx"> PASS img (srcset 1 cand) valid image, onload, wide 
</span><span class="cx"> PASS img (srcset 1 cand) valid image, resize to narrow 
</span><del>-FAIL picture: source (max-width:500px) broken image, img broken image, onload, wide assert_equals: expected &quot;http://localhost:8800/images/broken.png?71-6167c066-e03b-464d-93c0-37df45222827&quot; but got &quot;http://localhost:8800/images/broken.png?70-6167c066-e03b-464d-93c0-37df45222827&quot;
</del><ins>+FAIL picture: source (max-width:500px) broken image, img broken image, onload, wide assert_equals: expected &quot;http://localhost:8800/images/broken.png?71-eb681cbf-b2bf-4712-8af8-620d18b223d8&quot; but got &quot;http://localhost:8800/images/broken.png?70-eb681cbf-b2bf-4712-8af8-620d18b223d8&quot;
</ins><span class="cx"> TIMEOUT picture: source (max-width:500px) broken image, img broken image, resize to narrow Test timed out
</span><del>-FAIL picture: source (max-width:500px) broken image, img valid image, onload, wide assert_equals: expected &quot;http://localhost:8800/images/green-2x2.png?81-6167c066-e03b-464d-93c0-37df45222827&quot; but got &quot;http://localhost:8800/images/broken.png?80-6167c066-e03b-464d-93c0-37df45222827&quot;
</del><ins>+FAIL picture: source (max-width:500px) broken image, img valid image, onload, wide assert_equals: expected &quot;http://localhost:8800/images/green-2x2.png?81-eb681cbf-b2bf-4712-8af8-620d18b223d8&quot; but got &quot;http://localhost:8800/images/broken.png?80-eb681cbf-b2bf-4712-8af8-620d18b223d8&quot;
</ins><span class="cx"> TIMEOUT picture: source (max-width:500px) broken image, img valid image, resize to narrow Test timed out
</span><del>-FAIL picture: source (max-width:500px) valid image, img broken image, onload, wide assert_equals: expected &quot;http://localhost:8800/images/broken.png?91-6167c066-e03b-464d-93c0-37df45222827&quot; but got &quot;http://localhost:8800/images/green-1x1.png?90-6167c066-e03b-464d-93c0-37df45222827&quot;
</del><ins>+FAIL picture: source (max-width:500px) valid image, img broken image, onload, wide assert_equals: expected &quot;http://localhost:8800/images/broken.png?91-eb681cbf-b2bf-4712-8af8-620d18b223d8&quot; but got &quot;http://localhost:8800/images/green-1x1.png?90-eb681cbf-b2bf-4712-8af8-620d18b223d8&quot;
</ins><span class="cx"> TIMEOUT picture: source (max-width:500px) valid image, img broken image, resize to narrow Test timed out
</span><del>-FAIL picture: source (max-width:500px) valid image, img valid image, onload, wide assert_equals: expected &quot;http://localhost:8800/images/green-2x2.png?101-6167c066-e03b-464d-93c0-37df45222827&quot; but got &quot;http://localhost:8800/images/green-1x1.png?100-6167c066-e03b-464d-93c0-37df45222827&quot;
</del><ins>+FAIL picture: source (max-width:500px) valid image, img valid image, onload, wide assert_equals: expected &quot;http://localhost:8800/images/green-2x2.png?101-eb681cbf-b2bf-4712-8af8-620d18b223d8&quot; but got &quot;http://localhost:8800/images/green-1x1.png?100-eb681cbf-b2bf-4712-8af8-620d18b223d8&quot;
</ins><span class="cx"> TIMEOUT picture: source (max-width:500px) valid image, img valid image, resize to narrow Test timed out
</span><span class="cx"> PASS picture: same URL in source (max-width:500px) and img, onload, wide 
</span><span class="cx"> PASS picture: same URL in source (max-width:500px) and img, resize to narrow 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsembeddedcontenttheimgelementnotrendereddimensiongetterexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/not-rendered-dimension-getter-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/not-rendered-dimension-getter-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/not-rendered-dimension-getter-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS Image intrinsic dimensions are returned if the image isn't rendered 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsembeddedcontenttheimgelementnotrendereddimensiongetterhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/not-rendered-dimension-getter.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/not-rendered-dimension-getter.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/not-rendered-dimension-getter.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,22 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;Image intrinsic dimensions are returned if the image isn't rendered&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Emilio Cobos Álvarez&quot; href=&quot;mailto:emilio@crisal.io&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://html.spec.whatwg.org/multipage/#dom-img-width&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;container&quot; style=&quot;display: none&quot;&gt;
+&lt;/div&gt;
+&lt;script&gt;
+async_test(function(t) {
+  var img = document.createElement('img');
+  img.onload = t.step_func_done(function() {
+    assert_equals(img.width, 389, &quot;intrinsic width should've been returned&quot;)
+    assert_equals(img.height, 590, &quot;intrinsic height should've been returned&quot;)
+    document.getElementById('container').appendChild(img);
+    assert_equals(img.width, 389, &quot;intrinsic width should've been returned&quot;);
+    assert_equals(img.height, 590, &quot;intrinsic height should've been returned&quot;);
+  });
+  img.src = &quot;image-1.jpg&quot;;
+});
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsembeddedcontenttheimgelementw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/w3c-import.log (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/w3c-import.log        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/w3c-import.log        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -27,6 +27,7 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/img.complete.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/invalid-src.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/nonexistent-image.html
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/not-rendered-dimension-getter.html
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/update-media.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/update-src-complete.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/update-the-source-set.html
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformsconstraintsformvalidationvalidityvalidhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valid.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valid.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valid.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -62,7 +62,8 @@
</span><span class="cx">       testData: [
</span><span class="cx">         {conditions: {max: &quot;2000-01&quot;, value: &quot;2001-01&quot;}, expected: false, name: &quot;[target] validity.valid must be false if validity.rangeOverflow is true&quot;},
</span><span class="cx">         {conditions: {min: &quot;2001-01&quot;, value: &quot;2000-01&quot;}, expected: false, name: &quot;[target] validity.valid must be false if validity.rangeUnderflow is true&quot;},
</span><del>-        {conditions: {step: 2 * 1 * 1, value: &quot;2001-03&quot;}, expected: false, name: &quot;[target] validity.valid must be false if validity.stepMismatch is true&quot;},
</del><ins>+        // Step checks that &quot;months since Jan 1970&quot; is evenly divisible by `step`
+        {conditions: {step: 3, value: &quot;2001-02&quot;}, expected: false, name: &quot;[target] validity.valid must be false if validity.stepMismatch is true&quot;},
</ins><span class="cx">         {conditions: {required: true, value: &quot;&quot;}, expected: false, name: &quot;[target] validity.valid must be false if validity.valueMissing is true&quot;}
</span><span class="cx">       ]
</span><span class="cx">     },
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformsconstraintsformvalidationwillValidateexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-willValidate-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-willValidate-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-willValidate-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -4,8 +4,8 @@
</span><span class="cx"> PASS [INPUT in RESET status] Must be barred from the constraint validation 
</span><span class="cx"> PASS [BUTTON in BUTTON status] Must be barred from the constraint validation 
</span><span class="cx"> PASS [BUTTON in RESET status] Must be barred from the constraint validation 
</span><del>-FAIL [fieldset]  Must not be barred from the constraint validation assert_true: The willValidate attribute should be true. expected true got false
-FAIL [output]  Must not be barred from the constraint validation assert_true: The willValidate attribute should be true. expected true got false
</del><ins>+PASS [fieldset]  The willValidate attribute must be false since FIELDSET is not a submittable element 
+PASS [output]  The willValidate attribute must be false since OUTPUT is not a submittable element 
</ins><span class="cx"> PASS [object]  Must be barred from the constraint validation 
</span><span class="cx"> PASS [INPUT in TEXT status] Must be barred from the constraint validation if it is disabled 
</span><span class="cx"> PASS [INPUT in TEXT status] The willValidate attribute must be true if an element is mutable 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformsconstraintsformvalidationwillValidatehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-willValidate.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-willValidate.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-willValidate.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -22,16 +22,16 @@
</span><span class="cx">       types: [&quot;button&quot;, &quot;reset&quot;],
</span><span class="cx">       testData: [{conditions: {}, expected: false, name: &quot;[target] Must be barred from the constraint validation&quot;}]
</span><span class="cx">     },
</span><del>-    //FIELDSET, OUTPUT elements should not be barred from the constraint validation
</del><ins>+    // FIELDSET and OUTPUT elements are not &quot;submittable elements&quot; and therefore never validate.
</ins><span class="cx">     {
</span><span class="cx">       tag: &quot;fieldset&quot;,
</span><span class="cx">       types: [],
</span><del>-      testData: [{conditions: {}, expected: true, name: &quot;[target] Must not be barred from the constraint validation&quot;}]
</del><ins>+      testData: [{conditions: {}, expected: false, name: &quot;[target] The willValidate attribute must be false since FIELDSET is not a submittable element&quot;}]
</ins><span class="cx">     },
</span><span class="cx">     {
</span><span class="cx">       tag: &quot;output&quot;,
</span><span class="cx">       types: [],
</span><del>-      testData: [{conditions: {}, expected: true, name: &quot;[target] Must not be barred from the constraint validation&quot;}]
</del><ins>+      testData: [{conditions: {}, expected: false, name: &quot;[target] The willValidate attribute must be false since OUTPUT is not a submittable element&quot;}]
</ins><span class="cx">     },
</span><span class="cx">     //OBJECT, KEYGEN, elements must be barred from the constraint validation
</span><span class="cx">     {
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformsformcontrolinfrastructureformexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/form-control-infrastructure/form-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/form-control-infrastructure/form-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/form-control-infrastructure/form-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -11,8 +11,6 @@
</span><span class="cx"> PASS label-form-form2.form 
</span><span class="cx"> PASS label-with-control.form 
</span><span class="cx"> PASS label-for.form 
</span><del>-FAIL label-with-progress.form assert_equals: Sanity check: label.control.form expected (object) null but got (undefined) undefined
-FAIL label-with-meter.form assert_equals: Sanity check: label.control.form expected (object) null but got (undefined) undefined
</del><span class="cx"> PASS label-for-control-form-in-form.form 
</span><span class="cx"> PASS label-for-control-form.form 
</span><span class="cx"> PASS label-in-table.form 
</span><span class="lines">@@ -41,10 +39,6 @@
</span><span class="cx"> 
</span><span class="cx"> label-for 
</span><span class="cx"> 
</span><del>-label-with-progress 
-
-label-with-meter 
-
</del><span class="cx">  label-for-control-form-in-form
</span><span class="cx"> 
</span><span class="cx">  label-for-control-form
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformsformcontrolinfrastructureformhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/form-control-infrastructure/form.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/form-control-infrastructure/form.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/form-control-infrastructure/form.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -20,8 +20,6 @@
</span><span class="cx"> &lt;p&gt;&lt;label id=&quot;label-form-form2&quot; form=&quot;form2&quot;&gt;label-form-form2&lt;/label&gt;
</span><span class="cx"> &lt;p&gt;&lt;label id=&quot;label-with-control&quot;&gt;label-with-control &lt;input&gt;&lt;/label&gt;
</span><span class="cx"> &lt;p&gt;&lt;label id=&quot;label-for&quot; for=&quot;control-for-label&quot;&gt;label-for&lt;/label&gt; &lt;input id=&quot;control-for-label&quot;&gt;
</span><del>-&lt;p&gt;&lt;label id=&quot;label-with-progress&quot;&gt;label-with-progress &lt;progress&gt;&lt;/progress&gt;&lt;/label&gt;
-&lt;p&gt;&lt;label id=&quot;label-with-meter&quot;&gt;label-with-meter &lt;meter&gt;&lt;/meter&gt;&lt;/label&gt;
</del><span class="cx"> &lt;p&gt;
</span><span class="cx">  &lt;input id=&quot;input-with-form-attr-in-form&quot; form=&quot;form2&quot;&gt;
</span><span class="cx">  &lt;label id=&quot;label-for-control-form-in-form&quot; for=&quot;input-with-form-attr-in-form&quot;&gt;label-for-control-form-in-form&lt;/label&gt;
</span><span class="lines">@@ -85,8 +83,6 @@
</span><span class="cx"> testLabel(&quot;label-form-form2&quot;, null);
</span><span class="cx"> testLabel(&quot;label-with-control&quot;, form);
</span><span class="cx"> testLabel(&quot;label-for&quot;, form);
</span><del>-testLabel(&quot;label-with-progress&quot;, null);
-testLabel(&quot;label-with-meter&quot;, null);
</del><span class="cx"> testLabel(&quot;label-for-control-form-in-form&quot;, form2);
</span><span class="cx"> testLabel(&quot;label-for-control-form&quot;, form2);
</span><span class="cx"> testLabel(&quot;label-in-table&quot;, null);
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformsformsubmission0formdatasetusvexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/form-submission-0/form-data-set-usv-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/form-submission-0/form-data-set-usv-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/form-submission-0/form-data-set-usv-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+
+FAIL Submitting a form data set that contains unpaired surrogates must convert to Unicode scalar values assert_equals: expected &quot;69 6e 70 75 74 31 ef bf bd 3d 69 6e 70 75 74 31 ef bf bd 0d 0a 69 6e 70 75 74 32 ef bf bd 3d 69 6e 70 75 74 32 ef bf bd 0d 0a 69 6e 70 75 74 33 ef bf bd 3d 69 6e 70 75 74 33 ef bf bd 0d 0a 69 6e 70 75 74 34 ef bf bd 3d 69 6e 70 75 74 34 ef bf bd 0d 0a&quot; but got &quot;69 6e 70 75 74 31 ed b0 81 3d 69 6e 70 75 74 31 ed b0 81 0d 0a 69 6e 70 75 74 32 ed b0 81 3d 69 6e 70 75 74 32 ed b0 81 0d 0a 69 6e 70 75 74 33 ed b0 81 3d 69 6e 70 75 74 33 ed b0 81 0d 0a 69 6e 70 75 74 34 ed b0 81 3d 69 6e 70 75 74 34 ed b0 81&quot;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformsformsubmission0formdatasetusvformhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/form-submission-0/form-data-set-usv-form.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/form-submission-0/form-data-set-usv-form.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/form-submission-0/form-data-set-usv-form.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,27 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;This is the form that will be submitted&lt;/title&gt;
+
+&lt;form action=&quot;form-echo.py&quot; method=&quot;post&quot; enctype=&quot;text/plain&quot;&gt;
+  &lt;input id=&quot;input1&quot; type=&quot;text&quot;&gt;
+  &lt;select id=&quot;input2&quot;&gt;
+    &lt;option selected&gt;option
+  &lt;/select&gt;
+  &lt;input id=&quot;input3&quot; type=&quot;radio&quot; checked&gt;
+  &lt;input id=&quot;input4&quot; type=&quot;checkbox&quot; checked&gt;
+&lt;/form&gt;
+
+&lt;script&gt;
+&quot;use strict&quot;;
+
+const form = document.querySelector(&quot;form&quot;);
+
+for (let el of Array.from(form.querySelectorAll(&quot;input&quot;))) { // Firefox/Edge support
+  el.name = el.id + &quot;\uDC01&quot;;
+  el.value = el.id + &quot;\uDC01&quot;;
+}
+
+const select = document.querySelector(&quot;select&quot;);
+select.name = select.id + &quot;\uDC01&quot;;
+select.firstElementChild.value = select.id + &quot;\uDC01&quot;;
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformsformsubmission0formdatasetusvhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/form-submission-0/form-data-set-usv.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/form-submission-0/form-data-set-usv.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/form-submission-0/form-data-set-usv.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,40 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;Submitting a form data set that contains unpaired surrogates must convert to Unicode scalar values&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Domenic Denicola&quot; href=&quot;mailto:d@domenic.me&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://html.spec.whatwg.org/multipage/forms.html#constructing-form-data-set&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://github.com/whatwg/html/issues/1490&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;iframe id=&quot;testframe&quot; src=&quot;form-data-set-usv-form.html&quot;&gt;&lt;/iframe&gt;
+
+&lt;script&gt;
+&quot;use strict&quot;;
+
+async_test(t =&gt; {
+  window.onload = t.step_func(() =&gt; {
+    const iframe = document.querySelector(&quot;#testframe&quot;);
+    const form = iframe.contentWindow.document.querySelector(&quot;form&quot;);
+
+    iframe.onload = t.step_func_done(() =&gt; {
+      const result = iframe.contentWindow.document.body.textContent;
+
+      assert_equals(result,
+        &quot;69 6e 70 75 74 31 ef bf bd 3d 69 6e 70 75 74 31 ef bf bd &quot; + // input1\uFFFD=input1\uFFFD
+        &quot;0d 0a &quot;                                                    + // \r\n
+        &quot;69 6e 70 75 74 32 ef bf bd 3d 69 6e 70 75 74 32 ef bf bd &quot; + // input2\uFFFD=input2\uFFFD
+        &quot;0d 0a &quot;                                                    + // \r\n
+        &quot;69 6e 70 75 74 33 ef bf bd 3d 69 6e 70 75 74 33 ef bf bd &quot; + // input3\uFFFD=input3\uFFFD
+        &quot;0d 0a &quot;                                                    + // \r\n
+        &quot;69 6e 70 75 74 34 ef bf bd 3d 69 6e 70 75 74 34 ef bf bd &quot; + // input4\uFFFD=input4\uFFFD
+        &quot;0d 0a&quot;                                                       // \r\n
+      );
+
+      // ef bf bd is the UTF-8 encoding of U+FFFD
+    });
+
+    form.submit();
+  });
+});
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformsformsubmission0formechopy"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/form-submission-0/form-echo.py (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/form-submission-0/form-echo.py                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/form-submission-0/form-echo.py        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+def main(request, response):
+    bytes = bytearray(request.raw_input.read())
+    bytes_string = &quot; &quot;.join(&quot;%02x&quot; % b for b in bytes)
+    return (
+        [(&quot;Content-Type&quot;, &quot;text/plain&quot;)],
+        bytes_string
+    )
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformsformsubmission0urlencodedexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/form-submission-0/url-encoded-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/form-submission-0/url-encoded-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/form-submission-0/url-encoded-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -2,5 +2,5 @@
</span><span class="cx"> 
</span><span class="cx"> PASS text.simple 
</span><span class="cx"> PASS textarea.simple 
</span><del>-FAIL nokeygen.simple assert_equals: expected &quot;foo=barb&quot; but got &quot;foo=barb&amp;=MIICQTCCASkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDUQG7OUET%2BonWyar%2BS%2Bu6sZraJSp7Z165cAcpCXJfswpnSETvI8TnamSmO4Y5jZkavWxDxhoztrM4Q5c72Uufqx4aay9wmWEYlj7ytorSuCkG8tbKQEGWLh%2Fm2M5l3B4Lvz4PTka73%2BzJxm%2FeDyXAKkp1efF9QTOdsAMMQJpoLikxx%2BlFfLGgbqKp5RRYneOUx9d4lpDhW8PnaWdm19TL3RgZaKhvJOcAtrCoeW%2B%2F54zGhjhWeHVCZC%2B%2FsHsrjnDcuNiCC%2FtkCi9PzhZoPVikx4RLS4ws9hWTRnD%2BSaAXAGTbiPBbyTHWTnG6%2Ff8gTu88j0Pr34gfQExjHKUDfka7tAgMBAAEWAQAwDQYJKoZIhvcNAQEEBQADggEBAM6%2FQV3%2BvdaBxTuvl3QR6OQHHRGtCmnfnRzENK%2FjIUUBSJVJJl3BqwiD7G7few7LoCIdGR3EpZUB6QmOQzMcMBi7ymOAyyx7iw%2F2iZjUooxUOLTvAspHRmsTYAG9VtHYzVZgRKOhypFftcdqRhWliXNW2X254eVW2YWpP5hT%2Fartbqjd7Tv7jN5lLuKmTxTI35JiHw7L8jRdIBgP5G0bu2EG8Fvk7%2FbqVlhdlyHg7XJD6CsB0pU%2FXj3mor7DtTLZ9rwifu3b7Ib%2F03Ak9OArav4KxMo7gb7gagFgjStt9WXVSUsa%2BedrfezVccWCT6ZFDVEJii0zBl2d9FQKRunonPk%3D&quot;
</del><ins>+FAIL nokeygen.simple assert_equals: expected &quot;foo=barb&quot; but got &quot;foo=barb&amp;=MIICQTCCASkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDV4hN0dzTdIJjp3SwmYnjqFO91JgKfMCMacefbSNXCoksKHqoBisNVcB%2Fn1XMB0Vk5CjXeTiukRXWdRJObTMBb9Y2%2BtFeyXuRjsoQsZiHp%2F5XfgBC0i9YMT4MpHvGosOu%2BdZAxEYyOgROf%2FaaSmEe4tbcIxSdtBQulbvGK4OhvB1pM1SqCQOrsrwV%2FzEYqt6K2nU8kd43f1cRP9%2FCHlMdBtHHt54%2B3oMfOZqa8SAQ8eL7WWgIrYcIfkQozc8U7xozvnNOZ38jXh6x%2Fh00JPxnGeLsMC6mqYYdPKJO33P6wpKL8AOl0VPeBMSw8fv3AHxp0%2Bk3S%2Bmq4BpSVxQEE8%2FCbAgMBAAEWAQAwDQYJKoZIhvcNAQEEBQADggEBAJl9r9jfDkAKK%2BEV%2BjHd78n%2F5AygR%2Ft2dafQABxjS9H08L99JaHV1S8nmPLEM3IZvXkLDZTR3ML1jPOH0hPO8ecfFo9iFheh3QxmSt%2Bb2r9PFe9V3FCAWgxN1UBI8LJyk%2BdEzU%2FRvyS8BL7syomzaVEEXOmdkOrIYx9u5ikva%2FqQkQ%2BMD2O6oSy%2Fof5Atb427CuxPen9SptCBVxGLf5dbl41gmlyDgygxBZfq2UcLU1C5B6ybVDB8TzcStsVQjGXCx31TM2uuyaLzMQ42w4OkWHQNaD%2BQZAE%2B1gQSs%2FztNRj%2BF4woc1PTEhK8NT%2B0AifMNuAkjHddsYOJeO2zgDSpdY%3D&quot;
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformsformsubmission0w3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/form-submission-0/w3c-import.log (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/form-submission-0/w3c-import.log        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/form-submission-0/w3c-import.log        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -16,6 +16,9 @@
</span><span class="cx"> ------------------------------------------------------------------------
</span><span class="cx"> List of files:
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/form-submission-0/contains.json
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/form-submission-0/form-data-set-usv-form.html
+/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/form-submission-0/form-data-set-usv.html
+/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/form-submission-0/form-echo.py
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/form-submission-0/getactionurl.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/form-submission-0/submit-entity-body.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/form-submission-0/url-encoded.html
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformsresettingaformresetformeventrealmexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/resetting-a-form/reset-form-event-realm-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/resetting-a-form/reset-form-event-realm-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/resetting-a-form/reset-form-event-realm-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,8 @@
</span><ins>+ 
+
+FAIL reset()'s event must be fired in the Realm of the target assert_equals: the event must be created in the realm of the target expected function &quot;function Function() {
+    [native code]
+}&quot; but got function &quot;function Function() {
+    [native code]
+}&quot;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformsresettingaformresetformeventrealmsupporthtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/resetting-a-form/reset-form-event-realm-support.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/resetting-a-form/reset-form-event-realm-support.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/resetting-a-form/reset-form-event-realm-support.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+
+&lt;form&gt;&lt;/form&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformsresettingaformresetformeventrealmhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/resetting-a-form/reset-form-event-realm.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/resetting-a-form/reset-form-event-realm.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/resetting-a-form/reset-form-event-realm.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,38 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;reset() event firing realm&lt;/title&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://html.spec.whatwg.org/#resetting-a-form&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dom.spec.whatwg.org/#concept-event-fire&quot;&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Domenic Denicola&quot; href=&quot;mailto:d@domenic.me&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;iframe src=&quot;reset-form-event-realm-support.html&quot;&gt;&lt;/iframe&gt;
+&lt;iframe&gt;&lt;/iframe&gt;
+
+&lt;script&gt;
+&quot;use strict&quot;;
+
+async_test(t =&gt; {
+  window.onload = t.step_func_done(() =&gt; {
+    const frame0Form  = frames[0].document.forms[0];
+    const frame1Body = frames[1].document.body;
+
+    frame1Body.appendChild(frame0Form);
+
+    let resetCalled = false;
+    frame0Form.onreset = t.step_func(ev =&gt; {
+      resetCalled = true;
+
+      const functionConstructorInEvRealm = ev.constructor.constructor;
+      const functionConstructorInFormRealm = frame0Form.constructor.constructor;
+
+      assert_equals(functionConstructorInEvRealm, functionConstructorInFormRealm,
+        &quot;the event must be created in the realm of the target&quot;);
+    });
+
+    frame0Form.reset();
+    assert_true(resetCalled, &quot;The reset event handler must have been called&quot;);
+  });
+}, &quot;reset()'s event must be fired in the Realm of the target&quot;)
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformsresettingaformw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/resetting-a-form/w3c-import.log (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/resetting-a-form/w3c-import.log        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/resetting-a-form/w3c-import.log        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -16,4 +16,6 @@
</span><span class="cx"> ------------------------------------------------------------------------
</span><span class="cx"> List of files:
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/resetting-a-form/reset-event.html
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/resetting-a-form/reset-form-event-realm-support.html
+/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/resetting-a-form/reset-form-event-realm.html
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/resetting-a-form/reset-form.html
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformstextfieldselectionselectionnotapplicationtextareaexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection-not-application-textarea-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection-not-application-textarea-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection-not-application-textarea-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,3 +1,3 @@
</span><span class="cx"> 
</span><del>-PASS text field selection for the input textarea 
</del><ins>+FAIL text field selection for the input textarea assert_equals: updated selectionStart expected 1 but got 0
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformstextfieldselectionselectionnotapplicationtextareahtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection-not-application-textarea.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection-not-application-textarea.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection-not-application-textarea.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -9,12 +9,21 @@
</span><span class="cx"> &lt;script&gt;
</span><span class="cx">   test(function() {
</span><span class="cx">     var el = document.createElement(&quot;textarea&quot;);
</span><del>-    assert_equals(el.selectionStart, 0);
-    assert_equals(el.selectionEnd, 0);
</del><ins>+    assert_equals(el.selectionStart, 0, &quot;initial selectionStart&quot;);
+    assert_equals(el.selectionEnd, 0, &quot;initial selectionEnd&quot;);
+    assert_equals(el.selectionDirection, &quot;none&quot;, &quot;initial selectionDirection&quot;);
+
</ins><span class="cx">     el.selectionStart = 1;
</span><span class="cx">     el.selectionEnd = 1;
</span><span class="cx">     el.selectionDirection = &quot;forward&quot;;
</span><ins>+    assert_equals(el.selectionStart, 1, &quot;updated selectionStart&quot;);
+    assert_equals(el.selectionEnd, 1, &quot;updated selectionEnd&quot;);
+    assert_equals(el.selectionDirection, &quot;forward&quot;, &quot;updated selectionDirection&quot;);
+
</ins><span class="cx">     el.setRangeText(&quot;foobar&quot;);
</span><span class="cx">     el.setSelectionRange(0, 1);
</span><ins>+    assert_equals(el.selectionStart, 0, &quot;final selectionStart&quot;);
+    assert_equals(el.selectionEnd, 1, &quot;final selectionEnd&quot;);
+    assert_equals(el.selectionDirection, &quot;forward&quot;, &quot;final selectionDirection&quot;);
</ins><span class="cx">   }, &quot;text field selection for the input textarea&quot;);
</span><span class="cx"> &lt;/script&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformstextfieldselectiontextfieldselectionsetSelectionRangeexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/textfieldselection-setSelectionRange-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/textfieldselection-setSelectionRange-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/textfieldselection-setSelectionRange-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -7,7 +7,7 @@
</span><span class="cx"> PASS input setSelectionRange(0,1) 
</span><span class="cx"> PASS input setSelectionRange(0,input.value.length+1) 
</span><span class="cx"> PASS input setSelectionRange(input.value.length+1,input.value.length+1) 
</span><del>-PASS input setSelectionRange(input.value.length+1,input.value.length+1) 
</del><ins>+PASS input setSelectionRange(input.value.length+1,1) 
</ins><span class="cx"> PASS input setSelectionRange(2,2) 
</span><span class="cx"> PASS input setSelectionRange(2,1) 
</span><span class="cx"> PASS input direction of setSelectionRange(0,1,&quot;backward&quot;) 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformstextfieldselectiontextfieldselectionsetSelectionRangehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/textfieldselection-setSelectionRange.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/textfieldselection-setSelectionRange.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/textfieldselection-setSelectionRange.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -41,7 +41,7 @@
</span><span class="cx">     input.setSelectionRange(input.value.length+1,1)
</span><span class="cx">     assert_equals(input.selectionStart, 1, &quot;If end is less than or equal to start then the start of the selection and the end of the selection must both be placed immediately before the character with offset end&quot;);
</span><span class="cx">     assert_equals(input.selectionEnd, 1, &quot;element.selectionEnd should be 1&quot;);
</span><del>-  },'input setSelectionRange(input.value.length+1,input.value.length+1)');
</del><ins>+  },'input setSelectionRange(input.value.length+1,1)');
</ins><span class="cx"> 
</span><span class="cx">   test(function() {
</span><span class="cx">     input.setSelectionRange(2,2)
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformsthebuttonelementbuttonmenuhistoricalexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-button-element/button-menu-historical-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-button-element/button-menu-historical-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-button-element/button-menu-historical-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+button
+
+PASS button.menu, the potentially-reflecting IDL attribute, does not exist 
+PASS button.type reflects properly 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformsthebuttonelementbuttonmenuhistoricalhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-button-element/button-menu-historical.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-button-element/button-menu-historical.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-button-element/button-menu-historical.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,25 @@
</span><ins>+&lt;!DOCTYPE HTML&gt;
+&lt;title&gt;Test that nobody implemented the now-removed menu type and attribute on button&lt;/title&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Domenic Denicola&quot; href=&quot;mailto:d@domenic.me&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://github.com/whatwg/html/pull/2342&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;button id=&quot;b&quot; type=&quot;menu&quot; menu=&quot;m&quot;&gt;button&lt;/button&gt;
+&lt;menu id=&quot;m&quot;&gt;&lt;/menu&gt;
+
+&lt;script&gt;
+&quot;use strict&quot;;
+
+const button = document.querySelector(&quot;button&quot;);
+
+test(() =&gt; {
+  assert_false('menu' in button, 'The menu property must not exist on the button');
+  assert_equals(button.menu, undefined, 'The value of the menu property on the button must be undefined');
+}, 'button.menu, the potentially-reflecting IDL attribute, does not exist');
+
+test(() =&gt; {
+  assert_equals(button.type, 'submit', 'The type property must reflect as its invalid value default of submit');
+}, 'button.type reflects properly');
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformsthebuttonelementw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-button-element/w3c-import.log (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-button-element/w3c-import.log        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-button-element/w3c-import.log        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -18,4 +18,5 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-button-element/button-activate-frame.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-button-element/button-activate.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-button-element/button-events.html
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-button-element/button-menu-historical.html
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-button-element/button-validation.html
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformsthefieldsetelementdisabled001html"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-fieldset-element/disabled-001.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-fieldset-element/disabled-001.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-fieldset-element/disabled-001.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -52,7 +52,7 @@
</span><span class="cx">     assert_true(document.getElementById('fs2').disabled, &quot;The fieldset is disabled&quot;);
</span><span class="cx">     assert_false(document.getElementById('clubname2').willValidate, &quot;fieldset is disabled so is input 'clubname2'&quot;);
</span><span class="cx">     assert_false(document.getElementById('clubnum2').willValidate, &quot;fieldset is disabled so is input 'clubnum2'&quot;);
</span><del>-    assert_false(document.getElementById('club2').willValidate, &quot;the first legend is not a child of the disbled fieldset: input 'club2' is disabled&quot;);
</del><ins>+    assert_false(document.getElementById('club2').willValidate, &quot;the first legend is not a child of the disabled fieldset: input 'club2' is disabled&quot;);
</ins><span class="cx">   }, &quot;The first 'legend' element is not a child of the disabled fieldset: Its descendants should be disabled.&quot;);
</span><span class="cx"> 
</span><span class="cx">   test(function () {
</span><span class="lines">@@ -59,7 +59,7 @@
</span><span class="cx">     assert_true(document.getElementById('fs3').disabled, &quot;The fieldset is disabled&quot;);
</span><span class="cx">     assert_false(document.getElementById('clubname3').willValidate, &quot;fieldset is disabled so is input 'clubname3'&quot;);
</span><span class="cx">     assert_false(document.getElementById('clubnum3').willValidate, &quot;fieldset is disabled so is input 'clubnum3'&quot;);
</span><del>-    assert_false(document.getElementById('club3').willValidate, &quot;the first legend is not a child of the disbled fieldset: input 'club3' is disabled&quot;);
</del><ins>+    assert_false(document.getElementById('club3').willValidate, &quot;the first legend is not a child of the disabled fieldset: input 'club3' is disabled&quot;);
</ins><span class="cx">   }, &quot;The &lt;legend&gt; element is not a child of the disabled fieldset: Its descendants should be disabled.&quot;);
</span><span class="cx"> 
</span><span class="cx">   test(function () {
</span><span class="lines">@@ -66,6 +66,6 @@
</span><span class="cx">     assert_true(document.getElementById('fs4').disabled, &quot;The fieldset is disabled&quot;);
</span><span class="cx">     assert_false(document.getElementById('clubname4').willValidate, &quot;fieldset is disabled so is input 'clubname4'&quot;);
</span><span class="cx">     assert_false(document.getElementById('clubnum4').willValidate, &quot;fieldset is disabled so is input 'clubnum4'&quot;);
</span><del>-    assert_true(document.getElementById('club4').willValidate, &quot;the first legend a child of the disbled fieldset: input 'club4' is disabled&quot;);
</del><ins>+    assert_true(document.getElementById('club4').willValidate, &quot;the first legend a child of the disabled fieldset: input 'club4' is disabled&quot;);
</ins><span class="cx">   }, &quot;The &lt;legend&gt; element is child of the disabled fieldset: Its descendants should be disabled.&quot;);
</span><span class="cx"> &lt;/script&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformstheinputelementdateexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/date-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/date-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/date-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -2,9 +2,9 @@
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> FAIL date type support on input element assert_equals: expected &quot;date&quot; but got &quot;text&quot;
</span><del>-FAIL The value attribute, if specified and not empty, must have a value that is a valid date string. assert_equals: expected &quot;2011-01-01&quot; but got &quot;1999-01-31&quot;
-FAIL The min attribute, if specified, must have a value that is a valid date string. assert_equals: expected &quot;&quot; but got &quot;1999-1&quot;
-FAIL The max attribute, if specified, must have a value that is a valid date string. assert_equals: expected &quot;2099-01&quot; but got &quot;2011-12-31&quot;
</del><ins>+PASS The value attribute, if specified and not empty, must have a value that is a valid date string. 
+PASS The min attribute must be reflected verbatim by the min property. 
+PASS The max attribute must be reflected verbatim by the max property. 
</ins><span class="cx"> FAIL User agents must not allow the user to set the value to a non-empty string that is not a valid date string. assert_equals: expected &quot;&quot; but got &quot;invalid-date&quot;
</span><span class="cx"> FAIL Number of days assert_equals: January has 31 days expected &quot;&quot; but got &quot;2014-01-32&quot;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformstheinputelementdatehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/date.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/date.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/date.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -16,7 +16,7 @@
</span><span class="cx">       &lt;input id=&quot;too_large_value&quot; type=&quot;date&quot; value=&quot;2099-01-31&quot; min=&quot;2011-01-01&quot; max=&quot;2011-12-31&quot;/&gt;
</span><span class="cx">       &lt;input id=&quot;invalid_min&quot; type=&quot;date&quot; value=&quot;2011-01-01&quot; min=&quot;1999-1&quot; max=&quot;2011-12-31&quot;/&gt;
</span><span class="cx">       &lt;input id=&quot;invalid_max&quot; type=&quot;date&quot; value=&quot;2011-01-01&quot; min=&quot;2011-01-01&quot; max=&quot;2011-13-162-777&quot;/&gt;
</span><del>-      &lt;input id=&quot;min_larger_than_max&quot; type=&quot;date&quot; value=&quot;2011-01-01&quot; min=&quot;2099-01&quot; max=&quot;2011-12-31&quot;/&gt;
</del><ins>+      &lt;input id=&quot;min_larger_than_max&quot; type=&quot;date&quot; value=&quot;2011-01-01&quot; min=&quot;2099-01-01&quot; max=&quot;2011-12-31&quot;/&gt;
</ins><span class="cx">       &lt;input id=&quot;invalid_value&quot; type=&quot;date&quot; value=&quot;invalid-date&quot; min=&quot;2011-01-01&quot; max=&quot;2011-12-31&quot;/&gt;
</span><span class="cx">     &lt;/div&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -29,20 +29,20 @@
</span><span class="cx"> 
</span><span class="cx">       test(function() {
</span><span class="cx">         assert_equals(document.getElementById(&quot;valid&quot;).value, &quot;2011-11-01&quot;);
</span><del>-        assert_equals(document.getElementById(&quot;too_small_value&quot;).value, &quot;2011-01-01&quot;);
-        assert_equals(document.getElementById(&quot;too_large_value&quot;).value, &quot;2011-12-31&quot;);
</del><ins>+        assert_equals(document.getElementById(&quot;too_small_value&quot;).value, &quot;1999-01-31&quot;);
+        assert_equals(document.getElementById(&quot;too_large_value&quot;).value, &quot;2099-01-31&quot;);
</ins><span class="cx">       }, &quot;The value attribute, if specified and not empty, must have a value that is a valid date string.&quot;);
</span><span class="cx"> 
</span><span class="cx">       test(function() {
</span><del>-        assert_equals(document.getElementById(&quot;valid&quot;).min, &quot;2011-01-01&quot;),
-        assert_equals(document.getElementById(&quot;invalid_min&quot;).min, &quot;&quot;)
-      }, &quot;The min attribute, if specified, must have a value that is a valid date string.&quot;);
</del><ins>+        assert_equals(document.getElementById(&quot;valid&quot;).min, &quot;2011-01-01&quot;);
+        assert_equals(document.getElementById(&quot;invalid_min&quot;).min, &quot;1999-1&quot;);
+      }, &quot;The min attribute must be reflected verbatim by the min property.&quot;);
</ins><span class="cx"> 
</span><span class="cx">       test(function() {
</span><del>-        assert_equals(document.getElementById(&quot;valid&quot;).max, &quot;2011-12-31&quot;),
-        assert_equals(document.getElementById(&quot;min_larger_than_max&quot;).max, &quot;2099-01&quot;),
-        assert_equals(document.getElementById(&quot;invalid_max&quot;).max, &quot;&quot;)
-      },&quot;The max attribute, if specified, must have a value that is a valid date string.&quot;);
</del><ins>+        assert_equals(document.getElementById(&quot;valid&quot;).max, &quot;2011-12-31&quot;);
+        assert_equals(document.getElementById(&quot;min_larger_than_max&quot;).max, &quot;2011-12-31&quot;);
+        assert_equals(document.getElementById(&quot;invalid_max&quot;).max, &quot;2011-13-162-777&quot;);
+      }, &quot;The max attribute must be reflected verbatim by the max property.&quot;);
</ins><span class="cx"> 
</span><span class="cx">       test(function() {
</span><span class="cx">         assert_equals(document.getElementById(&quot;invalid_value&quot;).value, &quot;&quot;);
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformstheinputelementdatetimeexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/datetime-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/datetime-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/datetime-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,4 +1,4 @@
</span><del>-Date &amp; Time Inputs
</del><ins>+Date and Time Inputs
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> FAIL date type support on input element assert_equals: expected &quot;date&quot; but got &quot;text&quot;
</span><span class="lines">@@ -15,13 +15,13 @@
</span><span class="cx"> PASS [time] The step attribute must be expressed in seconds 
</span><span class="cx"> PASS [time] stepUp method support on input 'time' element 
</span><span class="cx"> PASS [time] stepDown method support on input 'time' element 
</span><del>-FAIL datetime type support on input element assert_equals: expected &quot;datetime&quot; but got &quot;text&quot;
-PASS [datetime] The must be a valid global date and time string 
-PASS [datetime] The min attribute must have a value that is a valid global date and time string 
-PASS [datetime] The max attribute must have a value that is a valid global date and time string 
-PASS [datetime] The step attribute must be expressed in seconds 
-PASS [datetime] stepUp method support on input 'datetime' element 
-PASS [datetime] stepDown method support on input 'datetime' element 
</del><ins>+FAIL datetime-local type support on input element assert_equals: expected &quot;datetime-local&quot; but got &quot;text&quot;
+PASS [datetime-local] The must be a valid local date and time string 
+PASS [datetime-local] The min attribute must have a value that is a valid local date and time string 
+PASS [datetime-local] The max attribute must have a value that is a valid local date and time string 
+PASS [datetime-local] The step attribute must be expressed in seconds 
+PASS [datetime-local] stepUp method support on input 'datetime-local' element 
+PASS [datetime-local] stepDown method support on input 'datetime-local' element 
</ins><span class="cx"> FAIL month type support on input element assert_equals: expected &quot;month&quot; but got &quot;text&quot;
</span><span class="cx"> PASS [month] The value must be a value that is a valid global date and time string 
</span><span class="cx"> PASS [month] The min attribute must have a value that is a valid global date and time string 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformstheinputelementdatetimehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/datetime.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/datetime.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/datetime.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,7 +1,7 @@
</span><span class="cx"> &lt;!DOCTYPE html&gt;
</span><span class="cx"> &lt;html&gt;
</span><span class="cx">   &lt;head&gt;
</span><del>-    &lt;title&gt;Date &amp; Time Inputs&lt;/title&gt;
</del><ins>+    &lt;title&gt;Date and Time Inputs&lt;/title&gt;
</ins><span class="cx">     &lt;meta name=viewport content=&quot;width=device-width, maximum-scale=1.0, user-scalable=no&quot; /&gt;
</span><span class="cx">     &lt;link rel=&quot;author&quot; title=&quot;Fabrice Clari&quot; href=&quot;mailto:f.clari@inno-group.com&quot;&gt;
</span><span class="cx">     &lt;link rel=&quot;author&quot; title=&quot;Dimitri Bocquet&quot; href=&quot;mailto:Dimitri.Bocquet@mosquito-fp7.eu&quot;&gt;
</span><span class="lines">@@ -11,11 +11,11 @@
</span><span class="cx">   &lt;/head&gt;
</span><span class="cx">   &lt;body&gt;
</span><span class="cx"> 
</span><del>-      &lt;h1&gt;Date &amp; Time Inputs&lt;/h1&gt;
</del><ins>+      &lt;h1&gt;Date and Time Inputs&lt;/h1&gt;
</ins><span class="cx">       &lt;div style=&quot;display: none&quot;&gt;
</span><span class="cx">         &lt;input type=&quot;date&quot; value=&quot;2011-12-01&quot; min=&quot;2011-12-01&quot; max=&quot;2011-12-31&quot; step=&quot;5&quot; /&gt;
</span><span class="cx">         &lt;input type=&quot;time&quot; value= &quot;12:00&quot; min=&quot;11:30&quot; max=&quot;14:00&quot; step=&quot;600&quot; /&gt;
</span><del>-        &lt;input type=&quot;datetime&quot; value=&quot;2011-12-01T12:00Z&quot; min=&quot;2011-12-01T12:00Z&quot; max=&quot;2011-12-31T22:00Z&quot; step=&quot;7200&quot; /&gt;
</del><ins>+        &lt;input type=&quot;datetime-local&quot; value=&quot;2011-12-01T12:00&quot; min=&quot;2011-12-01T12:00&quot; max=&quot;2011-12-31T22:00&quot; step=&quot;7200&quot; /&gt;
</ins><span class="cx">         &lt;input type=&quot;month&quot; value=&quot;2011-01&quot; min=&quot;2011-01&quot; max=&quot;2011-12&quot; step=&quot;2&quot; /&gt;
</span><span class="cx">         &lt;input type=&quot;week&quot; value=&quot;2011-W40&quot; min=&quot;2011-W20&quot; max=&quot;2011-W50&quot; step=&quot;2&quot; /&gt;
</span><span class="cx">     &lt;/div&gt;
</span><span class="lines">@@ -54,19 +54,19 @@
</span><span class="cx">     test(function() {assert_true(typeof(document.getElementsByTagName(&quot;input&quot;)[1].stepDown) == &quot;function&quot;)}, &quot;[time] stepDown method support on input 'time' element&quot;, {
</span><span class="cx">       &quot;help&quot; : &quot;https://html.spec.whatwg.org/multipage/#dom-input-stepdown&quot; });
</span><span class="cx"> 
</span><del>-    test(function() {assert_equals(document.getElementsByTagName(&quot;input&quot;)[2].type, &quot;datetime&quot;)}, &quot;datetime type support on input element&quot;, {
</del><ins>+    test(function() {assert_equals(document.getElementsByTagName(&quot;input&quot;)[2].type, &quot;datetime-local&quot;)}, &quot;datetime-local type support on input element&quot;, {
</ins><span class="cx">       &quot;help&quot; : &quot;https://html.spec.whatwg.org/multipage/#dom-input-type&quot; });
</span><del>-    test(function() {assert_equals(document.getElementsByTagName(&quot;input&quot;)[2].value, &quot;2011-12-01T12:00Z&quot;)}, &quot;[datetime] The must be a valid global date and time string&quot;, {
</del><ins>+    test(function() {assert_equals(document.getElementsByTagName(&quot;input&quot;)[2].value, &quot;2011-12-01T12:00&quot;)}, &quot;[datetime-local] The must be a valid local date and time string&quot;, {
</ins><span class="cx">       &quot;help&quot; : &quot;https://html.spec.whatwg.org/multipage/#dom-input-value&quot; });
</span><del>-    test(function() {assert_equals(document.getElementsByTagName(&quot;input&quot;)[2].min, &quot;2011-12-01T12:00Z&quot;)}, &quot;[datetime] The min attribute must have a value that is a valid global date and time string&quot;, {
</del><ins>+    test(function() {assert_equals(document.getElementsByTagName(&quot;input&quot;)[2].min, &quot;2011-12-01T12:00&quot;)}, &quot;[datetime-local] The min attribute must have a value that is a valid local date and time string&quot;, {
</ins><span class="cx">       &quot;help&quot; : &quot;https://html.spec.whatwg.org/multipage/#dom-input-min&quot; });
</span><del>-    test(function() {assert_equals(document.getElementsByTagName(&quot;input&quot;)[2].max, &quot;2011-12-31T22:00Z&quot;)}, &quot;[datetime] The max attribute must have a value that is a valid global date and time string&quot;, {
</del><ins>+    test(function() {assert_equals(document.getElementsByTagName(&quot;input&quot;)[2].max, &quot;2011-12-31T22:00&quot;)}, &quot;[datetime-local] The max attribute must have a value that is a valid local date and time string&quot;, {
</ins><span class="cx">       &quot;help&quot; : &quot;https://html.spec.whatwg.org/multipage/#dom-input-max&quot; });
</span><del>-    test(function() {assert_equals(document.getElementsByTagName(&quot;input&quot;)[2].step, &quot;7200&quot;)}, &quot;[datetime] The step attribute must be expressed in seconds&quot;, {
</del><ins>+    test(function() {assert_equals(document.getElementsByTagName(&quot;input&quot;)[2].step, &quot;7200&quot;)}, &quot;[datetime-local] The step attribute must be expressed in seconds&quot;, {
</ins><span class="cx">       &quot;help&quot; : &quot;https://html.spec.whatwg.org/multipage/#dom-input-step&quot; });
</span><del>-    test(function() {assert_true(typeof(document.getElementsByTagName(&quot;input&quot;)[2].stepUp) == &quot;function&quot;)}, &quot;[datetime] stepUp method support on input 'datetime' element&quot;, {
</del><ins>+    test(function() {assert_true(typeof(document.getElementsByTagName(&quot;input&quot;)[2].stepUp) == &quot;function&quot;)}, &quot;[datetime-local] stepUp method support on input 'datetime-local' element&quot;, {
</ins><span class="cx">       &quot;help&quot; : &quot;https://html.spec.whatwg.org/multipage/#dom-input-stepup&quot; });
</span><del>-    test(function() {assert_true(typeof(document.getElementsByTagName(&quot;input&quot;)[2].stepDown) == &quot;function&quot;)}, &quot;[datetime] stepDown method support on input 'datetime' element&quot;, {
</del><ins>+    test(function() {assert_true(typeof(document.getElementsByTagName(&quot;input&quot;)[2].stepDown) == &quot;function&quot;)}, &quot;[datetime-local] stepDown method support on input 'datetime-local' element&quot;, {
</ins><span class="cx">       &quot;help&quot; : &quot;https://html.spec.whatwg.org/multipage/#dom-input-stepdown&quot; });
</span><span class="cx"> 
</span><span class="cx">     test(function() {assert_equals(document.getElementsByTagName(&quot;input&quot;)[3].type, &quot;month&quot;)}, &quot;month type support on input element&quot;, {
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformstheinputelementnumberexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/number-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/number-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/number-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -20,12 +20,12 @@
</span><span class="cx"> PASS  value = Infinity 
</span><span class="cx"> PASS value = -Infinity 
</span><span class="cx"> PASS value = NaN 
</span><del>-FAIL value = 2^53+1 assert_equals: expected &quot;9007199254740992&quot; but got &quot;9007199254740993&quot;
</del><ins>+PASS value = 2^53+1 
</ins><span class="cx"> PASS value &gt;= Number.MAX_VALUE 
</span><span class="cx"> PASS value = 1e 
</span><del>-FAIL value = +1 assert_equals: expected &quot;1&quot; but got &quot;&quot;
</del><ins>+PASS value = +1 
</ins><span class="cx"> PASS value = '+' 
</span><span class="cx"> PASS value = '-' 
</span><del>-FAIL value with a leading whitespace assert_equals: expected &quot;1&quot; but got &quot;&quot;
-FAIL value = 1trailing junk assert_equals: expected &quot;1&quot; but got &quot;&quot;
</del><ins>+PASS value with a leading whitespace 
+PASS value = 1trailing junk 
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformstheinputelementnumberhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/number.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/number.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/number.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -2,7 +2,7 @@
</span><span class="cx"> &lt;meta charset=utf-8&gt;
</span><span class="cx"> &lt;title&gt;Form input type=number&lt;/title&gt;
</span><span class="cx"> &lt;link rel=&quot;author&quot; title=&quot;Denis Ah-Kang&quot; href=&quot;mailto:denis@w3.org&quot;&gt;
</span><del>-&lt;link rel=help href=&quot;https://html.spec.whatwg.org/multipage/#password-state-(type=number)&quot;&gt;
</del><ins>+&lt;link rel=help href=&quot;https://html.spec.whatwg.org/multipage/#number-state-(type=number)&quot;&gt;
</ins><span class="cx"> &lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</span><span class="lines">@@ -29,14 +29,14 @@
</span><span class="cx">     {value: &quot;Infinity&quot;, expected: &quot;&quot;, testname: &quot; value = Infinity&quot;},
</span><span class="cx">     {value: &quot;-Infinity&quot;, expected: &quot;&quot;, testname: &quot;value = -Infinity&quot;},
</span><span class="cx">     {value: &quot;NaN&quot;, expected: &quot;&quot;, testname: &quot;value = NaN&quot;},
</span><del>-    {value: &quot;9007199254740993&quot;, expected: &quot;9007199254740992&quot;, testname: &quot;value = 2^53+1&quot;},
</del><ins>+    {value: &quot;9007199254740993&quot;, expected: &quot;9007199254740993&quot;, testname: &quot;value = 2^53+1&quot;},
</ins><span class="cx">     {value: &quot;2e308&quot;, expected: &quot;&quot;, testname: &quot;value &gt;= Number.MAX_VALUE&quot;},
</span><span class="cx">     {value: &quot;1e&quot;, expected: &quot;&quot;, testname: &quot;value = 1e&quot;},
</span><del>-    {value: &quot;+1&quot;, expected: &quot;1&quot;, testname: &quot;value = +1&quot;},
</del><ins>+    {value: &quot;+1&quot;, expected: &quot;&quot;, testname: &quot;value = +1&quot;},
</ins><span class="cx">     {value: &quot;+&quot;, expected: &quot;&quot;, testname: &quot;value = '+'&quot;},
</span><span class="cx">     {value: &quot;-&quot;, expected: &quot;&quot;, testname: &quot;value = '-'&quot;},
</span><del>-    {value: &quot; 1&quot;, expected: &quot;1&quot;, testname: &quot;value with a leading whitespace&quot;},
-    {value: &quot;1trailing junk&quot;, expected: &quot;1&quot;, testname: &quot;value = 1trailing junk&quot;}
</del><ins>+    {value: &quot; 1&quot;, expected: &quot;&quot;, testname: &quot;value with a leading whitespace&quot;},
+    {value: &quot;1trailing junk&quot;, expected: &quot;&quot;, testname: &quot;value = 1trailing junk&quot;}
</ins><span class="cx">   ];
</span><span class="cx">   for (var i = 0; i &lt; numbers.length; i++) {
</span><span class="cx">     var w = numbers[i];
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformstheinputelementrangeexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/range-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/range-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/range-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -4,14 +4,14 @@
</span><span class="cx"> PASS range type support on input element 
</span><span class="cx"> PASS min attribute support on input element 
</span><span class="cx"> PASS max attribute support on input element 
</span><del>-FAIL Illegal value of min attribute assert_equals: expected &quot;0&quot; but got &quot;ab&quot;
-FAIL Illegal value of max attribute assert_equals: expected &quot;100&quot; but got &quot;f&quot;
</del><ins>+PASS Illegal value of min attribute 
+PASS Illegal value of max attribute 
</ins><span class="cx"> PASS Converting an illegal string to the default value 
</span><del>-FAIL Converting an illegal string to the default step assert_equals: expected &quot;1&quot; but got &quot;xyz&quot;
</del><ins>+PASS Illegal value of step attribute 
</ins><span class="cx"> PASS the value is set to min when a smaller value than min attribute is given 
</span><span class="cx"> PASS the value is set to max when a larger value than max attribute is given 
</span><del>-FAIL default value of min attribute in input type=range assert_equals: expected &quot;0&quot; but got &quot;&quot;
-FAIL default value of max attribute in input type=range assert_equals: expected &quot;100&quot; but got &quot;&quot;
</del><ins>+PASS default value of min attribute in input type=range 
+PASS default value of max attribute in input type=range 
</ins><span class="cx"> PASS default value when min and max attributes are given (= min plus half the difference between min and max) 
</span><span class="cx"> PASS default value with step control when both min and max attributes are given 
</span><span class="cx"> FAIL default value when both min and max attributes are given, while min &gt; max assert_equals: expected &quot;2&quot; but got &quot;51&quot;
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformstheinputelementrangehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/range.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/range.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/range.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -71,24 +71,30 @@
</span><span class="cx">         }
</span><span class="cx">       );
</span><span class="cx"> 
</span><del>-      // HTML5 spec says the default vaules of min and max attributes are 0 and 100 respectively,
-      // however, Chrome, Opera and Firefox would not give any default value at all...
</del><span class="cx">       test(
</span><span class="cx">         function() {
</span><del>-          assert_equals(document.getElementById('illegal_min_and_max').min, &quot;0&quot;)
</del><ins>+          assert_equals(document.getElementById('illegal_min_and_max').min, &quot;ab&quot;)
</ins><span class="cx">         },
</span><span class="cx">         &quot;Illegal value of min attribute&quot;,
</span><span class="cx">         {
</span><del>-          &quot;help&quot; : &quot;https://html.spec.whatwg.org/multipage/#range-state-(type=range)&quot;
</del><ins>+          &quot;help&quot; : [
+            &quot;https://html.spec.whatwg.org/multipage/#dom-input-min&quot;,
+            &quot;https://html.spec.whatwg.org/multipage/#range-state-(type=range)&quot;
+          ]
</ins><span class="cx">         }
</span><span class="cx">       );
</span><span class="cx"> 
</span><span class="cx">       test(
</span><span class="cx">         function() {
</span><del>-          assert_equals(document.getElementById('illegal_min_and_max').max, &quot;100&quot;)
</del><ins>+          assert_equals(document.getElementById('illegal_min_and_max').max, &quot;f&quot;)
</ins><span class="cx">         },
</span><span class="cx">         &quot;Illegal value of max attribute&quot;,
</span><del>-        { &quot;help&quot; : &quot;https://html.spec.whatwg.org/multipage/#range-state-(type=range)&quot; }
</del><ins>+        {
+          &quot;help&quot; : [
+            &quot;https://html.spec.whatwg.org/multipage/#dom-input-max&quot;,
+            &quot;https://html.spec.whatwg.org/multipage/#range-state-(type=range)&quot;
+          ]
+        }
</ins><span class="cx">       );
</span><span class="cx"> 
</span><span class="cx">       test(
</span><span class="lines">@@ -103,10 +109,15 @@
</span><span class="cx"> 
</span><span class="cx">       test(
</span><span class="cx">         function() {
</span><del>-          assert_equals(document.getElementById('illegal_value_and_step').step, &quot;1&quot;)
</del><ins>+          assert_equals(document.getElementById('illegal_value_and_step').step, &quot;xyz&quot;)
</ins><span class="cx">         },
</span><del>-        &quot;Converting an illegal string to the default step&quot;,
-        { &quot;help&quot; : &quot;https://html.spec.whatwg.org/multipage/#range-state-(type=range)&quot; }
</del><ins>+        &quot;Illegal value of step attribute&quot;,
+        {
+          &quot;help&quot; : [
+            &quot;https://html.spec.whatwg.org/multipage/#dom-input-step&quot;,
+            &quot;https://html.spec.whatwg.org/multipage/#range-state-(type=range)&quot;
+          ]
+        }
</ins><span class="cx">       );
</span><span class="cx"> 
</span><span class="cx">       test(
</span><span class="lines">@@ -131,7 +142,7 @@
</span><span class="cx"> 
</span><span class="cx">       test(
</span><span class="cx">         function() {
</span><del>-          assert_equals(document.getElementById('empty_attributes').min, &quot;0&quot;)
</del><ins>+          assert_equals(document.getElementById('empty_attributes').min, &quot;&quot;)
</ins><span class="cx">         },
</span><span class="cx">         &quot;default value of min attribute in input type=range&quot;,
</span><span class="cx">         { &quot;help&quot; : &quot;https://html.spec.whatwg.org/multipage/#dom-input-min&quot; }
</span><span class="lines">@@ -139,7 +150,7 @@
</span><span class="cx"> 
</span><span class="cx">       test(
</span><span class="cx">         function() {
</span><del>-          assert_equals(document.getElementById('empty_attributes').max, &quot;100&quot;)
</del><ins>+          assert_equals(document.getElementById('empty_attributes').max, &quot;&quot;)
</ins><span class="cx">         },
</span><span class="cx">         &quot;default value of max attribute in input type=range&quot;,
</span><span class="cx">         {
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformstheinputelementselectionexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/selection-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/selection-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/selection-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -14,14 +14,14 @@
</span><span class="cx"> PASS input type number should support the select() method 
</span><span class="cx"> PASS input type color should support the select() method 
</span><span class="cx"> PASS input type file should support the select() method 
</span><del>-FAIL input type hidden should not support the select() method assert_throws: function &quot;function () { input.select(); }&quot; did not throw
-FAIL input type range should not support the select() method assert_throws: function &quot;function () { input.select(); }&quot; did not throw
-FAIL input type checkbox should not support the select() method assert_throws: function &quot;function () { input.select(); }&quot; did not throw
-FAIL input type radio should not support the select() method assert_throws: function &quot;function () { input.select(); }&quot; did not throw
-FAIL input type submit should not support the select() method assert_throws: function &quot;function () { input.select(); }&quot; did not throw
-FAIL input type image should not support the select() method assert_throws: function &quot;function () { input.select(); }&quot; did not throw
-FAIL input type reset should not support the select() method assert_throws: function &quot;function () { input.select(); }&quot; did not throw
-FAIL input type button should not support the select() method assert_throws: function &quot;function () { input.select(); }&quot; did not throw
</del><ins>+FAIL input type hidden should do nothing when the select() method is called (but, not throw) Type error
+FAIL input type range should do nothing when the select() method is called (but, not throw) Type error
+FAIL input type checkbox should do nothing when the select() method is called (but, not throw) Type error
+FAIL input type radio should do nothing when the select() method is called (but, not throw) Type error
+FAIL input type submit should do nothing when the select() method is called (but, not throw) Type error
+FAIL input type image should do nothing when the select() method is called (but, not throw) Type error
+FAIL input type reset should do nothing when the select() method is called (but, not throw) Type error
+FAIL input type button should do nothing when the select() method is called (but, not throw) Type error
</ins><span class="cx"> PASS Input element programmatic selection support 1 
</span><span class="cx"> PASS input type text should support all selection attributes and methods 
</span><span class="cx"> PASS input type search should support all selection attributes and methods 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformstheinputelementselectionhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/selection.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/selection.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/selection.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -57,9 +57,18 @@
</span><span class="cx">       input.type = type;
</span><span class="cx">       assert_equals(input.type, type, &quot;the given input type is not supported&quot;);
</span><span class="cx"> 
</span><del>-      assert_throws(&quot;INVALID_STATE_ERR&quot;, function() { input.select(); });
</del><ins>+      var selectionStartBefore = input.selectionStart;
+      var selectionEndBefore = input.selectionEnd;
+      var selectionDirectionBefore = input.selectionDirection;
</ins><span class="cx"> 
</span><del>-    }, &quot;input type &quot; + type + &quot; should not support the select() method&quot;);
</del><ins>+      // Does not throw; see https://github.com/whatwg/html/issues/2275
+      input.select();
+
+      assert_equals(input.selectionStart, selectionStartBefore, &quot;selectionStart must not change&quot;);
+      assert_equals(input.selectionEnd, selectionEndBefore, &quot;selectionEnd must not change&quot;);
+      assert_equals(input.selectionDirection, selectionDirectionBefore, &quot;selectionDirection must not change&quot;);
+
+    }, &quot;input type &quot; + type + &quot; should do nothing when the select() method is called (but, not throw)&quot;);
</ins><span class="cx">   });
</span><span class="cx"> });
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformstheinputelementtime2expectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/time-2-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/time-2-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/time-2-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -13,7 +13,7 @@
</span><span class="cx"> FAIL Invalid value: minute &gt; 59. Value should be empty assert_equals: expected &quot;&quot; but got &quot;00:60:00.000&quot;
</span><span class="cx"> FAIL Invalid value: second &gt; 59. Value should be empty assert_equals: expected &quot;&quot; but got &quot;00:00:60.000&quot;
</span><span class="cx"> PASS Value &gt;= min attribute 
</span><del>-FAIL Value &lt; min attribute assert_equals: expected &quot;12:00:00.001&quot; but got &quot;12:00:00.000&quot;
</del><ins>+PASS Value &lt; min attribute 
</ins><span class="cx"> PASS Value &lt;= max attribute 
</span><del>-FAIL Value &gt; max attribute assert_equals: expected &quot;12:00:00.000&quot; but got &quot;12:00:00.001&quot;
</del><ins>+PASS Value &gt; max attribute 
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformstheinputelementtime2html"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/time-2.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/time-2.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/time-2.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -2,8 +2,8 @@
</span><span class="cx"> &lt;meta charset=utf-8&gt;
</span><span class="cx"> &lt;title&gt;Form input type=time&lt;/title&gt;
</span><span class="cx"> &lt;link rel=&quot;author&quot; title=&quot;Denis Ah-Kang&quot; href=&quot;mailto:denis@w3.org&quot;&gt;
</span><del>-&lt;link rel=help href=&quot;https://html.spec.whatwg.org/multipage/multipage/common-microsyntaxes.html#times&quot;&gt;
-&lt;link rel=help href=&quot;https://html.spec.whatwg.org/multipage/multipage/states-of-the-type-attribute.html#time-state-(type=time)&quot;&gt;
</del><ins>+&lt;link rel=help href=&quot;https://html.spec.whatwg.org/multipage/#times&quot;&gt;
+&lt;link rel=help href=&quot;https://html.spec.whatwg.org/multipage/#time-state-(type=time)&quot;&gt;
</ins><span class="cx"> &lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</span><span class="lines">@@ -23,9 +23,9 @@
</span><span class="cx">     {value: &quot;00:60:00.000&quot;, expected: &quot;&quot;, testname: &quot;Invalid value: minute &gt; 59. Value should be empty&quot;},
</span><span class="cx">     {value: &quot;00:00:60.000&quot;, expected: &quot;&quot;, testname: &quot;Invalid value: second &gt; 59. Value should be empty&quot;},
</span><span class="cx">     {value: &quot;12:00:00.001&quot;, attributes: { min: &quot;12:00:00.000&quot; }, expected: &quot;12:00:00.001&quot;, testname: &quot;Value &gt;= min attribute&quot;},
</span><del>-    {value: &quot;12:00:00.000&quot;, attributes: { min: &quot;12:00:00.001&quot; }, expected: &quot;12:00:00.001&quot;, testname: &quot;Value &lt; min attribute&quot;},
</del><ins>+    {value: &quot;12:00:00.000&quot;, attributes: { min: &quot;12:00:00.001&quot; }, expected: &quot;12:00:00.000&quot;, testname: &quot;Value &lt; min attribute&quot;},
</ins><span class="cx">     {value: &quot;12:00:00.000&quot;, attributes: { max: &quot;12:00:00.001&quot; }, expected: &quot;12:00:00.000&quot;, testname: &quot;Value &lt;= max attribute&quot;},
</span><del>-    {value: &quot;12:00:00.001&quot;, attributes: { max: &quot;12:00:00.000&quot; }, expected: &quot;12:00:00.000&quot;, testname: &quot;Value &gt; max attribute&quot;}
</del><ins>+    {value: &quot;12:00:00.001&quot;, attributes: { max: &quot;12:00:00.000&quot; }, expected: &quot;12:00:00.001&quot;, testname: &quot;Value &gt; max attribute&quot;}
</ins><span class="cx">   ];
</span><span class="cx">   for (var i = 0; i &lt; times.length; i++) {
</span><span class="cx">     var w = times[i];
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformstheinputelementtimeexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/time-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/time-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/time-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -23,12 +23,12 @@
</span><span class="cx"> FAIL stepDown on step value hour  The object is in an invalid state.
</span><span class="cx"> FAIL stepUp on step value second  The object is in an invalid state.
</span><span class="cx"> FAIL stepDown on step value second  The object is in an invalid state.
</span><del>-FAIL stepUp on step value miri second  The object is in an invalid state.
-FAIL stepDown on step value miri second  The object is in an invalid state.
-FAIL stepUp argment 2 times The object is in an invalid state.
-FAIL stepDown argment 2 times The object is in an invalid state.
</del><ins>+FAIL stepUp on step value with fractional seconds The object is in an invalid state.
+FAIL stepDown on step value with fractional seconds The object is in an invalid state.
+FAIL stepUp argument 2 times The object is in an invalid state.
+FAIL stepDown argument 2 times The object is in an invalid state.
</ins><span class="cx"> FAIL stepUp stop because it exceeds the maximum value The object is in an invalid state.
</span><del>-FAIL stepDown Stop so lower than the minimum value The object is in an invalid state.
</del><ins>+FAIL stepDown stop so lower than the minimum value The object is in an invalid state.
</ins><span class="cx"> FAIL stop at border on stepUp The object is in an invalid state.
</span><span class="cx"> FAIL stop at border on stepDown The object is in an invalid state.
</span><span class="cx"> FAIL  empty value of stepUp The object is in an invalid state.
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformstheinputelementtimehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/time.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/time.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/time.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -51,7 +51,15 @@
</span><span class="cx">   _StepTest.value = &quot;12:00&quot;;
</span><span class="cx">   _StepTest.step = &quot;&quot;;
</span><span class="cx">   _StepTest.stepUp();
</span><del>-  assert_equals(_StepTest.value,&quot;12:01&quot;);
</del><ins>+  assert_in_array(
+    _StepTest.value,
+    [
+      &quot;12:01&quot;,
+      &quot;12:01:00&quot;,
+      &quot;12:01:00.0&quot;,
+      &quot;12:01:00.00&quot;,
+      &quot;12:01:00.000&quot;],
+    &quot;a valid time string representing 1 minute after noon&quot;);
</ins><span class="cx"> } , &quot;stepUp step value empty on default step value &quot;);
</span><span class="cx"> 
</span><span class="cx"> test(function(){
</span><span class="lines">@@ -58,7 +66,15 @@
</span><span class="cx">   _StepTest.value = &quot;12:00&quot;;
</span><span class="cx">   _StepTest.step = &quot;&quot;;
</span><span class="cx">   _StepTest.stepDown();
</span><del>-  assert_equals(_StepTest.value,&quot;11:59&quot;);
</del><ins>+  assert_in_array(
+    _StepTest.value,
+    [
+      &quot;11:59&quot;,
+      &quot;11:59:00&quot;,
+      &quot;11:59:00.0&quot;,
+      &quot;11:59:00.00&quot;,
+      &quot;11:59:00.000&quot;],
+    &quot;a valid time string representing 1 minute before noon&quot;);
</ins><span class="cx"> }, &quot;stepDown step value empty default step value&quot;);
</span><span class="cx"> 
</span><span class="cx"> test(function(){
</span><span class="lines">@@ -65,13 +81,29 @@
</span><span class="cx">   _StepTest.value = &quot;12:00&quot;;
</span><span class="cx">   _StepTest.step = &quot;-600&quot;;
</span><span class="cx">   _StepTest.stepUp();
</span><del>-  assert_equals(_StepTest.value, &quot;12:01&quot;);
</del><ins>+  assert_in_array(
+    _StepTest.value,
+    [
+      &quot;12:01&quot;,
+      &quot;12:01:00&quot;,
+      &quot;12:01:00.0&quot;,
+      &quot;12:01:00.00&quot;,
+      &quot;12:01:00.000&quot;],
+    &quot;a valid time string representing 1 minute after noon&quot;);
</ins><span class="cx"> },&quot;stepUp on step value minus&quot;);
</span><span class="cx"> test(function(){
</span><span class="cx">   _StepTest.value = &quot;12:00&quot;;
</span><span class="cx">   _StepTest.step = &quot;-600&quot;;
</span><span class="cx">   _StepTest.stepDown();
</span><del>-  assert_equals(_StepTest.value, &quot;11:59&quot;);
</del><ins>+  assert_in_array(
+    _StepTest.value,
+    [
+      &quot;11:59&quot;,
+      &quot;11:59:00&quot;,
+      &quot;11:59:00.0&quot;,
+      &quot;11:59:00.00&quot;,
+      &quot;11:59:00.000&quot;],
+    &quot;a valid time string representing 1 minute before noon&quot;);
</ins><span class="cx"> },&quot;stepDown on step value minus&quot;);
</span><span class="cx"> 
</span><span class="cx"> test(function(){
</span><span class="lines">@@ -78,13 +110,29 @@
</span><span class="cx">   _StepTest.value = &quot;12:00&quot;;
</span><span class="cx">   _StepTest.step = &quot;0&quot;;
</span><span class="cx">   _StepTest.stepUp();
</span><del>-  assert_equals(_StepTest.value, &quot;12:01&quot;);
</del><ins>+  assert_in_array(
+    _StepTest.value,
+    [
+      &quot;12:01&quot;,
+      &quot;12:01:00&quot;,
+      &quot;12:01:00.0&quot;,
+      &quot;12:01:00.00&quot;,
+      &quot;12:01:00.000&quot;],
+    &quot;a valid time string representing 1 minute after noon&quot;);
</ins><span class="cx"> } , &quot;stepUp on step value zero &quot;);
</span><span class="cx"> test(function(){
</span><span class="cx">   _StepTest.value = &quot;12:00&quot;;
</span><span class="cx">   _StepTest.step = &quot;0&quot;;
</span><span class="cx">   _StepTest.stepDown();
</span><del>-  assert_equals(_StepTest.value, &quot;11:59&quot;);
</del><ins>+  assert_in_array(
+    _StepTest.value,
+    [
+      &quot;11:59&quot;,
+      &quot;11:59:00&quot;,
+      &quot;11:59:00.0&quot;,
+      &quot;11:59:00.00&quot;,
+      &quot;11:59:00.000&quot;],
+    &quot;a valid time string representing 1 minute before noon&quot;);
</ins><span class="cx"> } , &quot;stepDown on step value zero &quot;);
</span><span class="cx"> 
</span><span class="cx"> test(function(){
</span><span class="lines">@@ -91,13 +139,28 @@
</span><span class="cx">   _StepTest.value = &quot;00:00&quot;;
</span><span class="cx">   _StepTest.step = &quot;86399&quot;;
</span><span class="cx">   _StepTest.stepUp();
</span><del>-  assert_equals(_StepTest.value, &quot;23:59:59&quot;);
</del><ins>+  assert_in_array(
+    _StepTest.value,
+    [
+      &quot;23:59:59&quot;,
+      &quot;23:59:59.0&quot;,
+      &quot;23:59:59.00&quot;,
+      &quot;23:59:59.000&quot;],
+    &quot;a valid time string representing 1 second before midnight&quot;);
</ins><span class="cx"> } , &quot;stepUp on step value 24 hour&quot;);
</span><span class="cx"> test(function(){
</span><span class="cx">   _StepTest.value = &quot;23:59:59&quot;;
</span><span class="cx">   _StepTest.step = &quot;86399&quot;;
</span><span class="cx">   _StepTest.stepDown();
</span><del>-  assert_equals(_StepTest.value, &quot;00:00:00&quot;);
</del><ins>+  assert_in_array(
+    _StepTest.value,
+    [
+      &quot;00:00&quot;,
+      &quot;00:00:00&quot;,
+      &quot;00:00:00.0&quot;,
+      &quot;00:00:00.00&quot;,
+      &quot;00:00:00.000&quot;],
+    &quot;a valid time string representing midnight&quot;);
</ins><span class="cx"> } , &quot;stepDown on step value 24 hour &quot;);
</span><span class="cx"> 
</span><span class="cx"> test(function(){
</span><span class="lines">@@ -104,13 +167,29 @@
</span><span class="cx">   _StepTest.value = &quot;12:00&quot;;
</span><span class="cx">   _StepTest.step = &quot;3600&quot;;
</span><span class="cx">   _StepTest.stepUp();
</span><del>-  assert_equals(_StepTest.value, &quot;13:00&quot;);
</del><ins>+  assert_in_array(
+    _StepTest.value,
+    [
+      &quot;13:00&quot;,
+      &quot;13:00:00&quot;,
+      &quot;13:00:00.0&quot;,
+      &quot;13:00:00.00&quot;,
+      &quot;13:00:00.000&quot;],
+    &quot;a valid time string representing 1pm&quot;);
</ins><span class="cx"> } , &quot;stepUp on step value hour  &quot;);
</span><span class="cx"> test(function(){
</span><span class="cx">   _StepTest.value = &quot;12:00&quot;;
</span><span class="cx">   _StepTest.step = &quot;3600&quot;;
</span><span class="cx">   _StepTest.stepDown();
</span><del>-  assert_equals(_StepTest.value, &quot;11:00&quot;);
</del><ins>+  assert_in_array(
+    _StepTest.value,
+    [
+      &quot;11:00&quot;,
+      &quot;11:00:00&quot;,
+      &quot;11:00:00.0&quot;,
+      &quot;11:00:00.00&quot;,
+      &quot;11:00:00.000&quot;],
+    &quot;a valid time string representing 11am&quot;);
</ins><span class="cx"> } , &quot;stepDown on step value hour &quot;);
</span><span class="cx"> 
</span><span class="cx"> test(function(){
</span><span class="lines">@@ -117,13 +196,27 @@
</span><span class="cx">   _StepTest.value = &quot;12:00&quot;;
</span><span class="cx">   _StepTest.step = &quot;1&quot;;
</span><span class="cx">   _StepTest.stepUp();
</span><del>-  assert_equals(_StepTest.value, &quot;12:00:01&quot;);
</del><ins>+  assert_in_array(
+    _StepTest.value,
+    [
+      &quot;12:00:01&quot;,
+      &quot;12:00:01.0&quot;,
+      &quot;12:00:01.00&quot;,
+      &quot;12:00:01.000&quot;],
+    &quot;a valid time string representing 1 second after noon&quot;);
</ins><span class="cx"> } , &quot;stepUp on step value second &quot;);
</span><span class="cx"> test(function(){
</span><span class="cx">   _StepTest.value = &quot;12:00&quot;;
</span><span class="cx">   _StepTest.step = &quot;1&quot;;
</span><span class="cx">   _StepTest.stepDown();
</span><del>-  assert_equals(_StepTest.value, &quot;11:59:59&quot;);
</del><ins>+  assert_in_array(
+    _StepTest.value,
+    [
+      &quot;11:59:59&quot;,
+      &quot;11:59:59.0&quot;,
+      &quot;11:59:59.00&quot;,
+      &quot;11:59:59.000&quot;],
+    &quot;a valid time string representing 1 second before noon&quot;);
</ins><span class="cx"> } , &quot;stepDown on step value second &quot;);
</span><span class="cx"> 
</span><span class="cx"> test(function(){
</span><span class="lines">@@ -131,57 +224,103 @@
</span><span class="cx">   _StepTest.step = &quot;0.001&quot;;
</span><span class="cx">   _StepTest.stepUp();
</span><span class="cx">   assert_equals(_StepTest.value, &quot;12:00:00.001&quot;);
</span><del>-} , &quot;stepUp on step value miri second &quot;);
</del><ins>+} , &quot;stepUp on step value with fractional seconds&quot;);
</ins><span class="cx"> test(function(){
</span><span class="cx">   _StepTest.value = &quot;12:00&quot;;
</span><span class="cx">   _StepTest.step = &quot;0.001&quot;;
</span><span class="cx">   _StepTest.stepDown();
</span><span class="cx">   assert_equals(_StepTest.value, &quot;11:59:59.999&quot;);
</span><del>-} , &quot;stepDown on step value miri second &quot;);
</del><ins>+} , &quot;stepDown on step value with fractional seconds&quot;);
</ins><span class="cx"> 
</span><span class="cx"> test(function(){
</span><span class="cx">   _StepTest.value = &quot;13:00:00&quot;;
</span><span class="cx">   _StepTest.step = &quot;1&quot;;
</span><span class="cx">   _StepTest.stepUp(2);
</span><del>-  assert_equals(_StepTest.value, &quot;13:00:02&quot;);
-}, &quot;stepUp argment 2 times&quot;);
</del><ins>+  assert_in_array(
+    _StepTest.value,
+    [
+      &quot;13:00:02&quot;,
+      &quot;13:00:02.0&quot;,
+      &quot;13:00:02.00&quot;,
+      &quot;13:00:02.000&quot;],
+    &quot;a valid time string representing 2 seconds after 1pm&quot;);
+}, &quot;stepUp argument 2 times&quot;);
</ins><span class="cx"> test(function(){
</span><span class="cx">   _StepTest.value = &quot;13:00:00&quot;;
</span><span class="cx">   _StepTest.step = &quot;1&quot;;
</span><span class="cx">   _StepTest.stepDown(2);
</span><del>-  assert_equals(_StepTest.value, &quot;12:59:58&quot;);
-}, &quot;stepDown argment 2 times&quot;);
</del><ins>+  assert_in_array(
+    _StepTest.value,
+    [
+      &quot;12:59:58&quot;,
+      &quot;12:59:58.0&quot;,
+      &quot;12:59:58.00&quot;,
+      &quot;12:59:58.000&quot;],
+    &quot;a valid time string representing 2 seconds before 1pm&quot;);
+}, &quot;stepDown argument 2 times&quot;);
</ins><span class="cx"> 
</span><span class="cx"> test(function(){
</span><span class="cx">   _StepTest.max = &quot;15:00&quot;;
</span><ins>+  this.add_cleanup(function() { _StepTest.max = &quot;&quot;; });
</ins><span class="cx">   _StepTest.value = &quot;15:00&quot;;
</span><span class="cx">   _StepTest.stepUp();
</span><del>-  assert_equals(_StepTest.value, &quot;15:00&quot;);
-  _StepTest.max = &quot;&quot;;
</del><ins>+  assert_in_array(
+    _StepTest.value,
+    [
+      &quot;15:00&quot;,
+      &quot;15:00:00&quot;,
+      &quot;15:00:00.0&quot;,
+      &quot;15:00:00.00&quot;,
+      &quot;15:00:00.000&quot;],
+    &quot;a valid time string representing 3pm&quot;);
</ins><span class="cx"> } , &quot;stepUp stop because it exceeds the maximum value&quot;);
</span><span class="cx"> test(function(){
</span><span class="cx">   _StepTest.min = &quot;13:00&quot;;
</span><ins>+  this.add_cleanup(function() { _StepTest.min = &quot;&quot;; });
</ins><span class="cx">   _StepTest.value = &quot;13:00&quot;;
</span><span class="cx">   _StepTest.stepDown();
</span><del>-  assert_equals(_StepTest.value, &quot;13:00&quot;);
-  _StepTest.min=&quot;&quot;;
-} , &quot;stepDown Stop so lower than the minimum value&quot;);
</del><ins>+  assert_in_array(
+    _StepTest.value,
+    [
+      &quot;13:00&quot;,
+      &quot;13:00:00&quot;,
+      &quot;13:00:00.0&quot;,
+      &quot;13:00:00.00&quot;,
+      &quot;13:00:00.000&quot;],
+    &quot;a valid time string representing 1pm&quot;);
+} , &quot;stepDown stop so lower than the minimum value&quot;);
</ins><span class="cx"> 
</span><span class="cx"> test(function(){
</span><span class="cx">   _StepTest.max = &quot;15:01&quot;;
</span><ins>+  this.add_cleanup(function() { _StepTest.max = &quot;&quot;; });
</ins><span class="cx">   _StepTest.value = &quot;15:00&quot;;
</span><span class="cx">   _StepTest.step = &quot;120&quot;;
</span><span class="cx">   _StepTest.stepUp();
</span><del>-  assert_equals(_StepTest.value, &quot;15:01&quot;);
-  _StepTest.max = &quot;&quot;;
</del><ins>+  assert_in_array(
+    _StepTest.value,
+    [
+      &quot;15:01&quot;,
+      &quot;15:01:00&quot;,
+      &quot;15:01:00.0&quot;,
+      &quot;15:01:00.00&quot;,
+      &quot;15:01:00.000&quot;],
+    &quot;a valid time string representing 1 minute after 3pm&quot;);
</ins><span class="cx"> } , &quot;stop at border on stepUp&quot;);
</span><span class="cx"> test(function(){
</span><span class="cx">   _StepTest.min = &quot;12:59&quot;;
</span><ins>+  this.add_cleanup(function() { _StepTest.min = &quot;&quot;; });
</ins><span class="cx">   _StepTest.value = &quot;13:00&quot;;
</span><span class="cx">   _StepTest.step = &quot;120&quot;;
</span><span class="cx">   _StepTest.stepDown();
</span><del>-  assert_equals(_StepTest.value, &quot;12:59&quot;);
-  _StepTest.min=&quot;&quot;;
</del><ins>+  assert_in_array(
+    _StepTest.value,
+    [
+      &quot;12:59&quot;,
+      &quot;12:59:00&quot;,
+      &quot;12:59:00.0&quot;,
+      &quot;12:59:00.00&quot;,
+      &quot;12:59:00.000&quot;],
+    &quot;a valid time string representing 1 minute before 2pm&quot;);
</ins><span class="cx"> } , &quot;stop at border on stepDown&quot;);
</span><span class="cx"> 
</span><span class="cx"> test(function(){
</span><span class="lines">@@ -188,7 +327,15 @@
</span><span class="cx">   _StepTest.value = &quot;&quot;;
</span><span class="cx">   _StepTest.step = &quot;60&quot;;
</span><span class="cx">   _StepTest.stepUp();
</span><del>-  assert_equals(_StepTest.value, &quot;00:01&quot;);
</del><ins>+  assert_in_array(
+    _StepTest.value,
+    [
+      &quot;00:01&quot;,
+      &quot;00:01:00&quot;,
+      &quot;00:01:00.0&quot;,
+      &quot;00:01:00.00&quot;,
+      &quot;00:01:00.000&quot;],
+    &quot;a valid time string representing 1 minute after midnight&quot;);
</ins><span class="cx"> } , &quot; empty value of stepUp&quot;);
</span><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformstheinputelementweekexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/week-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/week-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/week-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -9,7 +9,7 @@
</span><span class="cx"> FAIL Invalid value: yearless week assert_equals: expected &quot;&quot; but got &quot;-W52&quot;
</span><span class="cx"> FAIL Invalid value: yearless week and no '-' (U+002D) assert_equals: expected &quot;&quot; but got &quot;W52&quot;
</span><span class="cx"> PASS Value &gt;= min attribute 
</span><del>-FAIL Value &lt; min attribute assert_equals: expected &quot;2014-W02&quot; but got &quot;2014-W01&quot;
</del><ins>+PASS Value &lt; min attribute 
</ins><span class="cx"> PASS Value &lt;= max attribute 
</span><del>-FAIL Value &gt; max attribute assert_equals: expected &quot;2014-W11&quot; but got &quot;2014-W12&quot;
</del><ins>+PASS Value &gt; max attribute 
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformstheinputelementweekhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/week.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/week.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/week.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -19,9 +19,9 @@
</span><span class="cx">     {value: &quot;-W52&quot;, expected: &quot;&quot;, testname: &quot;Invalid value: yearless week&quot;},
</span><span class="cx">     {value: &quot;W52&quot;, expected: &quot;&quot;, testname: &quot;Invalid value: yearless week and no '-' (U+002D)&quot;},
</span><span class="cx">     {value: &quot;2014-W03&quot;, attributes: { min: &quot;2014-W02&quot; }, expected: &quot;2014-W03&quot;, testname: &quot;Value &gt;= min attribute&quot;},
</span><del>-    {value: &quot;2014-W01&quot;, attributes: { min: &quot;2014-W02&quot; }, expected: &quot;2014-W02&quot;, testname: &quot;Value &lt; min attribute&quot;},
</del><ins>+    {value: &quot;2014-W01&quot;, attributes: { min: &quot;2014-W02&quot; }, expected: &quot;2014-W01&quot;, testname: &quot;Value &lt; min attribute&quot;},
</ins><span class="cx">     {value: &quot;2014-W10&quot;, attributes: { max: &quot;2014-W11&quot; }, expected: &quot;2014-W10&quot;, testname: &quot;Value &lt;= max attribute&quot;},
</span><del>-    {value: &quot;2014-W12&quot;, attributes: { max: &quot;2014-W11&quot; }, expected: &quot;2014-W11&quot;, testname: &quot;Value &gt; max attribute&quot;}
</del><ins>+    {value: &quot;2014-W12&quot;, attributes: { max: &quot;2014-W11&quot; }, expected: &quot;2014-W12&quot;, testname: &quot;Value &gt; max attribute&quot;}
</ins><span class="cx">   ];
</span><span class="cx">   for (var i = 0; i &lt; weeks.length; i++) {
</span><span class="cx">     var w = weeks[i];
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsgroupingcontentthelielementgroupinglireftestlistownermenuexpectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-list-owner-menu-expected.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-list-owner-menu-expected.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-list-owner-menu-expected.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,46 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;list owner is calculated to be narest ancestor menu if it exists&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Domenic Denicola&quot; href=&quot;mailto:d@domenic.me&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://html.spec.whatwg.org/multipage/semantics.html#ordinal-value&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://html.spec.whatwg.org/multipage/semantics.html#list-owner&quot;&gt;
+
+&lt;p&gt;This test matches if the list displays similar to the following&lt;/p&gt;
+
+&lt;pre&gt;1. A
+2. B
+3. C
+4. D
+5. E
+     1. F
+     2. G
+6. H
+     1. I
+     2. J
+          1. K
+          2. L&lt;/pre&gt;
+
+&lt;hr&gt;
+
+&lt;ol&gt;
+  &lt;li value=&quot;1&quot;&gt;A&lt;/li&gt;
+  &lt;li value=&quot;2&quot;&gt;B&lt;/li&gt;
+  &lt;li value=&quot;3&quot;&gt;C&lt;/li&gt;
+  &lt;li value=&quot;4&quot;&gt;D&lt;/li&gt;
+  &lt;li value=&quot;5&quot;&gt;E&lt;/li&gt;
+  &lt;ol&gt;
+    &lt;li value=&quot;1&quot;&gt;F&lt;/li&gt;
+    &lt;li value=&quot;2&quot;&gt;G&lt;/li&gt;
+  &lt;/ol&gt;
+  &lt;li value=&quot;6&quot;&gt;H&lt;/li&gt;
+  &lt;ol&gt;
+    &lt;li value=&quot;1&quot;&gt;I&lt;/li&gt;
+    &lt;li value=&quot;2&quot;&gt;
+      J
+      &lt;ol&gt;
+        &lt;li value=&quot;1&quot;&gt;K&lt;/li&gt;
+        &lt;li value=&quot;2&quot;&gt;L&lt;/li&gt;
+      &lt;/ol&gt;
+    &lt;/li&gt;
+  &lt;/ol&gt;
+&lt;/ol&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsgroupingcontentthelielementgroupinglireftestlistownermenuhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-list-owner-menu.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-list-owner-menu.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-list-owner-menu.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,58 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;list owner is calculated to be narest ancestor menu if it exists&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Domenic Denicola&quot; href=&quot;mailto:d@domenic.me&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://html.spec.whatwg.org/multipage/semantics.html#ordinal-value&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://html.spec.whatwg.org/multipage/semantics.html#list-owner&quot;&gt;
+
+&lt;link rel=&quot;match&quot; href=&quot;grouping-li-reftest-list-owner-menu-ref.html&quot;&gt;
+
+&lt;style&gt;
+  li {
+    list-style-type: decimal;
+  }
+&lt;/style&gt;
+
+&lt;p&gt;This test matches if the list displays similar to the following&lt;/p&gt;
+
+&lt;pre&gt;1. A
+2. B
+3. C
+4. D
+5. E
+     1. F
+     2. G
+6. H
+     1. I
+     2. J
+          1. K
+          2. L&lt;/pre&gt;
+
+&lt;hr&gt;
+
+&lt;menu&gt;
+  &lt;li&gt;A&lt;/li&gt;
+  &lt;li&gt;B&lt;/li&gt;
+  &lt;div&gt;
+    &lt;li&gt;C&lt;/li&gt;
+    &lt;span&gt;
+      &lt;li&gt;D&lt;/li&gt;
+      &lt;li&gt;E&lt;/li&gt;
+    &lt;/span&gt;
+    &lt;menu&gt;
+      &lt;li&gt;F&lt;/li&gt;
+      &lt;li&gt;G&lt;/li&gt;
+    &lt;/menu&gt;
+  &lt;/div&gt;
+  &lt;li&gt;H&lt;/li&gt;
+  &lt;menu&gt;
+    &lt;li&gt;I&lt;/li&gt;
+    &lt;li&gt;
+      J
+      &lt;menu&gt;
+        &lt;li&gt;K&lt;/li&gt;
+        &lt;li&gt;L&lt;/li&gt;
+      &lt;/menu&gt;
+    &lt;/li&gt;
+  &lt;/menu&gt;
+&lt;/menu&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsgroupingcontentthelielementgroupinglireftestlistownerskipnoboxesexpectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-list-owner-skip-no-boxes-expected.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-list-owner-skip-no-boxes-expected.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-list-owner-skip-no-boxes-expected.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,42 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;list owner calculation skips elements that do not generate layout boxes&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Domenic Denicola&quot; href=&quot;mailto:d@domenic.me&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://html.spec.whatwg.org/multipage/semantics.html#ordinal-value&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://html.spec.whatwg.org/multipage/semantics.html#list-owner&quot;&gt;
+
+&lt;p&gt;This test matches if the list displays similar to the following&lt;/p&gt;
+
+&lt;pre&gt;1. A
+2. B
+3. C
+4. D
+5. E
+6. F
+7. G
+8. H
+9. I
+10. J
+     1. K
+     2. L&lt;/pre&gt;
+
+&lt;hr&gt;
+
+&lt;ol&gt;
+  &lt;li value=&quot;1&quot;&gt;A&lt;/li&gt;
+  &lt;li value=&quot;2&quot;&gt;B&lt;/li&gt;
+  &lt;li value=&quot;3&quot;&gt;C&lt;/li&gt;
+  &lt;li value=&quot;4&quot;&gt;D&lt;/li&gt;
+  &lt;li value=&quot;5&quot;&gt;E&lt;/li&gt;
+  &lt;li value=&quot;6&quot;&gt;F&lt;/li&gt;
+  &lt;li value=&quot;7&quot;&gt;G&lt;/li&gt;
+  &lt;li value=&quot;8&quot;&gt;H&lt;/li&gt;
+  &lt;li value=&quot;9&quot;&gt;I&lt;/li&gt;
+  &lt;li value=&quot;10&quot;&gt;
+    J
+    &lt;ol&gt;
+      &lt;li value=&quot;1&quot;&gt;K&lt;/li&gt;
+      &lt;li value=&quot;2&quot;&gt;L&lt;/li&gt;
+    &lt;/ol&gt;
+  &lt;/li&gt;
+&lt;/ol&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsgroupingcontentthelielementgroupinglireftestlistownerskipnoboxeshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-list-owner-skip-no-boxes.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-list-owner-skip-no-boxes.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-list-owner-skip-no-boxes.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,52 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;list owner calculation skips elements that do not generate layout boxes&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Domenic Denicola&quot; href=&quot;mailto:d@domenic.me&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://html.spec.whatwg.org/multipage/semantics.html#ordinal-value&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://html.spec.whatwg.org/multipage/semantics.html#list-owner&quot;&gt;
+
+&lt;link rel=&quot;match&quot; href=&quot;grouping-li-reftest-list-owner-skip-no-boxes-ref.html&quot;&gt;
+
+&lt;p&gt;This test matches if the list displays similar to the following&lt;/p&gt;
+
+&lt;pre&gt;1. A
+2. B
+3. C
+4. D
+5. E
+6. F
+7. G
+8. H
+9. I
+10. J
+     1. K
+     2. L&lt;/pre&gt;
+
+&lt;hr&gt;
+
+&lt;ol&gt;
+  &lt;li&gt;A&lt;/li&gt;
+  &lt;li&gt;B&lt;/li&gt;
+  &lt;div&gt;
+    &lt;li&gt;C&lt;/li&gt;
+    &lt;span&gt;
+      &lt;li&gt;D&lt;/li&gt;
+      &lt;li&gt;E&lt;/li&gt;
+    &lt;/span&gt;
+    &lt;ol style=&quot;display: contents;&quot;&gt;
+      &lt;li&gt;F&lt;/li&gt;
+      &lt;li&gt;G&lt;/li&gt;
+    &lt;/ol&gt;
+  &lt;/div&gt;
+  &lt;li&gt;H&lt;/li&gt;
+  &lt;ol style=&quot;display: contents;&quot;&gt;
+    &lt;li&gt;I&lt;/li&gt;
+    &lt;li&gt;
+      J
+      &lt;ol&gt;
+        &lt;li&gt;K&lt;/li&gt;
+        &lt;li&gt;L&lt;/li&gt;
+      &lt;/ol&gt;
+    &lt;/li&gt;
+  &lt;/ol&gt;
+&lt;/ol&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsgroupingcontentthelielementw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/grouping-content/the-li-element/w3c-import.log (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/grouping-content/the-li-element/w3c-import.log        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/grouping-content/the-li-element/w3c-import.log        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -35,8 +35,6 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-list-owner-skip-no-boxes.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-list-owner-ul-expected.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-list-owner-ul.html
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-no-list-owner-expected.html
-/LayoutTests/imported/w3c/web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-no-list-owner.html
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-not-being-rendered-expected.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-not-being-rendered.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li.html
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticslinkslinktypesalternateimportcss"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/links/linktypes/alternate-import.css (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/links/linktypes/alternate-import.css                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/links/linktypes/alternate-import.css        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+body {
+    background-color: black;
+}
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticslinkslinktypesalternatecss"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/links/linktypes/alternate.css (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/links/linktypes/alternate.css        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/links/linktypes/alternate.css        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,3 +1,5 @@
</span><ins>+@import url(&quot;alternate-import.css&quot;);
+
</ins><span class="cx"> div {
</span><span class="cx">     background-color: red;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticslinkslinktypesw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/links/linktypes/w3c-import.log (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/links/linktypes/w3c-import.log        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/links/linktypes/w3c-import.log        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -17,6 +17,7 @@
</span><span class="cx"> List of files:
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/links/linktypes/alternate-css-expected.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/links/linktypes/alternate-css.html
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/html/semantics/links/linktypes/alternate-import.css
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/links/linktypes/alternate.css
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/links/linktypes/contains.json
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/links/linktypes/original-id.json
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsscripting1thescriptelementnomodulereflectexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-reflect-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-reflect-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-reflect-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+
+PASS noModule IDL attribute on a parser created classic script element without nomodule content attribute 
+PASS noModule IDL attribute on a parser created classic script element with nomodule content attribute 
+PASS noModule IDL attribute on a parser created module script element without nomodule content attribute 
+PASS noModule IDL attribute on a parser created module script element with nomodule content attribute 
+PASS noModule IDL attribute on a dynamically created script element without nomodule content attribute 
+PASS noModule IDL attribute on a dynamically created script element after nomodule content attribute is set to &quot;nomodule&quot; 
+PASS noModule IDL attribute on a dynamically created script element after nomodule content attribute is set to &quot;&quot; 
+PASS noModule IDL attribute on a dynamically created script element after nomodule content attribute had been removed 
+PASS noModule IDL attribute must add nomodule content attribute on setting to true 
+PASS noModule IDL attribute must remove nomodule content attribute on setting to false 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsscripting1thescriptelementnomodulereflecthtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-reflect.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-reflect.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-reflect.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,75 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;noModule IDL attribute must reflect nomodule content attribute&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Yusuke Suzuki&quot; href=&quot;mailto:utatane.tea@gmail.com&quot;&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Ryosuke Niwa&quot; href=&quot;mailto:rniwa@webkit.org&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;script id=&quot;classicWithoutNomodule&quot;&gt;&lt;/script&gt;
+&lt;script id=&quot;classicWithNomodule&quot; nomodule&gt;&lt;/script&gt;
+&lt;script id=&quot;moduleWithoutNomodule&quot; type=module&gt;&lt;/script&gt;
+&lt;script id=&quot;moduleWithNomodule&quot; type=module nomodule&gt;&lt;/script&gt;
+&lt;script&gt;
+
+test(() =&gt; {
+    assert_false(document.getElementById('classicWithoutNomodule').noModule);
+}, 'noModule IDL attribute on a parser created classic script element without nomodule content attribute');
+
+test(() =&gt; {
+    assert_true(document.getElementById('classicWithNomodule').noModule);
+}, 'noModule IDL attribute on a parser created classic script element with nomodule content attribute');
+
+test(() =&gt; {
+    assert_false(document.getElementById('moduleWithoutNomodule').noModule);
+}, 'noModule IDL attribute on a parser created module script element without nomodule content attribute');
+
+test(() =&gt; {
+    assert_true(document.getElementById('moduleWithNomodule').noModule);
+}, 'noModule IDL attribute on a parser created module script element with nomodule content attribute');
+
+
+test(() =&gt; {
+    const script = document.createElement('script');
+    assert_false(script.noModule);
+}, 'noModule IDL attribute on a dynamically created script element without nomodule content attribute');
+
+test(() =&gt; {
+    const script = document.createElement('script');
+    script.setAttribute('nomodule', 'nomodule');
+    assert_true(script.noModule);
+}, 'noModule IDL attribute on a dynamically created script element after nomodule content attribute is set to &quot;nomodule&quot;');
+
+test(() =&gt; {
+    const script = document.createElement('script');
+    script.setAttribute('nomodule', '');
+    assert_true(script.noModule);
+}, 'noModule IDL attribute on a dynamically created script element after nomodule content attribute is set to &quot;&quot;');
+
+test(() =&gt; {
+    const script = document.createElement('script');
+    script.setAttribute('nomodule', 'nomodule');
+    assert_true(script.noModule);
+    script.removeAttribute('nomodule');
+    assert_false(script.noModule);
+}, 'noModule IDL attribute on a dynamically created script element after nomodule content attribute had been removed');
+
+test(() =&gt; {
+    const script = document.createElement('script');
+    assert_false(script.hasAttribute('nomodule'));
+    script.noModule = true;
+    assert_true(script.hasAttribute('nomodule'));
+}, 'noModule IDL attribute must add nomodule content attribute on setting to true');
+
+test(() =&gt; {
+    const script = document.createElement('script');
+    script.setAttribute('nomodule', 'nomodule');
+    script.noModule = false;
+    assert_false(script.hasAttribute('nomodule'));
+}, 'noModule IDL attribute must remove nomodule content attribute on setting to false');
+
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsscripting1thescriptelementnomodulesetonasyncclassicscriptexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-async-classic-script-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-async-classic-script-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-async-classic-script-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+PASS An asynchronously loaded classic script with noModule set to false must run 
+PASS An asynchronously loaded classic script with noModule set to true must not run 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsscripting1thescriptelementnomodulesetonasyncclassicscripthtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-async-classic-script.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-async-classic-script.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-async-classic-script.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,66 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;External classic scripts with nomodule content attribute must not run&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Yusuke Suzuki&quot; href=&quot;mailto:utatane.tea@gmail.com&quot;&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Ryosuke Niwa&quot; href=&quot;mailto:rniwa@webkit.org&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;!--  Load this script synchronously to ensure test cases below can load it in 200ms  --&gt;
+&lt;script src=&quot;resources/set-script-executed.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;script&gt;
+
+waitForLoadEvent = new Promise((resolve) =&gt; {
+    window.onload = resolve;
+});
+
+waitForAsyncScript = () =&gt; {
+    return new Promise((resolve) =&gt; {
+        waitForLoadEvent.then(() =&gt; setTimeout(resolve, 200));
+    });
+}
+
+let readyForSecondTest;
+promise_test(() =&gt; {
+    window.executed = false;
+    let loaded = false;
+    let errored = false;
+
+    let script = document.createElement('script');
+    script.src = './resources/set-script-executed.js';
+    script.onload = () =&gt; loaded = true;
+    script.onerror = () =&gt; errored = true;
+    script.noModule = false;
+    document.body.appendChild(script);
+
+    return waitForAsyncScript().then(() =&gt; {
+        assert_true(executed);
+        assert_true(loaded);
+        assert_false(errored);
+    });
+}, 'An asynchronously loaded classic script with noModule set to false must run');
+
+promise_test(() =&gt; {
+    window.executed = false;
+    let loaded = false;
+    let errored = false;
+
+    let script = document.createElement('script');
+    script.src = './resources/set-script-executed.js';
+    script.onload = () =&gt; loaded = true;
+    script.onerror = () =&gt; errored = true;
+    script.noModule = true;
+    document.body.appendChild(script);
+
+    return waitForAsyncScript().then(() =&gt; {
+        assert_false(executed);
+        assert_false(loaded);
+        assert_false(errored);
+    });
+}, 'An asynchronously loaded classic script with noModule set to true must not run');
+
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsscripting1thescriptelementnomodulesetonexternalmodulescriptexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-external-module-script-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-external-module-script-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-external-module-script-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS An external module script with nomodule content attribute must run 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsscripting1thescriptelementnomodulesetonexternalmodulescripthtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-external-module-script.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-external-module-script.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-external-module-script.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,28 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;An external module script with nomodule must run&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Yusuke Suzuki&quot; href=&quot;mailto:utatane.tea@gmail.com&quot;&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Ryosuke Niwa&quot; href=&quot;mailto:rniwa@webkit.org&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;script nomodule type=&quot;module&quot; src=&quot;./resources/exports-cocoa.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+waitForLoadEvent = new Promise((resolve) =&gt; {
+    window.onload = resolve;
+});
+
+promise_test(() =&gt; {
+    return waitForLoadEvent.then(() =&gt; {
+        assert_equals(typeof cocoa, 'undefined');
+        assert_equals(typeof exportedCocoa, 'object');
+        assert_equals(exportedCocoa.taste(), 'awesome');
+    });
+}, 'An external module script with nomodule content attribute must run');
+
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsscripting1thescriptelementnomodulesetoninlineclassicscriptsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-inline-classic-scripts-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-inline-classic-scripts-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-inline-classic-scripts-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+
+PASS An inline classic script without nomodule content attribute must run 
+PASS An inline classic script with nomodule content attribute must not run 
+PASS An inline classic script element dynamically inserted after noModule was set to false must run. 
+PASS An inline classic script element dynamically inserted after noModule was set to true must not run. 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsscripting1thescriptelementnomodulesetoninlineclassicscriptshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-inline-classic-scripts.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-inline-classic-scripts.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-inline-classic-scripts.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,56 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;Inline classic scripts with nomodule content attribute must not run&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Yusuke Suzuki&quot; href=&quot;mailto:utatane.tea@gmail.com&quot;&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Ryosuke Niwa&quot; href=&quot;mailto:rniwa@webkit.org&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;script&gt;
+window.executed = true;
+&lt;/script&gt;
+&lt;script&gt;
+
+test(() =&gt; {
+    assert_true(executed);
+}, 'An inline classic script without nomodule content attribute must run');
+
+
+window.executed = false;
+&lt;/script&gt;
+&lt;script nomodule&gt;
+window.executed = true;
+&lt;/script&gt;
+&lt;script&gt;
+
+test(() =&gt; {
+    assert_false(executed);
+}, 'An inline classic script with nomodule content attribute must not run');
+
+&lt;/script&gt;
+&lt;script&gt;
+
+test(() =&gt; {
+    window.executed = false;
+    const element = document.createElement(&quot;script&quot;);
+    element.noModule = false;
+    element.textContent = `window.executed = true`;
+    document.body.appendChild(element);
+    assert_true(window.executed);
+}, 'An inline classic script element dynamically inserted after noModule was set to false must run.');
+
+test(() =&gt; {
+    window.executed = false;
+    const element = document.createElement(&quot;script&quot;);
+    element.noModule = true;
+    element.textContent = `window.executed = true`;
+    document.body.appendChild(element);
+    assert_false(window.executed);
+}, 'An inline classic script element dynamically inserted after noModule was set to true must not run.');
+
+window.executed = false;
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsscripting1thescriptelementnomodulesetoninlinemodulescriptexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-inline-module-script-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-inline-module-script-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-inline-module-script-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS An inline module script with nomodule content attribute must run 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsscripting1thescriptelementnomodulesetoninlinemodulescripthtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-inline-module-script.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-inline-module-script.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-inline-module-script.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,32 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;An inline module script with nomodule must run&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Yusuke Suzuki&quot; href=&quot;mailto:utatane.tea@gmail.com&quot;&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Ryosuke Niwa&quot; href=&quot;mailto:rniwa@webkit.org&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;script nomodule type=&quot;module&quot;&gt;
+import Cocoa from &quot;./resources/cocoa-module.js&quot;;
+var cocoa = new Cocoa();
+window.exportedCocoa = cocoa;
+&lt;/script&gt;
+&lt;script&gt;
+
+waitForLoadEvent = new Promise((resolve) =&gt; {
+    window.onload = resolve;
+});
+
+promise_test(() =&gt; {
+    return waitForLoadEvent.then(() =&gt; {
+        assert_equals(typeof cocoa, 'undefined');
+        assert_equals(typeof exportedCocoa, 'object');
+        assert_equals(exportedCocoa.taste(), 'awesome');
+    });
+}, 'An inline module script with nomodule content attribute must run');
+
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsscripting1thescriptelementnomodulesetonsynchronouslyloadedclassicscriptsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-synchronously-loaded-classic-scripts-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-synchronously-loaded-classic-scripts-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-synchronously-loaded-classic-scripts-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+PASS A synchronously loaded external classic script without nomodule content attribute must run 
+PASS A synchronously loaded external classic script with nomodule content attribute must not run 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsscripting1thescriptelementnomodulesetonsynchronouslyloadedclassicscriptshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-synchronously-loaded-classic-scripts.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-synchronously-loaded-classic-scripts.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-synchronously-loaded-classic-scripts.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,46 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;External classic scripts with nomodule content attribute must not run&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Yusuke Suzuki&quot; href=&quot;mailto:utatane.tea@gmail.com&quot;&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Ryosuke Niwa&quot; href=&quot;mailto:rniwa@webkit.org&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;script&gt;
+
+window.executed = false;
+window.loaded = false;
+window.errored = false;
+&lt;/script&gt;
+&lt;script src=&quot;./resources/set-script-executed.js&quot; onload=&quot;loaded = true&quot; onerror=&quot;errored = false&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+test(() =&gt; {
+    assert_true(executed);
+    assert_true(loaded);
+    assert_false(errored);
+}, 'A synchronously loaded external classic script without nomodule content attribute must run');
+
+window.executed = false;
+window.loaded = false;
+window.errored = false;
+&lt;/script&gt;
+&lt;script nomodule src=&quot;./resources/set-script-executed.js&quot; onload=&quot;loaded = true&quot; onerror=&quot;errored = false&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+test(() =&gt; {
+    assert_false(executed);
+    assert_false(loaded);
+    assert_false(errored);
+}, 'A synchronously loaded external classic script with nomodule content attribute must not run');
+
+
+waitForLoadEvent = new Promise((resolve) =&gt; {
+    window.onload = resolve;
+});
+
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsscripting1thescriptelementresourcescocoamodulejs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/resources/cocoa-module.js (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/resources/cocoa-module.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/resources/cocoa-module.js        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+export default class Cocoa {
+    taste() {
+        return &quot;awesome&quot;;
+    }
+};
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsscripting1thescriptelementresourcesexportscocoajs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/resources/exports-cocoa.js (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/resources/exports-cocoa.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/resources/exports-cocoa.js        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+import Cocoa from &quot;./cocoa-module.js&quot;;
+var cocoa = new Cocoa();
+window.exportedCocoa = cocoa;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsscripting1thescriptelementresourcessetscriptexecutedjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/resources/set-script-executed.js (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/resources/set-script-executed.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/resources/set-script-executed.js        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+window.executed = true;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsscripting1thescriptelementresourcesw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/resources/w3c-import.log (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/resources/w3c-import.log        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/resources/w3c-import.log        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -15,4 +15,7 @@
</span><span class="cx"> None
</span><span class="cx"> ------------------------------------------------------------------------
</span><span class="cx"> List of files:
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/resources/cocoa-module.js
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/resources/cross-origin.py
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/resources/exports-cocoa.js
+/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/resources/set-script-executed.js
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsscripting1thescriptelementw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/w3c-import.log (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/w3c-import.log        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/w3c-import.log        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -33,6 +33,12 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/historical.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/load-event.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/log.py
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-reflect.html
+/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-async-classic-script.html
+/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-external-module-script.html
+/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-inline-classic-scripts.html
+/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-inline-module-script.html
+/LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/nomodule-set-on-synchronously-loaded-classic-scripts.html
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/script-charset-01.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/script-charset-02.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/script-charset-03.html
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticstabulardatathetableelementcaptionmethodsexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/tabular-data/the-table-element/caption-methods-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/tabular-data/the-table-element/caption-methods-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/tabular-data/the-table-element/caption-methods-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -7,4 +7,8 @@
</span><span class="cx"> PASS deleteCaption method removes the first caption element child of the table element 
</span><span class="cx"> PASS deleteCaption method not remove caption that is not in html namespace 
</span><span class="cx"> PASS Setting caption rethrows exception 
</span><ins>+PASS Assigning a caption to table.caption 
+PASS Assigning null to table.caption 
+PASS Assigning a non-caption to table.caption 
+PASS Assigning a foreign caption to table.caption 
</ins><span class="cx"> caption
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticstabulardatathetableelementcaptionmethodshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/tabular-data/the-table-element/caption-methods.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/tabular-data/the-table-element/caption-methods.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/tabular-data/the-table-element/caption-methods.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,6 +1,7 @@
</span><span class="cx"> &lt;!DOCTYPE HTML&gt;
</span><span class="cx"> &lt;html&gt;
</span><span class="cx"> &lt;head&gt;
</span><ins>+  &lt;meta charset=&quot;utf-8&quot;&gt;
</ins><span class="cx">   &lt;title&gt;Creating and deleting captions&lt;/title&gt;
</span><span class="cx">   &lt;link rel=&quot;author&quot; title=&quot;Erika Navara&quot; href=&quot;mailto:edoyle@microsoft.com&quot;&gt;
</span><span class="cx">   &lt;link rel=&quot;help&quot; href=&quot;https://html.spec.whatwg.org/multipage/#the-table-element&quot; /&gt;
</span><span class="lines">@@ -38,6 +39,22 @@
</span><span class="cx">   &lt;/table&gt;
</span><span class="cx">   &lt;table id=&quot;table5&quot; style=&quot;display:none&quot;&gt;
</span><span class="cx">   &lt;/table&gt;
</span><ins>+  &lt;table id=&quot;table6&quot; style=&quot;display:none&quot;&gt;
+    &lt;caption id=&quot;caption6&quot;&gt;caption 6&lt;/caption&gt;
+    &lt;tr&gt;
+      &lt;td&gt;cell&lt;/td&gt;
+      &lt;td&gt;cell&lt;/td&gt;
+    &lt;/tr&gt;
+  &lt;/table&gt;
+  &lt;table id=&quot;table7&quot; style=&quot;display:none&quot;&gt;
+    &lt;caption id=&quot;caption7&quot;&gt;caption 7&lt;/caption&gt;
+    &lt;tbody id=&quot;tbody7&quot;&gt;
+    &lt;tr&gt;
+      &lt;td&gt;cell&lt;/td&gt;
+      &lt;td&gt;cell&lt;/td&gt;
+    &lt;/tr&gt;
+    &lt;/tbody&gt;
+  &lt;/table&gt;
</ins><span class="cx">   &lt;script&gt;
</span><span class="cx">     test(function () {
</span><span class="cx">       var table0 = document.getElementById('table0');
</span><span class="lines">@@ -48,6 +65,7 @@
</span><span class="cx">       assert_not_equals(testCaption, table0FirstNode);
</span><span class="cx">       assert_equals(testCaption, table0.firstChild);
</span><span class="cx">     }, &quot;createCaption method creates new caption if existing caption is not in html namespace&quot;)
</span><ins>+
</ins><span class="cx">     test(function () {
</span><span class="cx">       var table1 = document.getElementById('table1');
</span><span class="cx">       var testCaption = table1.createCaption();
</span><span class="lines">@@ -54,22 +72,26 @@
</span><span class="cx">       var table1FirstCaption = table1.caption;
</span><span class="cx">       assert_equals(testCaption, table1FirstCaption);
</span><span class="cx">     }, &quot;createCaption method returns the first caption element child of the table&quot;)
</span><ins>+
</ins><span class="cx">     test(function () {
</span><span class="cx">       var table2 = document.getElementById('table2');
</span><span class="cx">       var test2Caption = table2.createCaption();
</span><span class="cx">       var table2FirstNode = table2.firstChild;
</span><del>-      assert_true(test2Caption instanceof  HTMLTableCaptionElement);
</del><ins>+      assert_true(test2Caption instanceof HTMLTableCaptionElement);
</ins><span class="cx">       assert_equals(table2FirstNode, test2Caption);
</span><span class="cx">     }, &quot;createCaption method creates a new caption and inserts it as the first node of the table element&quot;)
</span><ins>+
</ins><span class="cx">     test(function () {
</span><span class="cx">       var table = document.createElement('table');
</span><span class="cx">       assert_equals(table.createCaption(), table.createCaption());
</span><span class="cx">     }, &quot;createCaption will not create new caption if one exists&quot;)
</span><ins>+
</ins><span class="cx">     test(function () {
</span><span class="cx">       var table = document.createElementNS(&quot;http://www.w3.org/1999/xhtml&quot;, &quot;foo:table&quot;)
</span><span class="cx">       var caption = table.createCaption();
</span><span class="cx">       assert_equals(caption.prefix, null);
</span><span class="cx">     }, &quot;createCaption will not copy table's prefix&quot;)
</span><ins>+
</ins><span class="cx">     test(function () {
</span><span class="cx">       var table3 = document.getElementById('table3');
</span><span class="cx">       assert_equals(table3.caption.textContent, &quot;caption 3&quot;);
</span><span class="lines">@@ -76,6 +98,7 @@
</span><span class="cx">       table3.deleteCaption();
</span><span class="cx">       assert_equals(table3.caption, null);
</span><span class="cx">     }, &quot;deleteCaption method removes the first caption element child of the table element&quot;)
</span><ins>+
</ins><span class="cx">     test(function () {
</span><span class="cx">       var table4 = document.getElementById('table4');
</span><span class="cx">       var caption = document.createElementNS(&quot;foo&quot;, &quot;caption&quot;);
</span><span class="lines">@@ -83,6 +106,7 @@
</span><span class="cx">       table4.deleteCaption();
</span><span class="cx">       assert_equals(caption.parentNode, table4);
</span><span class="cx">     }, &quot;deleteCaption method not remove caption that is not in html namespace&quot;)
</span><ins>+
</ins><span class="cx">     test(function() {
</span><span class="cx">       var table5 = document.getElementById('table5');
</span><span class="cx">       var caption = document.createElement('caption');
</span><span class="lines">@@ -95,6 +119,45 @@
</span><span class="cx"> 
</span><span class="cx">       assert_not_equals(table5.caption, caption);
</span><span class="cx">     }, &quot;Setting caption rethrows exception&quot;);
</span><ins>+
+    test(function() {
+      var table6 = document.getElementById(&quot;table6&quot;);
+      var caption = document.getElementById(&quot;caption6&quot;);
+      assert_equals(table6.caption, caption);
+
+      var newCaption = document.createElement(&quot;caption&quot;);
+      table6.caption = newCaption;
+      assert_equals(newCaption.parentNode, table6);
+      assert_equals(table6.firstChild, newCaption);
+      assert_equals(table6.caption, newCaption);
+    }, &quot;Assigning a caption to table.caption&quot;)
+
+    test(function() {
+      var table7 = document.getElementById(&quot;table7&quot;);
+      var caption = document.getElementById(&quot;caption7&quot;);
+      assert_equals(table7.caption, caption);
+
+      table7.caption = null;
+      assert_equals(caption.parentNode, null);
+      assert_equals(table7.firstElementChild, document.getElementById(&quot;tbody7&quot;));
+      assert_equals(table7.caption, null);
+    }, &quot;Assigning null to table.caption&quot;)
+
+    test(function() {
+      var table8 = document.createElement(&quot;table&quot;);
+      var caption = document.createElement(&quot;captİon&quot;);
+      assert_throws(new TypeError(), function() {
+        table8.caption = caption;
+      });
+    }, &quot;Assigning a non-caption to table.caption&quot;)
+
+    test(function() {
+      var table9 = document.createElement(&quot;table&quot;);
+      var caption = document.createElementNS(&quot;http://www.example.com&quot;, &quot;caption&quot;);
+      assert_throws(new TypeError(), function() {
+        table9.caption = caption;
+      });
+    }, &quot;Assigning a foreign caption to table.caption&quot;)
</ins><span class="cx">   &lt;/script&gt;
</span><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticstextlevelsemanticstheaelementadownloadclickexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/text-level-semantics/the-a-element/a-download-click-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/text-level-semantics/the-a-element/a-download-click-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/text-level-semantics/the-a-element/a-download-click-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+Download started.
+Downloading URL with suggested filename &quot;foo.html&quot;
+Download completed.
+Click me
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticstextlevelsemanticstheaelementadownloadclickhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/text-level-semantics/the-a-element/a-download-click.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/text-level-semantics/the-a-element/a-download-click.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/text-level-semantics/the-a-element/a-download-click.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,24 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;Clicking on an &amp;lt;a&gt; element with a download attribute must not throw an exception&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Domenic Denicola&quot; href=&quot;mailto:d@domenic.me&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://html.spec.whatwg.org/multipage/#the-a-element:activation-behaviour&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://github.com/whatwg/html/issues/2116&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;a id=&quot;blob-url&quot; download=&quot;foo.html&quot;&gt;Click me&lt;/a&gt;
+
+&lt;script&gt;
+&quot;use strict&quot;;
+
+const string = &quot;test&quot;;
+const blob = new Blob([string], { type: &quot;text/html&quot; });
+
+const link = document.querySelector(&quot;#blob-url&quot;);
+link.href = URL.createObjectURL(blob);
+
+link.click();
+
+done();
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticstextlevelsemanticstheaelementw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/text-level-semantics/the-a-element/w3c-import.log (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/text-level-semantics/the-a-element/w3c-import.log        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/text-level-semantics/the-a-element/w3c-import.log        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -15,6 +15,7 @@
</span><span class="cx"> None
</span><span class="cx"> ------------------------------------------------------------------------
</span><span class="cx"> List of files:
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/html/semantics/text-level-semantics/the-a-element/a-download-click.html
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/text-level-semantics/the-a-element/a-stringifier.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/text-level-semantics/the-a-element/a.text-getter-01.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/text-level-semantics/the-a-element/a.text-setter-01.html
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsyntaxOWNERS"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/syntax/OWNERS (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/syntax/OWNERS                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/syntax/OWNERS        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+@gsnedders
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsyntaxw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/syntax/w3c-import.log (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/syntax/w3c-import.log        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/syntax/w3c-import.log        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -15,4 +15,5 @@
</span><span class="cx"> None
</span><span class="cx"> ------------------------------------------------------------------------
</span><span class="cx"> List of files:
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/html/syntax/OWNERS
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/syntax/html-element-list.js
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlwebappapisscriptingeventsbodyexposedwindoweventhandlersexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/scripting/events/body-exposed-window-event-handlers-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/scripting/events/body-exposed-window-event-handlers-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/scripting/events/body-exposed-window-event-handlers-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,83 @@
</span><ins>+Blocked access to external URL https://code.jquery.com/jquery-1.10.2.js
+
+PASS Return null when getting the load event handler of a windowless body 
+PASS Ignore setting of load window event handlers on windowless body 
+PASS Return null when getting the resize event handler of a windowless body 
+PASS Ignore setting of resize window event handlers on windowless body 
+PASS Return null when getting the blur event handler of a windowless body 
+PASS Ignore setting of blur window event handlers on windowless body 
+PASS Return null when getting the focus event handler of a windowless body 
+PASS Ignore setting of focus window event handlers on windowless body 
+PASS Return null when getting the scroll event handler of a windowless body 
+PASS Ignore setting of scroll window event handlers on windowless body 
+FAIL Return null when getting the afterprint event handler of a windowless body assert_equals: expected (object) null but got (undefined) undefined
+FAIL Ignore setting of afterprint window event handlers on windowless body assert_equals: expected (object) null but got (function) function &quot;function () { return &quot;Handler attached to windowless element&quot;; }&quot;
+FAIL Return null when getting the beforeprint event handler of a windowless body assert_equals: expected (object) null but got (undefined) undefined
+FAIL Ignore setting of beforeprint window event handlers on windowless body assert_equals: expected (object) null but got (function) function &quot;function () { return &quot;Handler attached to windowless element&quot;; }&quot;
+PASS Return null when getting the beforeunload event handler of a windowless body 
+PASS Ignore setting of beforeunload window event handlers on windowless body 
+PASS Return null when getting the hashchange event handler of a windowless body 
+PASS Ignore setting of hashchange window event handlers on windowless body 
+PASS Return null when getting the languagechange event handler of a windowless body 
+PASS Ignore setting of languagechange window event handlers on windowless body 
+PASS Return null when getting the message event handler of a windowless body 
+PASS Ignore setting of message window event handlers on windowless body 
+PASS Return null when getting the offline event handler of a windowless body 
+PASS Ignore setting of offline window event handlers on windowless body 
+PASS Return null when getting the online event handler of a windowless body 
+PASS Ignore setting of online window event handlers on windowless body 
+PASS Return null when getting the pagehide event handler of a windowless body 
+PASS Ignore setting of pagehide window event handlers on windowless body 
+PASS Return null when getting the pageshow event handler of a windowless body 
+PASS Ignore setting of pageshow window event handlers on windowless body 
+PASS Return null when getting the popstate event handler of a windowless body 
+PASS Ignore setting of popstate window event handlers on windowless body 
+FAIL Return null when getting the rejectionhandled event handler of a windowless body assert_equals: expected (object) null but got (undefined) undefined
+FAIL Ignore setting of rejectionhandled window event handlers on windowless body assert_equals: expected (object) null but got (function) function &quot;function () { return &quot;Handler attached to windowless element&quot;; }&quot;
+PASS Return null when getting the storage event handler of a windowless body 
+PASS Ignore setting of storage window event handlers on windowless body 
+FAIL Return null when getting the unhandledrejection event handler of a windowless body assert_equals: expected (object) null but got (undefined) undefined
+FAIL Ignore setting of unhandledrejection window event handlers on windowless body assert_equals: expected (object) null but got (function) function &quot;function () { return &quot;Handler attached to windowless element&quot;; }&quot;
+PASS Return null when getting the unload event handler of a windowless body 
+PASS Ignore setting of unload window event handlers on windowless body 
+PASS Return null when getting the load event handler of a windowless frameset 
+PASS Ignore setting of load window event handlers on windowless frameset 
+PASS Return null when getting the resize event handler of a windowless frameset 
+PASS Ignore setting of resize window event handlers on windowless frameset 
+PASS Return null when getting the blur event handler of a windowless frameset 
+PASS Ignore setting of blur window event handlers on windowless frameset 
+PASS Return null when getting the focus event handler of a windowless frameset 
+PASS Ignore setting of focus window event handlers on windowless frameset 
+PASS Return null when getting the scroll event handler of a windowless frameset 
+PASS Ignore setting of scroll window event handlers on windowless frameset 
+FAIL Return null when getting the afterprint event handler of a windowless frameset assert_equals: expected (object) null but got (undefined) undefined
+FAIL Ignore setting of afterprint window event handlers on windowless frameset assert_equals: expected (object) null but got (function) function &quot;function () { return &quot;Handler attached to windowless element&quot;; }&quot;
+FAIL Return null when getting the beforeprint event handler of a windowless frameset assert_equals: expected (object) null but got (undefined) undefined
+FAIL Ignore setting of beforeprint window event handlers on windowless frameset assert_equals: expected (object) null but got (function) function &quot;function () { return &quot;Handler attached to windowless element&quot;; }&quot;
+PASS Return null when getting the beforeunload event handler of a windowless frameset 
+PASS Ignore setting of beforeunload window event handlers on windowless frameset 
+PASS Return null when getting the hashchange event handler of a windowless frameset 
+PASS Ignore setting of hashchange window event handlers on windowless frameset 
+PASS Return null when getting the languagechange event handler of a windowless frameset 
+PASS Ignore setting of languagechange window event handlers on windowless frameset 
+PASS Return null when getting the message event handler of a windowless frameset 
+PASS Ignore setting of message window event handlers on windowless frameset 
+PASS Return null when getting the offline event handler of a windowless frameset 
+PASS Ignore setting of offline window event handlers on windowless frameset 
+PASS Return null when getting the online event handler of a windowless frameset 
+PASS Ignore setting of online window event handlers on windowless frameset 
+PASS Return null when getting the pagehide event handler of a windowless frameset 
+PASS Ignore setting of pagehide window event handlers on windowless frameset 
+PASS Return null when getting the pageshow event handler of a windowless frameset 
+PASS Ignore setting of pageshow window event handlers on windowless frameset 
+PASS Return null when getting the popstate event handler of a windowless frameset 
+PASS Ignore setting of popstate window event handlers on windowless frameset 
+FAIL Return null when getting the rejectionhandled event handler of a windowless frameset assert_equals: expected (object) null but got (undefined) undefined
+FAIL Ignore setting of rejectionhandled window event handlers on windowless frameset assert_equals: expected (object) null but got (function) function &quot;function () { return &quot;Handler attached to windowless element&quot;; }&quot;
+PASS Return null when getting the storage event handler of a windowless frameset 
+PASS Ignore setting of storage window event handlers on windowless frameset 
+FAIL Return null when getting the unhandledrejection event handler of a windowless frameset assert_equals: expected (object) null but got (undefined) undefined
+FAIL Ignore setting of unhandledrejection window event handlers on windowless frameset assert_equals: expected (object) null but got (function) function &quot;function () { return &quot;Handler attached to windowless element&quot;; }&quot;
+PASS Return null when getting the unload event handler of a windowless frameset 
+PASS Ignore setting of unload window event handlers on windowless frameset 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlwebappapisscriptingeventsbodyexposedwindoweventhandlershtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/scripting/events/body-exposed-window-event-handlers.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/scripting/events/body-exposed-window-event-handlers.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/scripting/events/body-exposed-window-event-handlers.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,49 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;&lt;/title&gt;
+&lt;body&gt;&lt;/body&gt;
+&lt;script src=&quot;https://code.jquery.com/jquery-1.10.2.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+var elements = ['body', 'frameset'];
+var handlers = [
+    'load', 'resize', 'blur', 'focus', 'scroll',
+    'afterprint', 'beforeprint', 'beforeunload', 'hashchange',
+    'languagechange', 'message', 'offline', 'online', 'pagehide',
+    'pageshow', 'popstate', 'rejectionhandled', 'storage',
+    'unhandledrejection', 'unload'];
+
+elements.forEach(function (elementName) {
+  handlers.forEach(function (eventName) {
+    var handlerName = &quot;on&quot; + eventName;
+
+    test(function() {
+      var windowHandler = function () { return &quot;Handler attached to the window&quot;; };
+      window[handlerName] = windowHandler;
+
+      var d = (new DOMParser).parseFromString('', 'text/html');
+      var b = d.createElement(elementName);
+
+      assert_equals(b[handlerName], null);
+
+      window[handlerName] = null;
+    }, &quot;Return null when getting the &quot; + eventName + &quot; event handler of a windowless &quot; + elementName);
+
+    test(function() {
+      var windowHandler = function () { return &quot;Handler attached to the window&quot;; };
+      window[handlerName] = windowHandler;
+
+      var d = (new DOMParser).parseFromString('', 'text/html');
+      var b = d.createElement(elementName);
+      b[handlerName] = function() { return &quot;Handler attached to windowless element&quot;; };
+
+      assert_equals(window[handlerName], windowHandler);
+      assert_equals(b[handlerName], null);
+
+      // Clean up window event handler
+      window[handlerName] = null;
+    }, &quot;Ignore setting of &quot; + eventName + &quot; window event handlers on windowless &quot; + elementName);
+  });
+});
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlwebappapisscriptingeventseventhandlercancellationexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/scripting/events/eventhandler-cancellation-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/scripting/events/eventhandler-cancellation-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/scripting/events/eventhandler-cancellation-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+
+PASS event handler cancellation behavior 
+PASS Returning true from [object Window]'s onerror event handler while ErrorEvent is firing should cancel the event 
+PASS Returning false from [object Window]'s onerror event handler while ErrorEvent is firing should not cancel the event 
+PASS Returning &quot;&quot; from [object Window]'s onerror event handler while ErrorEvent is firing should not cancel the event 
+PASS Returning &quot;abc&quot; from [object Window]'s onerror event handler while ErrorEvent is firing should not cancel the event 
+PASS Returning [object Object] from [object Window]'s onerror event handler while ErrorEvent is firing should not cancel the event 
+PASS Returning 0 from [object Window]'s onerror event handler while ErrorEvent is firing should not cancel the event 
+PASS Returning 1 from [object Window]'s onerror event handler while ErrorEvent is firing should not cancel the event 
+PASS Returning -1 from [object Window]'s onerror event handler while ErrorEvent is firing should not cancel the event 
+PASS Returning null from [object Window]'s onerror event handler while ErrorEvent is firing should not cancel the event 
+PASS Returning undefined from [object Window]'s onerror event handler while ErrorEvent is firing should not cancel the event 
+PASS Returning 2.5 from [object Window]'s onerror event handler while ErrorEvent is firing should not cancel the event 
+PASS Returning NaN from [object Window]'s onerror event handler while ErrorEvent is firing should not cancel the event 
+PASS Returning Infinity from [object Window]'s onerror event handler while ErrorEvent is firing should not cancel the event 
+PASS Returning Symbol(Symbol.toStringTag) from [object Window]'s onerror event handler while ErrorEvent is firing should not cancel the event 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlwebappapisscriptingeventseventhandlercancellationhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/scripting/events/eventhandler-cancellation.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/scripting/events/eventhandler-cancellation.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/scripting/events/eventhandler-cancellation.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,76 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;&lt;/title&gt;
+&lt;script src=/resources/testharness.js&gt;&lt;/script&gt;
+&lt;script src=/resources/testharnessreport.js&gt;&lt;/script&gt;
+&lt;!--  A window to work with that won't trigger the harness exception detection
+     when we fire &quot;error&quot; events at it  --&gt;
+&lt;iframe style=&quot;display: none&quot;&gt;&lt;/iframe&gt;
+&lt;script&gt;
+  test(function() {
+    var blob = new Blob([&quot;&quot;]);
+    // Most targets disabled for now until
+    // https://github.com/whatwg/html/issues/2296 is sorted out.
+    var targets = [ frames[0] /*, document, document.documentElement,
+                    new Worker(URL.createObjectURL(blob) */ ];
+    // Event constructors also mostly disabled until
+    // https://github.com/whatwg/html/issues/2296 is sorted out.
+    var eventCtors = [ /* Event, */ ErrorEvent /*, MouseEvent */ ];
+    var values = [true, false, &quot;&quot;, &quot;abc&quot;, {}, 0, 1, -1, null, undefined,
+                  2.5, NaN, Infinity, Symbol.toStringTag ];
+    // Event types also mostly disabled pending
+    // https://github.com/whatwg/html/issues/2296
+    var eventTypes = [ &quot;error&quot;/*, &quot;click&quot;, &quot;load&quot;*/ ];
+
+    // Variables that keep track of which subtest we're running.
+    var curTarget;
+    var curValue;
+    var curCtor;
+    var curType;
+
+    function defaultPreventedTester(event) {
+      var expectedValue;
+      if (curTarget === frames[0] &amp;&amp;
+          curCtor === ErrorEvent &amp;&amp;
+          curValue === true &amp;&amp;
+          curType == &quot;error&quot;) {
+        expectedValue = true;
+      } else {
+        // This will need adjusting once we allow more targets and event
+        // constructors above!
+        expectedValue = false;
+      }
+      var valueRepr;
+      if (typeof curValue == &quot;string&quot;) {
+        valueRepr = '&quot;' + curValue + '&quot;';
+      } else {
+        valueRepr = String(curValue);
+      }
+      test(function() {
+        assert_equals(event.defaultPrevented, expectedValue);
+      }, &quot;Returning &quot; + valueRepr +
+         &quot; from &quot; + String(curTarget) + &quot;'s on&quot; + curType +
+         &quot; event handler while &quot; + curCtor.name +
+         &quot; is firing should&quot; +
+         (expectedValue ? &quot;&quot; : &quot; not&quot;) +
+         &quot; cancel the event&quot;);
+    }
+
+    for (curCtor of eventCtors) {
+      for (curTarget of targets) {
+        for (curType of eventTypes) {
+          for (curValue of values) {
+            // We have to make sure that defaultPreventedTester is added after
+            // our event handler.
+            curTarget[&quot;on&quot; + curType] = function() { return curValue; }
+            curTarget.addEventListener(curType, defaultPreventedTester);
+            var e = new curCtor(curType, { cancelable: true });
+            curTarget.dispatchEvent(e);
+            curTarget[&quot;on&quot; + curType] = null;
+            curTarget.removeEventListener(curType, defaultPreventedTester);
+          }
+        }
+      }
+    }
+  }, &quot;event handler cancellation behavior&quot;);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlwebappapisscriptingeventsw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/scripting/events/w3c-import.log (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/scripting/events/w3c-import.log        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/scripting/events/w3c-import.log        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -15,6 +15,7 @@
</span><span class="cx"> None
</span><span class="cx"> ------------------------------------------------------------------------
</span><span class="cx"> List of files:
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/scripting/events/body-exposed-window-event-handlers.html
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/webappapis/scripting/events/body-onload.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/webappapis/scripting/events/contains.json
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/webappapis/scripting/events/event-handler-attributes-body-window.html
</span><span class="lines">@@ -23,6 +24,7 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/webappapis/scripting/events/event-handler-onresize.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/webappapis/scripting/events/event-handler-processing-algorithm.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/webappapis/scripting/events/event-handler-spec-example.html
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/scripting/events/eventhandler-cancellation.html
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/webappapis/scripting/events/inline-event-handler-ordering.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/webappapis/scripting/events/invalid-uncompiled-raw-handler-compiled-late.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/webappapis/scripting/events/invalid-uncompiled-raw-handler-compiled-once.html
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsimagesOWNERS"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/images/OWNERS (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/images/OWNERS        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/images/OWNERS        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,2 +1,3 @@
</span><span class="cx"> @zqzhang
</span><span class="cx"> @tagawa
</span><ins>+@gsnedders
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestslintwhitelist"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/lint.whitelist (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/lint.whitelist        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/lint.whitelist        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -137,6 +137,9 @@
</span><span class="cx"> PRINT STATEMENT:check_stability.py
</span><span class="cx"> W3C-TEST.ORG:check_stability.py
</span><span class="cx"> 
</span><ins>+# Travis
+W3C-TEST.ORG:.travis.yml
+
</ins><span class="cx"> # Git submodules are not currently scanned
</span><span class="cx"> *:tools/*
</span><span class="cx"> *:resources/*
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsmediasourcemediasourcedurationexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/media-source/mediasource-duration-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/media-source/mediasource-duration-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/media-source/mediasource-duration-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,6 +1,6 @@
</span><span class="cx"> 
</span><span class="cx"> PASS Test seek starts on duration truncation below currentTime 
</span><del>-PASS Test appendBuffer completes previous seek to truncated duration 
</del><ins>+FAIL Test appendBuffer completes previous seek to truncated duration assert_true: mediaElement.seeking while seeking to truncatedDuration expected true got false
</ins><span class="cx"> PASS Test endOfStream completes previous seek to truncated duration 
</span><span class="cx"> PASS Test setting same duration multiple times does not fire duplicate durationchange 
</span><span class="cx"> PASS Test setting the duration to less than the highest starting presentation timestamp will throw 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourcetimingresourcetimingexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource-timing-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource-timing-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource-timing-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,20 +1,20 @@
</span><span class="cx"> 
</span><del>-FAIL No timeline entry for about:blank assert_less_than_equal: connectEnd &lt;= requestStart expected a number less than or equal to 0 but got 17.9
-FAIL Setting 'document.domain' does not effect same-origin checks assert_less_than_equal: connectEnd &lt;= requestStart expected a number less than or equal to 0 but got 17.9
-FAIL 'iframe (Populate cache): The initial request populates the cache (if appropriate). assert_less_than_equal: connectEnd &lt;= requestStart expected a number less than or equal to 0 but got 17.9
-FAIL 'iframe (Potentially Cached): Immediately fetch the same URL, exercising the cache hit path (if any). assert_less_than_equal: connectEnd &lt;= requestStart expected a number less than or equal to 0 but got 17.9
-FAIL 'xmlhttprequest (Populate cache): The initial request populates the cache (if appropriate). assert_less_than_equal: connectEnd &lt;= requestStart expected a number less than or equal to 0 but got 17.9
-FAIL 'xmlhttprequest (Potentially Cached): Immediately fetch the same URL, exercising the cache hit path (if any). assert_less_than_equal: connectEnd &lt;= requestStart expected a number less than or equal to 0 but got 17.9
-FAIL 'script (Populate cache): The initial request populates the cache (if appropriate). assert_less_than_equal: connectEnd &lt;= requestStart expected a number less than or equal to 0 but got 17.9
-FAIL 'script (Potentially Cached): Immediately fetch the same URL, exercising the cache hit path (if any). assert_less_than_equal: connectEnd &lt;= requestStart expected a number less than or equal to 0 but got 17.9
-FAIL 'link (Populate cache): The initial request populates the cache (if appropriate). assert_less_than_equal: connectEnd &lt;= requestStart expected a number less than or equal to 0 but got 17.9
-FAIL 'link (Potentially Cached): Immediately fetch the same URL, exercising the cache hit path (if any). assert_less_than_equal: connectEnd &lt;= requestStart expected a number less than or equal to 0 but got 17.9
-FAIL 'iframe: 1 second delay before 'responseStart', another 1 second delay before 'responseEnd'. assert_less_than_equal: connectEnd &lt;= requestStart expected a number less than or equal to 0 but got 17.9
-FAIL 'xmlhttprequest: 1 second delay before 'responseStart', another 1 second delay before 'responseEnd'. assert_less_than_equal: connectEnd &lt;= requestStart expected a number less than or equal to 0 but got 17.9
-FAIL 'script: 1 second delay before 'responseStart', another 1 second delay before 'responseEnd'. assert_less_than_equal: connectEnd &lt;= requestStart expected a number less than or equal to 0 but got 17.9
-FAIL 'link: 1 second delay before 'responseStart', another 1 second delay before 'responseEnd'. assert_less_than_equal: connectEnd &lt;= requestStart expected a number less than or equal to 0 but got 17.9
-FAIL 'iframe (Redirected): 1 second delay before 'redirectEnd', another 1 second delay before 'responseStart'. assert_less_than_equal: connectEnd &lt;= requestStart expected a number less than or equal to 0 but got 17.9
-FAIL 'xmlhttprequest (Redirected): 1 second delay before 'redirectEnd', another 1 second delay before 'responseStart'. assert_less_than_equal: connectEnd &lt;= requestStart expected a number less than or equal to 0 but got 17.9
-FAIL 'script (Redirected): 1 second delay before 'redirectEnd', another 1 second delay before 'responseStart'. assert_less_than_equal: connectEnd &lt;= requestStart expected a number less than or equal to 0 but got 17.9
-FAIL 'link (Redirected): 1 second delay before 'redirectEnd', another 1 second delay before 'responseStart'. assert_less_than_equal: connectEnd &lt;= requestStart expected a number less than or equal to 0 but got 17.9
</del><ins>+FAIL No timeline entry for about:blank assert_less_than_equal: fetchStart &lt;= domainLookupStart expected a number less than or equal to 0 but got 103.4
+FAIL Setting 'document.domain' does not effect same-origin checks assert_less_than_equal: fetchStart &lt;= domainLookupStart expected a number less than or equal to 0 but got 103.4
+FAIL 'iframe (Populate cache): The initial request populates the cache (if appropriate). assert_less_than_equal: fetchStart &lt;= domainLookupStart expected a number less than or equal to 0 but got 103.4
+FAIL 'iframe (Potentially Cached): Immediately fetch the same URL, exercising the cache hit path (if any). assert_less_than_equal: fetchStart &lt;= domainLookupStart expected a number less than or equal to 0 but got 103.4
+FAIL 'xmlhttprequest (Populate cache): The initial request populates the cache (if appropriate). assert_less_than_equal: fetchStart &lt;= domainLookupStart expected a number less than or equal to 0 but got 103.4
+FAIL 'xmlhttprequest (Potentially Cached): Immediately fetch the same URL, exercising the cache hit path (if any). assert_less_than_equal: fetchStart &lt;= domainLookupStart expected a number less than or equal to 0 but got 103.4
+FAIL 'script (Populate cache): The initial request populates the cache (if appropriate). assert_less_than_equal: fetchStart &lt;= domainLookupStart expected a number less than or equal to 0 but got 103.4
+FAIL 'script (Potentially Cached): Immediately fetch the same URL, exercising the cache hit path (if any). assert_less_than_equal: fetchStart &lt;= domainLookupStart expected a number less than or equal to 0 but got 103.4
+FAIL 'link (Populate cache): The initial request populates the cache (if appropriate). assert_less_than_equal: fetchStart &lt;= domainLookupStart expected a number less than or equal to 0 but got 103.4
+FAIL 'link (Potentially Cached): Immediately fetch the same URL, exercising the cache hit path (if any). assert_less_than_equal: fetchStart &lt;= domainLookupStart expected a number less than or equal to 0 but got 103.4
+FAIL 'iframe: 1 second delay before 'responseStart', another 1 second delay before 'responseEnd'. assert_less_than_equal: fetchStart &lt;= domainLookupStart expected a number less than or equal to 0 but got 103.4
+FAIL 'xmlhttprequest: 1 second delay before 'responseStart', another 1 second delay before 'responseEnd'. assert_less_than_equal: fetchStart &lt;= domainLookupStart expected a number less than or equal to 0 but got 103.4
+FAIL 'script: 1 second delay before 'responseStart', another 1 second delay before 'responseEnd'. assert_less_than_equal: fetchStart &lt;= domainLookupStart expected a number less than or equal to 0 but got 103.4
+FAIL 'link: 1 second delay before 'responseStart', another 1 second delay before 'responseEnd'. assert_less_than_equal: fetchStart &lt;= domainLookupStart expected a number less than or equal to 0 but got 103.4
+FAIL 'iframe (Redirected): 1 second delay before 'redirectEnd', another 1 second delay before 'responseStart'. assert_less_than_equal: fetchStart &lt;= domainLookupStart expected a number less than or equal to 0 but got 103.4
+FAIL 'xmlhttprequest (Redirected): 1 second delay before 'redirectEnd', another 1 second delay before 'responseStart'. assert_less_than_equal: fetchStart &lt;= domainLookupStart expected a number less than or equal to 0 but got 103.4
+FAIL 'script (Redirected): 1 second delay before 'redirectEnd', another 1 second delay before 'responseStart'. assert_less_than_equal: fetchStart &lt;= domainLookupStart expected a number less than or equal to 0 but got 103.4
+FAIL 'link (Redirected): 1 second delay before 'redirectEnd', another 1 second delay before 'responseStart'. assert_less_than_equal: fetchStart &lt;= domainLookupStart expected a number less than or equal to 0 but got 103.4
</ins><span class="cx"> Show details
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsshadowdomHTMLSlotElementinterfaceexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/shadow-dom/HTMLSlotElement-interface-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/shadow-dom/HTMLSlotElement-interface-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/shadow-dom/HTMLSlotElement-interface-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -10,11 +10,11 @@
</span><span class="cx"> PASS assignedNodes() must update when slot and name attributes are modified 
</span><span class="cx"> PASS assignedNodes({&quot;flattened&quot;:false}) must update when slot and name attributes are modified 
</span><span class="cx"> PASS assignedNodes({&quot;flattened&quot;:true}) must update when slot and name attributes are modified 
</span><del>-PASS assignedNodes must update when a default slot is introduced dynamically by a slot rename 
-PASS assignedNodes must update when a default slot is introduced dynamically by a slot rename 
-PASS assignedNodes must update when a default slot is introduced dynamically by a slot rename 
-PASS assignedNodes must update when slot elements are inserted or removed 
-PASS assignedNodes must update when slot elements are inserted or removed 
-PASS assignedNodes must update when slot elements are inserted or removed 
</del><ins>+PASS assignedNodes() must update when a default slot is introduced dynamically by a slot rename 
+PASS assignedNodes({&quot;flattened&quot;:false}) must update when a default slot is introduced dynamically by a slot rename 
+PASS assignedNodes({&quot;flattened&quot;:true}) must update when a default slot is introduced dynamically by a slot rename 
+PASS assignedNodes() must update when slot elements are inserted or removed 
+PASS assignedNodes({&quot;flattened&quot;:false}) must update when slot elements are inserted or removed 
+PASS assignedNodes({&quot;flattened&quot;:true}) must update when slot elements are inserted or removed 
</ins><span class="cx"> PASS assignedNodes({flatten: true}) must return the distributed nodes, and assignedNodes() and assignedNodes({flatten: false}) must returned the assigned nodes 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsshadowdomHTMLSlotElementinterfacehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/shadow-dom/HTMLSlotElement-interface.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/shadow-dom/HTMLSlotElement-interface.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/shadow-dom/HTMLSlotElement-interface.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -139,7 +139,7 @@
</span><span class="cx">         slotElement.removeAttribute('name');
</span><span class="cx">         assert_array_equals(slotElement.assignedNodes(options), [child], 'assignedNodes must be empty when there are no matching elements for the slot name');
</span><span class="cx"> 
</span><del>-    }, 'assignedNodes must update when a default slot is introduced dynamically by a slot rename');
</del><ins>+    }, 'assignedNodes(' + (options ? JSON.stringify(options) : '') + ') must update when a default slot is introduced dynamically by a slot rename');
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> testMutatingSlotName(null);
</span><span class="lines">@@ -193,7 +193,7 @@
</span><span class="cx">         assert_array_equals(secondSlotElement.assignedNodes(options), [],
</span><span class="cx">             'assignedNodes on formerly-first but now second unnamed slot element must return an empty array');
</span><span class="cx"> 
</span><del>-    }, 'assignedNodes must update when slot elements are inserted or removed');
</del><ins>+    }, 'assignedNodes(' + (options ? JSON.stringify(options) : '') + ') must update when slot elements are inserted or removed');
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> testInsertingAndRemovingSlots(null);
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsshadowdomeventinsideslottednodeexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/shadow-dom/event-inside-slotted-node-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/shadow-dom/event-inside-slotted-node-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/shadow-dom/event-inside-slotted-node-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -11,12 +11,12 @@
</span><span class="cx"> PASS Firing an event on a node with two ancestors with a detached closed and open shadow trees with an inner closed shadow tree 
</span><span class="cx"> PASS Firing an event on a node with two ancestors with a detached closed and closed shadow trees with an inner open shadow tree 
</span><span class="cx"> PASS Firing an event on a node with two ancestors with a detached closed and closed shadow trees with an inner closed shadow tree 
</span><del>-PASS Firing an event on a node with two ancestors with a detached open and open shadow trees with an inner open shadow tree 
-PASS Firing an event on a node with two ancestors with a detached open and open shadow trees with an inner closed shadow tree 
-PASS Firing an event on a node with two ancestors with a detached open and closed shadow trees with an inner open shadow tree 
-PASS Firing an event on a node with two ancestors with a detached open and closed shadow trees with an inner closed shadow tree 
-PASS Firing an event on a node with two ancestors with a detached closed and open shadow trees with an inner open shadow tree 
-PASS Firing an event on a node with two ancestors with a detached closed and open shadow trees with an inner closed shadow tree 
-PASS Firing an event on a node with two ancestors with a detached closed and closed shadow trees with an inner open shadow tree 
-PASS Firing an event on a node with two ancestors with a detached closed and closed shadow trees with an inner closed shadow tree 
</del><ins>+PASS Firing an event on a node within a open shadow tree that is itself a open shadow tree (the latter being the descendent of a host for a separate open shadow tree) 
+PASS Firing an event on a node within a closed shadow tree that is itself a open shadow tree (the latter being the descendent of a host for a separate open shadow tree) 
+PASS Firing an event on a node within a open shadow tree that is itself a closed shadow tree (the latter being the descendent of a host for a separate open shadow tree) 
+PASS Firing an event on a node within a closed shadow tree that is itself a closed shadow tree (the latter being the descendent of a host for a separate open shadow tree) 
+PASS Firing an event on a node within a open shadow tree that is itself a open shadow tree (the latter being the descendent of a host for a separate closed shadow tree) 
+PASS Firing an event on a node within a closed shadow tree that is itself a open shadow tree (the latter being the descendent of a host for a separate closed shadow tree) 
+PASS Firing an event on a node within a open shadow tree that is itself a closed shadow tree (the latter being the descendent of a host for a separate closed shadow tree) 
+PASS Firing an event on a node within a closed shadow tree that is itself a closed shadow tree (the latter being the descendent of a host for a separate closed shadow tree) 
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsshadowdomeventinsideslottednodehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/shadow-dom/event-inside-slotted-node.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/shadow-dom/event-inside-slotted-node.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/shadow-dom/event-inside-slotted-node.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -240,8 +240,8 @@
</span><span class="cx">                 assert_array_equals(log[10], [shadow.upperShadow, shadow.lowerShadow.host], 'EventPath[10] must be the upper shadow root');
</span><span class="cx">                 assert_array_equals(log[11], [shadow.upperShadow.host, shadow.lowerShadow.host], 'EventPath[11] must be the host');
</span><span class="cx"> 
</span><del>-            }, 'Firing an event on a node with two ancestors with a detached ' + outerUpperMode + ' and ' + outerLowerMode
-                + ' shadow trees with an inner ' + innerMode + ' shadow tree');
</del><ins>+            }, 'Firing an event on a node within a ' + innerMode + ' shadow tree that is itself a ' + outerLowerMode
+                + ' shadow tree (the latter being the descendent of a host for a separate ' + outerUpperMode + ' shadow tree)');
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         testEventInsideNestedShadowsUnderAnotherShadow('open', 'open', 'open');
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsshadowdomeventwithrelatedtargetexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/shadow-dom/event-with-related-target-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/shadow-dom/event-with-related-target-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/shadow-dom/event-with-related-target-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -11,10 +11,10 @@
</span><span class="cx"> PASS Firing an event at D1 with relatedNode at B1a with closed mode shadow trees 
</span><span class="cx"> PASS Firing an event at B1a with relatedNode at A1a with open mode shadow trees 
</span><span class="cx"> PASS Firing an event at B1a with relatedNode at A1a with closed mode shadow trees 
</span><del>-PASS Firing an event at B1a with relatedNode at A1a with open mode shadow trees 
-PASS Firing an event at B1a with relatedNode at A1a with closed mode shadow trees 
-PASS Firing an event at B1a with relatedNode at A1a with open mode shadow trees 
-PASS Firing an event at B1a with relatedNode at A1a with closed mode shadow trees 
-PASS Firing an event at B1a with relatedNode at A1a with open mode shadow trees 
-PASS Firing an event at B1a with relatedNode at A1a with closed mode shadow trees 
</del><ins>+PASS Firing an event at A1a with relatedNode at B1a with open mode shadow trees 
+PASS Firing an event at A1a with relatedNode at B1a with closed mode shadow trees 
+PASS Firing an event at B1a with relatedNode at A1a (detached) with open mode shadow trees 
+PASS Firing an event at B1a with relatedNode at A1a (detached) with closed mode shadow trees 
+PASS Firing an event at A1a with relatedNode at B1a (detached) with open mode shadow trees 
+PASS Firing an event at A1a with relatedNode at B1a (detached) with closed mode shadow trees 
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsshadowdomeventwithrelatedtargethtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/shadow-dom/event-with-related-target.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/shadow-dom/event-with-related-target.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/shadow-dom/event-with-related-target.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -189,7 +189,7 @@
</span><span class="cx">                 assert_array_equals(log.relatedTargets,
</span><span class="cx">                     ['B', 'B', 'B', 'B', 'B'], 'The related targets must be correct.');
</span><span class="cx"> 
</span><del>-            }, 'Firing an event at B1a with relatedNode at A1a with ' + mode + ' mode shadow trees');
</del><ins>+            }, 'Firing an event at A1a with relatedNode at B1a with ' + mode + ' mode shadow trees');
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         testEventAtA1aWithB1a('open');
</span><span class="lines">@@ -218,7 +218,7 @@
</span><span class="cx">                 assert_array_equals(log.relatedTargets,
</span><span class="cx">                     ['A1', 'A1', 'A1', 'A1', 'A1', 'A1', 'A1', 'A1', 'A1'], 'The related targets must be correct.');
</span><span class="cx"> 
</span><del>-            }, 'Firing an event at B1a with relatedNode at A1a with ' + mode + ' mode shadow trees');
</del><ins>+            }, 'Firing an event at B1a with relatedNode at A1a (detached) with ' + mode + ' mode shadow trees');
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         testEventAtB1aWithDetachedA1a('open');
</span><span class="lines">@@ -245,7 +245,7 @@
</span><span class="cx">                 assert_array_equals(log.eventPath,      ['A1a', 'A1-SR', 'A1'], 'The event path must be correct.');
</span><span class="cx">                 assert_array_equals(log.relatedTargets, ['B',   'B',     'B' ], 'The related targets must be correct.');
</span><span class="cx"> 
</span><del>-            }, 'Firing an event at B1a with relatedNode at A1a with ' + mode + ' mode shadow trees');
</del><ins>+            }, 'Firing an event at A1a with relatedNode at B1a (detached) with ' + mode + ' mode shadow trees');
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         testEventAtA1aWithDetachedB1a('open');
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsOWNERS"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/OWNERS (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/OWNERS        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/OWNERS        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -4,3 +4,4 @@
</span><span class="cx"> @youennf
</span><span class="cx"> @calvaris
</span><span class="cx"> @wanderview
</span><ins>+@ricea
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsREADMEmd"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/README.md (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/README.md                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/README.md        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,14 @@
</span><ins>+# Streams Tests
+
+The work on the streams tests is closely tracked by the specification authors, who maintain a reference implementation intended to match the spec line-by-line while passing all of these tests. See [the whatwg/streams repository for details](https://github.com/whatwg/streams/tree/master/reference-implementation). Some tests may be in that repository while the spec sections they test are still undergoing heavy churn.
+
+## Generating wrapper files
+
+Because the streams feature is supposed to work in all global contexts, each test is written as a `.js` file, and then four `.html` files are generated around it. So for example, for `count-queueing-strategy.js`, we have the wrapper files:
+
+- `count-queueing-strategy.https.html`
+- `count-queueing-strategy.dedicatedworker.html`
+- `count-queueing-strategy-sharedworker.html`
+- `count-queueing-strategy-serviceworker.html`
+
+These are generated automatically by the Node.js script in `generate-test-wrappers.js`. See it for details, and please remember to use it whenever adding new tests.
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsbytelengthqueuingstrategyexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/byte-length-queuing-strategy-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/byte-length-queuing-strategy-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/byte-length-queuing-strategy-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -6,13 +6,4 @@
</span><span class="cx"> PASS ByteLengthQueuingStrategy.prototype.size should work generically on its this and its arguments 
</span><span class="cx"> PASS ByteLengthQueuingStrategy instances have the correct properties 
</span><span class="cx"> PASS ByteLengthQueuingStrategy's highWaterMark property can be set to anything 
</span><del>-FAIL Load byte-length-queuing-strategy.js with SharedWorker assert_unreached: SharedWorker is unavailable Reached unreachable code
-FAIL Untitled undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')
-PASS Can construct a ByteLengthQueuingStrategy with a valid high water mark 
-PASS Can construct a ByteLengthQueuingStrategy with any value as its high water mark 
-PASS ByteLengthQueuingStrategy constructor behaves as expected with strange arguments 
-PASS ByteLengthQueuingStrategy size behaves as expected with strange arguments 
-PASS ByteLengthQueuingStrategy.prototype.size should work generically on its this and its arguments 
-PASS ByteLengthQueuingStrategy instances have the correct properties 
-PASS ByteLengthQueuingStrategy's highWaterMark property can be set to anything 
</del><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsbytelengthqueuingstrategydedicatedworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/byte-length-queuing-strategy.dedicatedworker-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/byte-length-queuing-strategy.dedicatedworker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/byte-length-queuing-strategy.dedicatedworker-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,9 @@
</span><ins>+
+PASS Can construct a ByteLengthQueuingStrategy with a valid high water mark 
+PASS Can construct a ByteLengthQueuingStrategy with any value as its high water mark 
+PASS ByteLengthQueuingStrategy constructor behaves as expected with strange arguments 
+PASS ByteLengthQueuingStrategy size behaves as expected with strange arguments 
+PASS ByteLengthQueuingStrategy.prototype.size should work generically on its this and its arguments 
+PASS ByteLengthQueuingStrategy instances have the correct properties 
+PASS ByteLengthQueuingStrategy's highWaterMark property can be set to anything 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsbytelengthqueuingstrategydedicatedworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/byte-length-queuing-strategy.dedicatedworker.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/byte-length-queuing-strategy.dedicatedworker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/byte-length-queuing-strategy.dedicatedworker.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;byte-length-queuing-strategy.js dedicated worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+fetch_tests_from_worker(new Worker('byte-length-queuing-strategy.js'));
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsbytelengthqueuingstrategyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/byte-length-queuing-strategy.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/byte-length-queuing-strategy.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/byte-length-queuing-strategy.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,10 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;byte-length-queuing-strategy.js browser context wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+
+
+&lt;script src=&quot;byte-length-queuing-strategy.js&quot;&gt;&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsbytelengthqueuingstrategyhttpsexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/byte-length-queuing-strategy.https-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/byte-length-queuing-strategy.https-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/byte-length-queuing-strategy.https-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,18 +0,0 @@
</span><del>-
-PASS Can construct a ByteLengthQueuingStrategy with a valid high water mark 
-PASS Can construct a ByteLengthQueuingStrategy with any value as its high water mark 
-PASS ByteLengthQueuingStrategy constructor behaves as expected with strange arguments 
-PASS ByteLengthQueuingStrategy size behaves as expected with strange arguments 
-PASS ByteLengthQueuingStrategy.prototype.size should work generically on its this and its arguments 
-PASS ByteLengthQueuingStrategy instances have the correct properties 
-PASS ByteLengthQueuingStrategy's highWaterMark property can be set to anything 
-FAIL Load byte-length-queuing-strategy.js with SharedWorker assert_unreached: SharedWorker is unavailable Reached unreachable code
-FAIL Untitled undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')
-PASS Can construct a ByteLengthQueuingStrategy with a valid high water mark 
-PASS Can construct a ByteLengthQueuingStrategy with any value as its high water mark 
-PASS ByteLengthQueuingStrategy constructor behaves as expected with strange arguments 
-PASS ByteLengthQueuingStrategy size behaves as expected with strange arguments 
-PASS ByteLengthQueuingStrategy.prototype.size should work generically on its this and its arguments 
-PASS ByteLengthQueuingStrategy instances have the correct properties 
-PASS ByteLengthQueuingStrategy's highWaterMark property can be set to anything 
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsbytelengthqueuingstrategyhttpshtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/byte-length-queuing-strategy.https.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/byte-length-queuing-strategy.https.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/byte-length-queuing-strategy.https.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,12 +0,0 @@
</span><del>-&lt;!DOCTYPE html&gt;
-&lt;meta charset=&quot;utf-8&quot;&gt;
-&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;/service-workers/service-worker/resources/test-helpers.sub.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;resources/test-initializer.js&quot;&gt;&lt;/script&gt;
-
-&lt;script src=&quot;byte-length-queuing-strategy.js&quot;&gt;&lt;/script&gt;
-&lt;script&gt;
-'use strict';
-worker_test('byte-length-queuing-strategy.js');
-&lt;/script&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsbytelengthqueuingstrategyserviceworkerhttpsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/byte-length-queuing-strategy.serviceworker.https-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/byte-length-queuing-strategy.serviceworker.https-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/byte-length-queuing-strategy.serviceworker.https-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+FAIL Service worker test setup undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsbytelengthqueuingstrategyserviceworkerhttpshtmlfromrev212201trunkLayoutTestsimportedw3cwebplatformtestsstreamsbytelengthqueuingstrategyhttpshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/byte-length-queuing-strategy.serviceworker.https.html (from rev 212201, trunk/LayoutTests/imported/w3c/web-platform-tests/streams/byte-length-queuing-strategy.https.html) (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/byte-length-queuing-strategy.serviceworker.https.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/byte-length-queuing-strategy.serviceworker.https.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;byte-length-queuing-strategy.js service worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/service-workers/service-worker/resources/test-helpers.sub.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+service_worker_test('byte-length-queuing-strategy.js', 'Service worker test setup');
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsbytelengthqueuingstrategysharedworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/byte-length-queuing-strategy.sharedworker-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/byte-length-queuing-strategy.sharedworker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/byte-length-queuing-strategy.sharedworker-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+CONSOLE MESSAGE: line 10: ReferenceError: Can't find variable: SharedWorker
+
+Harness Error (FAIL), message = ReferenceError: Can't find variable: SharedWorker
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsbytelengthqueuingstrategysharedworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/byte-length-queuing-strategy.sharedworker.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/byte-length-queuing-strategy.sharedworker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/byte-length-queuing-strategy.sharedworker.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;byte-length-queuing-strategy.js shared worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+fetch_tests_from_worker(new SharedWorker('byte-length-queuing-strategy.js'));
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamscountqueuingstrategyexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -6,13 +6,4 @@
</span><span class="cx"> PASS CountQueuingStrategy size behaves as expected with strange arguments 
</span><span class="cx"> PASS CountQueuingStrategy instances have the correct properties 
</span><span class="cx"> PASS CountQueuingStrategy's highWaterMark property can be set to anything 
</span><del>-FAIL Load count-queuing-strategy.js with SharedWorker assert_unreached: SharedWorker is unavailable Reached unreachable code
-FAIL Untitled undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')
-PASS Can construct a CountQueuingStrategy with a valid high water mark 
-PASS Can construct a CountQueuingStrategy with any value as its high water mark 
-PASS CountQueuingStrategy constructor behaves as expected with strange arguments 
-PASS CountQueuingStrategy.prototype.size should work generically on its this and its arguments 
-PASS CountQueuingStrategy size behaves as expected with strange arguments 
-PASS CountQueuingStrategy instances have the correct properties 
-PASS CountQueuingStrategy's highWaterMark property can be set to anything 
</del><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamscountqueuingstrategydedicatedworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.dedicatedworker-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.dedicatedworker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.dedicatedworker-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,9 @@
</span><ins>+
+PASS Can construct a CountQueuingStrategy with a valid high water mark 
+PASS Can construct a CountQueuingStrategy with any value as its high water mark 
+PASS CountQueuingStrategy constructor behaves as expected with strange arguments 
+PASS CountQueuingStrategy.prototype.size should work generically on its this and its arguments 
+PASS CountQueuingStrategy size behaves as expected with strange arguments 
+PASS CountQueuingStrategy instances have the correct properties 
+PASS CountQueuingStrategy's highWaterMark property can be set to anything 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamscountqueuingstrategydedicatedworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.dedicatedworker.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.dedicatedworker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.dedicatedworker.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;count-queuing-strategy.js dedicated worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+fetch_tests_from_worker(new Worker('count-queuing-strategy.js'));
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamscountqueuingstrategyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,10 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;count-queuing-strategy.js browser context wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+
+
+&lt;script src=&quot;count-queuing-strategy.js&quot;&gt;&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamscountqueuingstrategyhttpsexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.https-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.https-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.https-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,18 +0,0 @@
</span><del>-
-PASS Can construct a CountQueuingStrategy with a valid high water mark 
-PASS Can construct a CountQueuingStrategy with any value as its high water mark 
-PASS CountQueuingStrategy constructor behaves as expected with strange arguments 
-PASS CountQueuingStrategy.prototype.size should work generically on its this and its arguments 
-PASS CountQueuingStrategy size behaves as expected with strange arguments 
-PASS CountQueuingStrategy instances have the correct properties 
-PASS CountQueuingStrategy's highWaterMark property can be set to anything 
-FAIL Load count-queuing-strategy.js with SharedWorker assert_unreached: SharedWorker is unavailable Reached unreachable code
-FAIL Untitled undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')
-PASS Can construct a CountQueuingStrategy with a valid high water mark 
-PASS Can construct a CountQueuingStrategy with any value as its high water mark 
-PASS CountQueuingStrategy constructor behaves as expected with strange arguments 
-PASS CountQueuingStrategy.prototype.size should work generically on its this and its arguments 
-PASS CountQueuingStrategy size behaves as expected with strange arguments 
-PASS CountQueuingStrategy instances have the correct properties 
-PASS CountQueuingStrategy's highWaterMark property can be set to anything 
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamscountqueuingstrategyhttpshtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.https.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.https.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.https.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,12 +0,0 @@
</span><del>-&lt;!DOCTYPE html&gt;
-&lt;meta charset=&quot;utf-8&quot;&gt;
-&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;/service-workers/service-worker/resources/test-helpers.sub.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;resources/test-initializer.js&quot;&gt;&lt;/script&gt;
-
-&lt;script src=&quot;count-queuing-strategy.js&quot;&gt;&lt;/script&gt;
-&lt;script&gt;
-'use strict';
-worker_test('count-queuing-strategy.js');
-&lt;/script&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamscountqueuingstrategyserviceworkerhttpsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.serviceworker.https-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.serviceworker.https-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.serviceworker.https-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+FAIL Service worker test setup undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamscountqueuingstrategyserviceworkerhttpshtmlfromrev212201trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsreadablestreamreaderhttpshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.serviceworker.https.html (from rev 212201, trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader.https.html) (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.serviceworker.https.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.serviceworker.https.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;count-queuing-strategy.js service worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/service-workers/service-worker/resources/test-helpers.sub.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+service_worker_test('count-queuing-strategy.js', 'Service worker test setup');
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamscountqueuingstrategysharedworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.sharedworker-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.sharedworker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.sharedworker-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+CONSOLE MESSAGE: line 10: ReferenceError: Can't find variable: SharedWorker
+
+Harness Error (FAIL), message = ReferenceError: Can't find variable: SharedWorker
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamscountqueuingstrategysharedworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.sharedworker.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.sharedworker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.sharedworker.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;count-queuing-strategy.js shared worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+fetch_tests_from_worker(new SharedWorker('count-queuing-strategy.js'));
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsgeneratetestwrappersjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/generate-test-wrappers.js (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/generate-test-wrappers.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/generate-test-wrappers.js        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,102 @@
</span><ins>+&quot;use strict&quot;;
+// Usage: `node generate-test-wrappers.js js-filename1.js [js-filename2.js ...]` will generate:
+// - js-filename1.https.html
+// - js-filename1.sharedworker.html
+// - js-filename1.dedicatedworker.html
+// - js-filename1.serviceworker.html
+// (for each passed filename)
+//
+// It will turn any importScripts inside the .js file into &lt;script&gt;s in the browser context wrapper.
+//
+// This could become obsolete if all of the following happen:
+// - https://github.com/w3c/web-platform-tests/issues/4210 gets fixed, allowing .any.js to work with all four contexts
+// - We find some way to include scripts (&lt;script&gt;/importScripts) in .any.js files
+// - Chrome becomes able to run .any.js tests on its infrastructure
+//   (https://bugs.chromium.org/p/chromium/issues/detail?id=653514)
+
+const fs = require(&quot;fs&quot;);
+const path = require(&quot;path&quot;);
+
+for (const arg of process.argv.slice(2)) {
+    generateWrapper(arg);
+}
+
+function generateWrapper(jsFilename) {
+    const importedScriptFilenames = findImportedScriptFilenames(jsFilename);
+    const importedScriptTags = importedScriptFilenames
+        .map(filename =&gt; `&lt;script src=&quot;${filename}&quot;&gt;&lt;/script&gt;`)
+        .join('\n');
+
+    const basename = path.basename(jsFilename);
+    const noExtension = path.basename(jsFilename, '.js');
+
+    const outputs = {
+        '.html': `&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;${basename} browser context wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+${importedScriptTags}
+
+&lt;script src=&quot;${basename}&quot;&gt;&lt;/script&gt;
+`,
+        '.dedicatedworker.html': `&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;${basename} dedicated worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+fetch_tests_from_worker(new Worker('${basename}'));
+&lt;/script&gt;
+`,
+        '.sharedworker.html': `&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;${basename} shared worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+fetch_tests_from_worker(new SharedWorker('${basename}'));
+&lt;/script&gt;
+`,
+        '.serviceworker.https.html': `&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;${basename} service worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/service-workers/service-worker/resources/test-helpers.sub.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+service_worker_test('${basename}', 'Service worker test setup');
+&lt;/script&gt;
+`
+    };
+
+    for (const [key, value] of Object.entries(outputs)) {
+        const destFilename = path.resolve(path.dirname(jsFilename), `${noExtension}${key}`);
+        fs.writeFileSync(destFilename, value, { encoding: 'utf-8' });
+    }
+}
+
+function findImportedScriptFilenames(inputFilename) {
+    const scriptContents = fs.readFileSync(inputFilename, { encoding: 'utf-8' });
+
+    const regExp = /self\.importScripts\('([^']+)'\);/g;
+
+    let result = [];
+    let match;
+    while (match = regExp.exec(scriptContents)) {
+        result.push(match[1]);
+    }
+
+    return result.filter(x =&gt; x !== '/resources/testharness.js');
+}
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingclosepropagationbackwardexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-backward-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-backward-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-backward-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,18 @@
</span><ins>+
+FAIL Closing must be propagated backward: starts closed; preventCancel omitted; fulfilled cancel promise ws.getWriter is not a function. (In 'ws.getWriter()', 'ws.getWriter' is undefined)
+FAIL Closing must be propagated backward: starts closed; preventCancel omitted; rejected cancel promise ws.getWriter is not a function. (In 'ws.getWriter()', 'ws.getWriter' is undefined)
+FAIL Closing must be propagated backward: starts closed; preventCancel = undefined (falsy); fulfilled cancel promise ws.getWriter is not a function. (In 'ws.getWriter()', 'ws.getWriter' is undefined)
+FAIL Closing must be propagated backward: starts closed; preventCancel = null (falsy); fulfilled cancel promise ws.getWriter is not a function. (In 'ws.getWriter()', 'ws.getWriter' is undefined)
+FAIL Closing must be propagated backward: starts closed; preventCancel = false (falsy); fulfilled cancel promise ws.getWriter is not a function. (In 'ws.getWriter()', 'ws.getWriter' is undefined)
+FAIL Closing must be propagated backward: starts closed; preventCancel = 0 (falsy); fulfilled cancel promise ws.getWriter is not a function. (In 'ws.getWriter()', 'ws.getWriter' is undefined)
+FAIL Closing must be propagated backward: starts closed; preventCancel = -0 (falsy); fulfilled cancel promise ws.getWriter is not a function. (In 'ws.getWriter()', 'ws.getWriter' is undefined)
+FAIL Closing must be propagated backward: starts closed; preventCancel = NaN (falsy); fulfilled cancel promise ws.getWriter is not a function. (In 'ws.getWriter()', 'ws.getWriter' is undefined)
+FAIL Closing must be propagated backward: starts closed; preventCancel =  (falsy); fulfilled cancel promise ws.getWriter is not a function. (In 'ws.getWriter()', 'ws.getWriter' is undefined)
+FAIL Closing must be propagated backward: starts closed; preventCancel = true (truthy) ws.getWriter is not a function. (In 'ws.getWriter()', 'ws.getWriter' is undefined)
+FAIL Closing must be propagated backward: starts closed; preventCancel = a (truthy) ws.getWriter is not a function. (In 'ws.getWriter()', 'ws.getWriter' is undefined)
+FAIL Closing must be propagated backward: starts closed; preventCancel = 1 (truthy) ws.getWriter is not a function. (In 'ws.getWriter()', 'ws.getWriter' is undefined)
+FAIL Closing must be propagated backward: starts closed; preventCancel = Symbol() (truthy) ws.getWriter is not a function. (In 'ws.getWriter()', 'ws.getWriter' is undefined)
+FAIL Closing must be propagated backward: starts closed; preventCancel = [object Object] (truthy) ws.getWriter is not a function. (In 'ws.getWriter()', 'ws.getWriter' is undefined)
+FAIL Closing must be propagated backward: starts closed; preventCancel = true, preventAbort = true ws.getWriter is not a function. (In 'ws.getWriter()', 'ws.getWriter' is undefined)
+FAIL Closing must be propagated backward: starts closed; preventCancel = true, preventAbort = true, preventClose = true ws.getWriter is not a function. (In 'ws.getWriter()', 'ws.getWriter' is undefined)
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingclosepropagationbackwarddedicatedworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-backward.dedicatedworker-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-backward.dedicatedworker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-backward.dedicatedworker-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,18 @@
</span><ins>+
+FAIL Closing must be propagated backward: starts closed; preventCancel omitted; fulfilled cancel promise Can't find variable: WritableStream
+FAIL Closing must be propagated backward: starts closed; preventCancel omitted; rejected cancel promise Can't find variable: WritableStream
+FAIL Closing must be propagated backward: starts closed; preventCancel = undefined (falsy); fulfilled cancel promise Can't find variable: WritableStream
+FAIL Closing must be propagated backward: starts closed; preventCancel = null (falsy); fulfilled cancel promise Can't find variable: WritableStream
+FAIL Closing must be propagated backward: starts closed; preventCancel = false (falsy); fulfilled cancel promise Can't find variable: WritableStream
+FAIL Closing must be propagated backward: starts closed; preventCancel = 0 (falsy); fulfilled cancel promise Can't find variable: WritableStream
+FAIL Closing must be propagated backward: starts closed; preventCancel = -0 (falsy); fulfilled cancel promise Can't find variable: WritableStream
+FAIL Closing must be propagated backward: starts closed; preventCancel = NaN (falsy); fulfilled cancel promise Can't find variable: WritableStream
+FAIL Closing must be propagated backward: starts closed; preventCancel =  (falsy); fulfilled cancel promise Can't find variable: WritableStream
+FAIL Closing must be propagated backward: starts closed; preventCancel = true (truthy) Can't find variable: WritableStream
+FAIL Closing must be propagated backward: starts closed; preventCancel = a (truthy) Can't find variable: WritableStream
+FAIL Closing must be propagated backward: starts closed; preventCancel = 1 (truthy) Can't find variable: WritableStream
+FAIL Closing must be propagated backward: starts closed; preventCancel = Symbol() (truthy) Can't find variable: WritableStream
+FAIL Closing must be propagated backward: starts closed; preventCancel = [object Object] (truthy) Can't find variable: WritableStream
+FAIL Closing must be propagated backward: starts closed; preventCancel = true, preventAbort = true Can't find variable: WritableStream
+FAIL Closing must be propagated backward: starts closed; preventCancel = true, preventAbort = true, preventClose = true Can't find variable: WritableStream
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingclosepropagationbackwarddedicatedworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-backward.dedicatedworker.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-backward.dedicatedworker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-backward.dedicatedworker.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;close-propagation-backward.js dedicated worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+fetch_tests_from_worker(new Worker('close-propagation-backward.js'));
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingclosepropagationbackwardhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-backward.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-backward.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-backward.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,10 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;close-propagation-backward.js browser context wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script src=&quot;../resources/recording-streams.js&quot;&gt;&lt;/script&gt;
+
+&lt;script src=&quot;close-propagation-backward.js&quot;&gt;&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingclosepropagationbackwardjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-backward.js (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-backward.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-backward.js        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,158 @@
</span><ins>+'use strict';
+
+if (self.importScripts) {
+  self.importScripts('/resources/testharness.js');
+  self.importScripts('../resources/recording-streams.js');
+}
+
+const error1 = new Error('error1!');
+error1.name = 'error1';
+
+promise_test(() =&gt; {
+
+  const rs = recordingReadableStream();
+
+  const ws = recordingWritableStream();
+  const writer = ws.getWriter();
+  writer.close();
+  writer.releaseLock();
+
+  return rs.pipeTo(ws).then(
+    () =&gt; assert_unreached('the promise must not fulfill'),
+    err =&gt; {
+      assert_equals(err.name, 'TypeError', 'the promise must reject with a TypeError');
+
+      assert_array_equals(rs.eventsWithoutPulls, ['cancel', err]);
+      assert_array_equals(ws.events, ['close']);
+
+      return Promise.all([
+        rs.getReader().closed,
+        ws.getWriter().closed
+      ]);
+    }
+  );
+
+}, 'Closing must be propagated backward: starts closed; preventCancel omitted; fulfilled cancel promise');
+
+promise_test(t =&gt; {
+
+  // Our recording streams do not deal well with errors generated by the system, so give them some help
+  let recordedError;
+  const rs = recordingReadableStream({
+    cancel(cancelErr) {
+      recordedError = cancelErr;
+      throw error1;
+    }
+  });
+
+  const ws = recordingWritableStream();
+  const writer = ws.getWriter();
+  writer.close();
+  writer.releaseLock();
+
+  return promise_rejects(t, error1, rs.pipeTo(ws), 'pipeTo must reject with the same error').then(() =&gt; {
+    assert_equals(recordedError.name, 'TypeError', 'the cancel reason must be a TypeError');
+
+    assert_array_equals(rs.eventsWithoutPulls, ['cancel', recordedError]);
+    assert_array_equals(ws.events, ['close']);
+
+    return Promise.all([
+      rs.getReader().closed,
+      ws.getWriter().closed
+    ]);
+  });
+
+}, 'Closing must be propagated backward: starts closed; preventCancel omitted; rejected cancel promise');
+
+for (const falsy of [undefined, null, false, +0, -0, NaN, '']) {
+  const stringVersion = Object.is(falsy, -0) ? '-0' : String(falsy);
+
+  promise_test(() =&gt; {
+
+    const rs = recordingReadableStream();
+
+    const ws = recordingWritableStream();
+    const writer = ws.getWriter();
+    writer.close();
+    writer.releaseLock();
+
+    return rs.pipeTo(ws, { preventCancel: falsy }).then(
+      () =&gt; assert_unreached('the promise must not fulfill'),
+      err =&gt; {
+        assert_equals(err.name, 'TypeError', 'the promise must reject with a TypeError');
+
+        assert_array_equals(rs.eventsWithoutPulls, ['cancel', err]);
+        assert_array_equals(ws.events, ['close']);
+
+        return Promise.all([
+          rs.getReader().closed,
+          ws.getWriter().closed
+        ]);
+      }
+    );
+
+  }, `Closing must be propagated backward: starts closed; preventCancel = ${stringVersion} (falsy); fulfilled cancel ` +
+     `promise`);
+}
+
+for (const truthy of [true, 'a', 1, Symbol(), { }]) {
+  promise_test(t =&gt; {
+
+    const rs = recordingReadableStream();
+
+    const ws = recordingWritableStream();
+    const writer = ws.getWriter();
+    writer.close();
+    writer.releaseLock();
+
+    return promise_rejects(t, new TypeError(), rs.pipeTo(ws, { preventCancel: truthy })).then(() =&gt; {
+      assert_array_equals(rs.eventsWithoutPulls, []);
+      assert_array_equals(ws.events, ['close']);
+
+      return ws.getWriter().closed;
+    });
+
+  }, `Closing must be propagated backward: starts closed; preventCancel = ${String(truthy)} (truthy)`);
+}
+
+promise_test(t =&gt; {
+
+  const rs = recordingReadableStream();
+
+  const ws = recordingWritableStream();
+  const writer = ws.getWriter();
+  writer.close();
+  writer.releaseLock();
+
+  return promise_rejects(t, new TypeError(), rs.pipeTo(ws, { preventCancel: true, preventAbort: true }))
+    .then(() =&gt; {
+      assert_array_equals(rs.eventsWithoutPulls, []);
+      assert_array_equals(ws.events, ['close']);
+
+      return ws.getWriter().closed;
+    });
+
+}, 'Closing must be propagated backward: starts closed; preventCancel = true, preventAbort = true');
+
+promise_test(t =&gt; {
+
+  const rs = recordingReadableStream();
+
+  const ws = recordingWritableStream();
+  const writer = ws.getWriter();
+  writer.close();
+  writer.releaseLock();
+
+  return promise_rejects(t, new TypeError(),
+                         rs.pipeTo(ws, { preventCancel: true, preventAbort: true, preventClose: true }))
+  .then(() =&gt; {
+    assert_array_equals(rs.eventsWithoutPulls, []);
+    assert_array_equals(ws.events, ['close']);
+
+    return ws.getWriter().closed;
+  });
+
+}, 'Closing must be propagated backward: starts closed; preventCancel = true, preventAbort = true, preventClose ' +
+   '= true');
+
+done();
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingclosepropagationbackwardserviceworkerhttpsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-backward.serviceworker.https-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-backward.serviceworker.https-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-backward.serviceworker.https-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+FAIL Service worker test setup undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingclosepropagationbackwardserviceworkerhttpshtmlfromrev212201trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadunderlyingsourceshttpshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-backward.serviceworker.https.html (from rev 212201, trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.https.html) (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-backward.serviceworker.https.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-backward.serviceworker.https.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;close-propagation-backward.js service worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/service-workers/service-worker/resources/test-helpers.sub.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+service_worker_test('close-propagation-backward.js', 'Service worker test setup');
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingclosepropagationbackwardsharedworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-backward.sharedworker-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-backward.sharedworker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-backward.sharedworker-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+CONSOLE MESSAGE: line 10: ReferenceError: Can't find variable: SharedWorker
+
+Harness Error (FAIL), message = ReferenceError: Can't find variable: SharedWorker
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingclosepropagationbackwardsharedworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-backward.sharedworker.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-backward.sharedworker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-backward.sharedworker.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;close-propagation-backward.js shared worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+fetch_tests_from_worker(new SharedWorker('close-propagation-backward.js'));
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingclosepropagationforwardexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-forward-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-forward-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-forward-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,28 @@
</span><ins>+
+FAIL Closing must be propagated forward: starts closed; preventClose omitted; fulfilled close promise assert_array_equals: close must always be called with the controller lengths differ, expected 1 got 0
+FAIL Closing must be propagated forward: starts closed; preventClose omitted; rejected close promise assert_array_equals: close must always be called with the controller lengths differ, expected 1 got 0
+FAIL Closing must be propagated forward: starts closed; preventClose = undefined (falsy); fulfilled close promise assert_array_equals: close must always be called with the controller lengths differ, expected 1 got 0
+FAIL Closing must be propagated forward: starts closed; preventClose = null (falsy); fulfilled close promise assert_array_equals: close must always be called with the controller lengths differ, expected 1 got 0
+FAIL Closing must be propagated forward: starts closed; preventClose = false (falsy); fulfilled close promise assert_array_equals: close must always be called with the controller lengths differ, expected 1 got 0
+FAIL Closing must be propagated forward: starts closed; preventClose = 0 (falsy); fulfilled close promise assert_array_equals: close must always be called with the controller lengths differ, expected 1 got 0
+FAIL Closing must be propagated forward: starts closed; preventClose = -0 (falsy); fulfilled close promise assert_array_equals: close must always be called with the controller lengths differ, expected 1 got 0
+FAIL Closing must be propagated forward: starts closed; preventClose = NaN (falsy); fulfilled close promise assert_array_equals: close must always be called with the controller lengths differ, expected 1 got 0
+FAIL Closing must be propagated forward: starts closed; preventClose =  (falsy); fulfilled close promise assert_array_equals: close must always be called with the controller lengths differ, expected 1 got 0
+PASS Closing must be propagated forward: starts closed; preventClose = true (truthy) 
+PASS Closing must be propagated forward: starts closed; preventClose = a (truthy) 
+PASS Closing must be propagated forward: starts closed; preventClose = 1 (truthy) 
+PASS Closing must be propagated forward: starts closed; preventClose = Symbol() (truthy) 
+PASS Closing must be propagated forward: starts closed; preventClose = [object Object] (truthy) 
+PASS Closing must be propagated forward: starts closed; preventClose = true, preventAbort = true 
+PASS Closing must be propagated forward: starts closed; preventClose = true, preventAbort = true, preventCancel = true 
+FAIL Closing must be propagated forward: becomes closed asynchronously; preventClose omitted; fulfilled close promise assert_array_equals: close must always be called with the controller lengths differ, expected 1 got 0
+FAIL Closing must be propagated forward: becomes closed asynchronously; preventClose omitted; rejected close promise assert_array_equals: close must always be called with the controller lengths differ, expected 1 got 0
+PASS Closing must be propagated forward: becomes closed asynchronously; preventClose = true 
+FAIL Closing must be propagated forward: becomes closed asynchronously; dest never desires chunks; preventClose omitted; fulfilled close promise assert_array_equals: close must always be called with the controller lengths differ, expected 1 got 0
+FAIL Closing must be propagated forward: becomes closed asynchronously; dest never desires chunks; preventClose omitted; rejected close promise assert_array_equals: close must always be called with the controller lengths differ, expected 1 got 0
+PASS Closing must be propagated forward: becomes closed asynchronously; dest never desires chunks; preventClose = true 
+FAIL Closing must be propagated forward: becomes closed after one chunk; preventClose omitted; fulfilled close promise assert_array_equals: close must always be called with the controller lengths differ, expected 1 got 0
+FAIL Closing must be propagated forward: becomes closed after one chunk; preventClose omitted; rejected close promise assert_array_equals: close must always be called with the controller lengths differ, expected 1 got 0
+PASS Closing must be propagated forward: becomes closed after one chunk; preventClose = true 
+FAIL Closing must be propagated forward: shutdown must not occur until the final write completes assert_array_equals: close must always be called with the controller lengths differ, expected 1 got 0
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingclosepropagationforwarddedicatedworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-forward.dedicatedworker-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-forward.dedicatedworker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-forward.dedicatedworker-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,28 @@
</span><ins>+
+FAIL Closing must be propagated forward: starts closed; preventClose omitted; fulfilled close promise Can't find variable: WritableStream
+FAIL Closing must be propagated forward: starts closed; preventClose omitted; rejected close promise Can't find variable: WritableStream
+FAIL Closing must be propagated forward: starts closed; preventClose = undefined (falsy); fulfilled close promise Can't find variable: WritableStream
+FAIL Closing must be propagated forward: starts closed; preventClose = null (falsy); fulfilled close promise Can't find variable: WritableStream
+FAIL Closing must be propagated forward: starts closed; preventClose = false (falsy); fulfilled close promise Can't find variable: WritableStream
+FAIL Closing must be propagated forward: starts closed; preventClose = 0 (falsy); fulfilled close promise Can't find variable: WritableStream
+FAIL Closing must be propagated forward: starts closed; preventClose = -0 (falsy); fulfilled close promise Can't find variable: WritableStream
+FAIL Closing must be propagated forward: starts closed; preventClose = NaN (falsy); fulfilled close promise Can't find variable: WritableStream
+FAIL Closing must be propagated forward: starts closed; preventClose =  (falsy); fulfilled close promise Can't find variable: WritableStream
+FAIL Closing must be propagated forward: starts closed; preventClose = true (truthy) Can't find variable: WritableStream
+FAIL Closing must be propagated forward: starts closed; preventClose = a (truthy) Can't find variable: WritableStream
+FAIL Closing must be propagated forward: starts closed; preventClose = 1 (truthy) Can't find variable: WritableStream
+FAIL Closing must be propagated forward: starts closed; preventClose = Symbol() (truthy) Can't find variable: WritableStream
+FAIL Closing must be propagated forward: starts closed; preventClose = [object Object] (truthy) Can't find variable: WritableStream
+FAIL Closing must be propagated forward: starts closed; preventClose = true, preventAbort = true Can't find variable: WritableStream
+FAIL Closing must be propagated forward: starts closed; preventClose = true, preventAbort = true, preventCancel = true Can't find variable: WritableStream
+FAIL Closing must be propagated forward: becomes closed asynchronously; preventClose omitted; fulfilled close promise Can't find variable: WritableStream
+FAIL Closing must be propagated forward: becomes closed asynchronously; preventClose omitted; rejected close promise Can't find variable: WritableStream
+FAIL Closing must be propagated forward: becomes closed asynchronously; preventClose = true Can't find variable: WritableStream
+FAIL Closing must be propagated forward: becomes closed asynchronously; dest never desires chunks; preventClose omitted; fulfilled close promise Can't find variable: WritableStream
+FAIL Closing must be propagated forward: becomes closed asynchronously; dest never desires chunks; preventClose omitted; rejected close promise Can't find variable: WritableStream
+FAIL Closing must be propagated forward: becomes closed asynchronously; dest never desires chunks; preventClose = true Can't find variable: WritableStream
+FAIL Closing must be propagated forward: becomes closed after one chunk; preventClose omitted; fulfilled close promise Can't find variable: WritableStream
+FAIL Closing must be propagated forward: becomes closed after one chunk; preventClose omitted; rejected close promise Can't find variable: WritableStream
+FAIL Closing must be propagated forward: becomes closed after one chunk; preventClose = true Can't find variable: WritableStream
+FAIL Closing must be propagated forward: shutdown must not occur until the final write completes Can't find variable: WritableStream
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingclosepropagationforwarddedicatedworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-forward.dedicatedworker.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-forward.dedicatedworker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-forward.dedicatedworker.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;close-propagation-forward.js dedicated worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+fetch_tests_from_worker(new Worker('close-propagation-forward.js'));
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingclosepropagationforwardhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-forward.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-forward.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-forward.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;close-propagation-forward.js browser context wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script src=&quot;../resources/test-utils.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../resources/recording-streams.js&quot;&gt;&lt;/script&gt;
+
+&lt;script src=&quot;close-propagation-forward.js&quot;&gt;&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingclosepropagationforwardjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-forward.js (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-forward.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-forward.js        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,427 @@
</span><ins>+'use strict';
+
+if (self.importScripts) {
+  self.importScripts('/resources/testharness.js');
+  self.importScripts('../resources/test-utils.js');
+  self.importScripts('../resources/recording-streams.js');
+}
+
+const error1 = new Error('error1!');
+error1.name = 'error1';
+
+promise_test(() =&gt; {
+
+  const rs = recordingReadableStream({
+    start(controller) {
+      controller.close();
+    }
+  });
+
+  const ws = recordingWritableStream();
+
+  return rs.pipeTo(ws).then(value =&gt; {
+    assert_equals(value, undefined, 'the promise must fulfill with undefined');
+  })
+  .then(() =&gt; {
+    assert_array_equals(rs.events, []);
+    assert_array_equals(ws.events, ['close']);
+
+    return Promise.all([
+      rs.getReader().closed,
+      ws.getWriter().closed
+    ]);
+  });
+
+}, 'Closing must be propagated forward: starts closed; preventClose omitted; fulfilled close promise');
+
+promise_test(t =&gt; {
+
+  const rs = recordingReadableStream({
+    start(controller) {
+      controller.close();
+    }
+  });
+
+  const ws = recordingWritableStream({
+    close() {
+      throw error1;
+    }
+  });
+
+  return promise_rejects(t, error1, rs.pipeTo(ws), 'pipeTo must reject with the same error').then(() =&gt; {
+    assert_array_equals(rs.events, []);
+    assert_array_equals(ws.events, ['close']);
+
+    return Promise.all([
+      rs.getReader().closed,
+      promise_rejects(t, error1, ws.getWriter().closed)
+    ]);
+  });
+
+}, 'Closing must be propagated forward: starts closed; preventClose omitted; rejected close promise');
+
+for (const falsy of [undefined, null, false, +0, -0, NaN, '']) {
+  const stringVersion = Object.is(falsy, -0) ? '-0' : String(falsy);
+
+  promise_test(() =&gt; {
+
+    const rs = recordingReadableStream({
+      start(controller) {
+        controller.close();
+      }
+    });
+
+    const ws = recordingWritableStream();
+
+    return rs.pipeTo(ws, { preventClose: falsy }).then(value =&gt; {
+      assert_equals(value, undefined, 'the promise must fulfill with undefined');
+    })
+    .then(() =&gt; {
+      assert_array_equals(rs.events, []);
+      assert_array_equals(ws.events, ['close']);
+
+      return Promise.all([
+        rs.getReader().closed,
+        ws.getWriter().closed
+      ]);
+    });
+
+  }, `Closing must be propagated forward: starts closed; preventClose = ${stringVersion} (falsy); fulfilled close ` +
+     `promise`);
+}
+
+for (const truthy of [true, 'a', 1, Symbol(), { }]) {
+  promise_test(() =&gt; {
+
+    const rs = recordingReadableStream({
+      start(controller) {
+        controller.close();
+      }
+    });
+
+    const ws = recordingWritableStream();
+
+    return rs.pipeTo(ws, { preventClose: truthy }).then(value =&gt; {
+      assert_equals(value, undefined, 'the promise must fulfill with undefined');
+    })
+    .then(() =&gt; {
+      assert_array_equals(rs.events, []);
+      assert_array_equals(ws.events, []);
+
+      return rs.getReader().closed;
+    });
+
+  }, `Closing must be propagated forward: starts closed; preventClose = ${String(truthy)} (truthy)`);
+}
+
+promise_test(() =&gt; {
+
+  const rs = recordingReadableStream({
+    start(controller) {
+      controller.close();
+    }
+  });
+
+  const ws = recordingWritableStream();
+
+  return rs.pipeTo(ws, { preventClose: true, preventAbort: true }).then(value =&gt; {
+    assert_equals(value, undefined, 'the promise must fulfill with undefined');
+  })
+  .then(() =&gt; {
+    assert_array_equals(rs.events, []);
+    assert_array_equals(ws.events, []);
+
+    return rs.getReader().closed;
+  });
+
+}, 'Closing must be propagated forward: starts closed; preventClose = true, preventAbort = true');
+
+promise_test(() =&gt; {
+
+  const rs = recordingReadableStream({
+    start(controller) {
+      controller.close();
+    }
+  });
+
+  const ws = recordingWritableStream();
+
+  return rs.pipeTo(ws, { preventClose: true, preventAbort: true, preventCancel: true }).then(value =&gt; {
+    assert_equals(value, undefined, 'the promise must fulfill with undefined');
+  })
+  .then(() =&gt; {
+    assert_array_equals(rs.events, []);
+    assert_array_equals(ws.events, []);
+
+    return rs.getReader().closed;
+  });
+
+}, 'Closing must be propagated forward: starts closed; preventClose = true, preventAbort = true, preventCancel = true');
+
+promise_test(() =&gt; {
+
+  const rs = recordingReadableStream();
+
+  const ws = recordingWritableStream();
+
+  const pipePromise = rs.pipeTo(ws);
+
+  setTimeout(() =&gt; rs.controller.close());
+
+  return pipePromise.then(value =&gt; {
+    assert_equals(value, undefined, 'the promise must fulfill with undefined');
+  })
+  .then(() =&gt; {
+    assert_array_equals(rs.eventsWithoutPulls, []);
+    assert_array_equals(ws.events, ['close']);
+
+    return Promise.all([
+      rs.getReader().closed,
+      ws.getWriter().closed
+    ]);
+  });
+
+}, 'Closing must be propagated forward: becomes closed asynchronously; preventClose omitted; fulfilled close promise');
+
+promise_test(t =&gt; {
+
+  const rs = recordingReadableStream();
+
+  const ws = recordingWritableStream({
+    close() {
+      throw error1;
+    }
+  });
+
+  const pipePromise = promise_rejects(t, error1, rs.pipeTo(ws), 'pipeTo must reject with the same error');
+
+  setTimeout(() =&gt; rs.controller.close());
+
+  return pipePromise.then(() =&gt; {
+    assert_array_equals(rs.eventsWithoutPulls, []);
+    assert_array_equals(ws.events, ['close']);
+
+    return Promise.all([
+      rs.getReader().closed,
+      promise_rejects(t, error1, ws.getWriter().closed)
+    ]);
+  });
+
+}, 'Closing must be propagated forward: becomes closed asynchronously; preventClose omitted; rejected close promise');
+
+promise_test(() =&gt; {
+
+  const rs = recordingReadableStream();
+
+  const ws = recordingWritableStream();
+
+  const pipePromise = rs.pipeTo(ws, { preventClose: true });
+
+  setTimeout(() =&gt; rs.controller.close());
+
+  return pipePromise.then(value =&gt; {
+    assert_equals(value, undefined, 'the promise must fulfill with undefined');
+  })
+  .then(() =&gt; {
+    assert_array_equals(rs.eventsWithoutPulls, []);
+    assert_array_equals(ws.events, []);
+
+    return rs.getReader().closed;
+  });
+
+}, 'Closing must be propagated forward: becomes closed asynchronously; preventClose = true');
+
+promise_test(() =&gt; {
+
+  const rs = recordingReadableStream();
+
+  const ws = recordingWritableStream(undefined, new CountQueuingStrategy({ highWaterMark: 0 }));
+
+  const pipePromise = rs.pipeTo(ws);
+
+  setTimeout(() =&gt; rs.controller.close());
+
+  return pipePromise.then(value =&gt; {
+    assert_equals(value, undefined, 'the promise must fulfill with undefined');
+  })
+  .then(() =&gt; {
+    assert_array_equals(rs.eventsWithoutPulls, []);
+    assert_array_equals(ws.events, ['close']);
+
+    return Promise.all([
+      rs.getReader().closed,
+      ws.getWriter().closed
+    ]);
+  });
+
+}, 'Closing must be propagated forward: becomes closed asynchronously; dest never desires chunks; ' +
+   'preventClose omitted; fulfilled close promise');
+
+promise_test(t =&gt; {
+
+  const rs = recordingReadableStream();
+
+  const ws = recordingWritableStream({
+    close() {
+      throw error1;
+    }
+  }, new CountQueuingStrategy({ highWaterMark: 0 }));
+
+  const pipePromise = promise_rejects(t, error1, rs.pipeTo(ws), 'pipeTo must reject with the same error');
+
+  setTimeout(() =&gt; rs.controller.close());
+
+  return pipePromise.then(() =&gt; {
+    assert_array_equals(rs.eventsWithoutPulls, []);
+    assert_array_equals(ws.events, ['close']);
+
+    return Promise.all([
+      rs.getReader().closed,
+      promise_rejects(t, error1, ws.getWriter().closed)
+    ]);
+  });
+
+}, 'Closing must be propagated forward: becomes closed asynchronously; dest never desires chunks; ' +
+   'preventClose omitted; rejected close promise');
+
+promise_test(() =&gt; {
+
+  const rs = recordingReadableStream();
+
+  const ws = recordingWritableStream(undefined, new CountQueuingStrategy({ highWaterMark: 0 }));
+
+  const pipePromise = rs.pipeTo(ws, { preventClose: true });
+
+  setTimeout(() =&gt; rs.controller.close());
+
+  return pipePromise.then(value =&gt; {
+    assert_equals(value, undefined, 'the promise must fulfill with undefined');
+  })
+  .then(() =&gt; {
+    assert_array_equals(rs.eventsWithoutPulls, []);
+    assert_array_equals(ws.events, []);
+
+    return rs.getReader().closed;
+  });
+
+}, 'Closing must be propagated forward: becomes closed asynchronously; dest never desires chunks; ' +
+   'preventClose = true');
+
+promise_test(() =&gt; {
+
+  const rs = recordingReadableStream();
+
+  const ws = recordingWritableStream();
+
+  const pipePromise = rs.pipeTo(ws);
+
+  setTimeout(() =&gt; {
+    rs.controller.enqueue('Hello');
+    setTimeout(() =&gt; rs.controller.close());
+  }, 10);
+
+  return pipePromise.then(value =&gt; {
+    assert_equals(value, undefined, 'the promise must fulfill with undefined');
+  })
+  .then(() =&gt; {
+    assert_array_equals(rs.eventsWithoutPulls, []);
+    assert_array_equals(ws.events, ['write', 'Hello', 'close']);
+
+    return Promise.all([
+      rs.getReader().closed,
+      ws.getWriter().closed
+    ]);
+  });
+
+}, 'Closing must be propagated forward: becomes closed after one chunk; preventClose omitted; fulfilled close promise');
+
+promise_test(t =&gt; {
+
+  const rs = recordingReadableStream();
+
+  const ws = recordingWritableStream({
+    close() {
+      throw error1;
+    }
+  });
+
+  const pipePromise = promise_rejects(t, error1, rs.pipeTo(ws), 'pipeTo must reject with the same error');
+
+  setTimeout(() =&gt; {
+    rs.controller.enqueue('Hello');
+    setTimeout(() =&gt; rs.controller.close());
+  }, 10);
+
+  return pipePromise.then(() =&gt; {
+    assert_array_equals(rs.eventsWithoutPulls, []);
+    assert_array_equals(ws.events, ['write', 'Hello', 'close']);
+
+    return Promise.all([
+      rs.getReader().closed,
+      promise_rejects(t, error1, ws.getWriter().closed)
+    ]);
+  });
+
+}, 'Closing must be propagated forward: becomes closed after one chunk; preventClose omitted; rejected close promise');
+
+promise_test(() =&gt; {
+
+  const rs = recordingReadableStream();
+
+  const ws = recordingWritableStream();
+
+  const pipePromise = rs.pipeTo(ws, { preventClose: true });
+
+  setTimeout(() =&gt; {
+    rs.controller.enqueue('Hello');
+    setTimeout(() =&gt; rs.controller.close());
+  }, 10);
+
+  return pipePromise.then(value =&gt; {
+    assert_equals(value, undefined, 'the promise must fulfill with undefined');
+  })
+  .then(() =&gt; {
+    assert_array_equals(rs.eventsWithoutPulls, []);
+    assert_array_equals(ws.events, ['write', 'Hello']);
+
+    return rs.getReader().closed;
+  });
+
+}, 'Closing must be propagated forward: becomes closed after one chunk; preventClose = true');
+
+promise_test(() =&gt; {
+
+  const rs = recordingReadableStream();
+
+  let resolveWritePromise;
+  const ws = recordingWritableStream({
+    write() {
+      return new Promise(resolve =&gt; {
+        resolveWritePromise = resolve;
+      });
+    }
+  });
+
+  let pipeComplete = false;
+  const pipePromise = rs.pipeTo(ws).then(() =&gt; {
+    pipeComplete = true;
+  });
+
+  rs.controller.enqueue('a');
+  rs.controller.close();
+
+  // Flush async events and verify that no shutdown occurs.
+  return flushAsyncEvents().then(() =&gt; {
+    assert_array_equals(ws.events, ['write', 'a']); // no 'close'
+    assert_equals(pipeComplete, false, 'the pipe must not be complete');
+
+    resolveWritePromise();
+
+    return pipePromise.then(() =&gt; {
+      assert_array_equals(ws.events, ['write', 'a', 'close']);
+    });
+  });
+
+}, 'Closing must be propagated forward: shutdown must not occur until the final write completes');
+
+done();
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingclosepropagationforwardserviceworkerhttpsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-forward.serviceworker.https-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-forward.serviceworker.https-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-forward.serviceworker.https-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+FAIL Service worker test setup undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingclosepropagationforwardserviceworkerhttpshtmlfromrev212201trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadstrategieshttpshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-forward.serviceworker.https.html (from rev 212201, trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.https.html) (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-forward.serviceworker.https.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-forward.serviceworker.https.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;close-propagation-forward.js service worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/service-workers/service-worker/resources/test-helpers.sub.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+service_worker_test('close-propagation-forward.js', 'Service worker test setup');
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingclosepropagationforwardsharedworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-forward.sharedworker-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-forward.sharedworker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-forward.sharedworker-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+CONSOLE MESSAGE: line 10: ReferenceError: Can't find variable: SharedWorker
+
+Harness Error (FAIL), message = ReferenceError: Can't find variable: SharedWorker
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingclosepropagationforwardsharedworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-forward.sharedworker.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-forward.sharedworker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-forward.sharedworker.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;close-propagation-forward.js shared worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+fetch_tests_from_worker(new SharedWorker('close-propagation-forward.js'));
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingerrorpropagationbackwardexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-backward-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-backward-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-backward-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,39 @@
</span><ins>+
+Harness Error (TIMEOUT), message = null
+
+PASS Errors must be propagated backward: starts errored; preventCancel omitted; fulfilled cancel promise 
+FAIL Errors must be propagated backward: becomes errored before piping due to write; preventCancel omitted; fulfilled cancel promise ws.getWriter is not a function. (In 'ws.getWriter()', 'ws.getWriter' is undefined)
+FAIL Errors must be propagated backward: becomes errored before piping due to write; preventCancel omitted; rejected cancel promise ws.getWriter is not a function. (In 'ws.getWriter()', 'ws.getWriter' is undefined)
+FAIL Errors must be propagated backward: becomes errored before piping due to write; preventCancel = undefined (falsy); fulfilled cancel promise ws.getWriter is not a function. (In 'ws.getWriter()', 'ws.getWriter' is undefined)
+FAIL Errors must be propagated backward: becomes errored before piping due to write; preventCancel = null (falsy); fulfilled cancel promise ws.getWriter is not a function. (In 'ws.getWriter()', 'ws.getWriter' is undefined)
+FAIL Errors must be propagated backward: becomes errored before piping due to write; preventCancel = false (falsy); fulfilled cancel promise ws.getWriter is not a function. (In 'ws.getWriter()', 'ws.getWriter' is undefined)
+FAIL Errors must be propagated backward: becomes errored before piping due to write; preventCancel = 0 (falsy); fulfilled cancel promise ws.getWriter is not a function. (In 'ws.getWriter()', 'ws.getWriter' is undefined)
+FAIL Errors must be propagated backward: becomes errored before piping due to write; preventCancel = -0 (falsy); fulfilled cancel promise ws.getWriter is not a function. (In 'ws.getWriter()', 'ws.getWriter' is undefined)
+FAIL Errors must be propagated backward: becomes errored before piping due to write; preventCancel = NaN (falsy); fulfilled cancel promise ws.getWriter is not a function. (In 'ws.getWriter()', 'ws.getWriter' is undefined)
+FAIL Errors must be propagated backward: becomes errored before piping due to write; preventCancel =  (falsy); fulfilled cancel promise ws.getWriter is not a function. (In 'ws.getWriter()', 'ws.getWriter' is undefined)
+FAIL Errors must be propagated backward: becomes errored before piping due to write; preventCancel = true (truthy) ws.getWriter is not a function. (In 'ws.getWriter()', 'ws.getWriter' is undefined)
+FAIL Errors must be propagated backward: becomes errored before piping due to write; preventCancel = a (truthy) ws.getWriter is not a function. (In 'ws.getWriter()', 'ws.getWriter' is undefined)
+FAIL Errors must be propagated backward: becomes errored before piping due to write; preventCancel = 1 (truthy) ws.getWriter is not a function. (In 'ws.getWriter()', 'ws.getWriter' is undefined)
+FAIL Errors must be propagated backward: becomes errored before piping due to write; preventCancel = Symbol() (truthy) ws.getWriter is not a function. (In 'ws.getWriter()', 'ws.getWriter' is undefined)
+FAIL Errors must be propagated backward: becomes errored before piping due to write; preventCancel = [object Object] (truthy) ws.getWriter is not a function. (In 'ws.getWriter()', 'ws.getWriter' is undefined)
+FAIL Errors must be propagated backward: becomes errored before piping due to write, preventCancel = true; preventAbort = true ws.getWriter is not a function. (In 'ws.getWriter()', 'ws.getWriter' is undefined)
+FAIL Errors must be propagated backward: becomes errored before piping due to write; preventCancel = true, preventAbort = true, preventClose = true ws.getWriter is not a function. (In 'ws.getWriter()', 'ws.getWriter' is undefined)
+PASS Errors must be propagated backward: becomes errored during piping due to write; preventCancel omitted; fulfilled cancel promise 
+FAIL Errors must be propagated backward: becomes errored during piping due to write; preventCancel omitted; rejected cancel promise assert_throws: pipeTo must reject with the cancel error function &quot;function () { throw e }&quot; threw object &quot;error1: error1!&quot; (&quot;error1&quot;) expected object &quot;error2: error2!&quot; (&quot;error2&quot;)
+TIMEOUT Errors must be propagated backward: becomes errored during piping due to write; preventCancel = true Test timed out
+NOTRUN Errors must be propagated backward: becomes errored during piping due to write, but async; preventCancel = false; fulfilled cancel promise 
+NOTRUN Errors must be propagated backward: becomes errored during piping due to write, but async; preventCancel = false; rejected cancel promise 
+NOTRUN Errors must be propagated backward: becomes errored during piping due to write, but async; preventCancel = true 
+NOTRUN Errors must be propagated backward: becomes errored after piping; preventCancel omitted; fulfilled cancel promise 
+NOTRUN Errors must be propagated backward: becomes errored after piping; preventCancel omitted; rejected cancel promise 
+NOTRUN Errors must be propagated backward: becomes errored after piping; preventCancel = true 
+NOTRUN Errors must be propagated backward: becomes errored after piping due to last write; source is closed; preventCancel omitted (but cancel is never called) 
+NOTRUN Errors must be propagated backward: becomes errored after piping due to last write; source is closed; preventCancel = true 
+NOTRUN Errors must be propagated backward: becomes errored after piping; dest never desires chunks; preventCancel = false; fulfilled cancel promise 
+NOTRUN Errors must be propagated backward: becomes errored after piping; dest never desires chunks; preventCancel = false; rejected cancel promise 
+NOTRUN Errors must be propagated backward: becomes errored after piping; dest never desires chunks; preventCancel = true 
+NOTRUN Errors must be propagated backward: becomes errored before piping via abort; preventCancel omitted; fulfilled cancel promise 
+NOTRUN Errors must be propagated backward: becomes errored before piping via abort; preventCancel omitted; rejected cancel promise 
+NOTRUN Errors must be propagated backward: becomes errored before piping via abort; preventCancel = true 
+NOTRUN Errors must be propagated backward: erroring via the controller errors once pending write completes 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingerrorpropagationbackwarddedicatedworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-backward.dedicatedworker-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-backward.dedicatedworker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-backward.dedicatedworker-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,37 @@
</span><ins>+
+FAIL Errors must be propagated backward: starts errored; preventCancel omitted; fulfilled cancel promise Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored before piping due to write; preventCancel omitted; fulfilled cancel promise Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored before piping due to write; preventCancel omitted; rejected cancel promise Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored before piping due to write; preventCancel = undefined (falsy); fulfilled cancel promise Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored before piping due to write; preventCancel = null (falsy); fulfilled cancel promise Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored before piping due to write; preventCancel = false (falsy); fulfilled cancel promise Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored before piping due to write; preventCancel = 0 (falsy); fulfilled cancel promise Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored before piping due to write; preventCancel = -0 (falsy); fulfilled cancel promise Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored before piping due to write; preventCancel = NaN (falsy); fulfilled cancel promise Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored before piping due to write; preventCancel =  (falsy); fulfilled cancel promise Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored before piping due to write; preventCancel = true (truthy) Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored before piping due to write; preventCancel = a (truthy) Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored before piping due to write; preventCancel = 1 (truthy) Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored before piping due to write; preventCancel = Symbol() (truthy) Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored before piping due to write; preventCancel = [object Object] (truthy) Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored before piping due to write, preventCancel = true; preventAbort = true Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored before piping due to write; preventCancel = true, preventAbort = true, preventClose = true Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored during piping due to write; preventCancel omitted; fulfilled cancel promise Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored during piping due to write; preventCancel omitted; rejected cancel promise Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored during piping due to write; preventCancel = true Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored during piping due to write, but async; preventCancel = false; fulfilled cancel promise Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored during piping due to write, but async; preventCancel = false; rejected cancel promise Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored during piping due to write, but async; preventCancel = true Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored after piping; preventCancel omitted; fulfilled cancel promise Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored after piping; preventCancel omitted; rejected cancel promise Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored after piping; preventCancel = true Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored after piping due to last write; source is closed; preventCancel omitted (but cancel is never called) Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored after piping due to last write; source is closed; preventCancel = true Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored after piping; dest never desires chunks; preventCancel = false; fulfilled cancel promise Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored after piping; dest never desires chunks; preventCancel = false; rejected cancel promise Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored after piping; dest never desires chunks; preventCancel = true Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored before piping via abort; preventCancel omitted; fulfilled cancel promise Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored before piping via abort; preventCancel omitted; rejected cancel promise Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored before piping via abort; preventCancel = true Can't find variable: WritableStream
+FAIL Errors must be propagated backward: erroring via the controller errors once pending write completes Can't find variable: WritableStream
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingerrorpropagationbackwarddedicatedworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-backward.dedicatedworker.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-backward.dedicatedworker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-backward.dedicatedworker.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;error-propagation-backward.js dedicated worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+fetch_tests_from_worker(new Worker('error-propagation-backward.js'));
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingerrorpropagationbackwardhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-backward.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-backward.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-backward.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;error-propagation-backward.js browser context wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script src=&quot;../resources/test-utils.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../resources/recording-streams.js&quot;&gt;&lt;/script&gt;
+
+&lt;script src=&quot;error-propagation-backward.js&quot;&gt;&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingerrorpropagationbackwardjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-backward.js (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-backward.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-backward.js        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,635 @@
</span><ins>+'use strict';
+
+if (self.importScripts) {
+  self.importScripts('/resources/testharness.js');
+  self.importScripts('../resources/test-utils.js');
+  self.importScripts('../resources/recording-streams.js');
+}
+
+const error1 = new Error('error1!');
+error1.name = 'error1';
+
+const error2 = new Error('error2!');
+error2.name = 'error2';
+
+promise_test(t =&gt; {
+
+  const rs = recordingReadableStream();
+
+  const ws = recordingWritableStream({
+    start() {
+      return Promise.reject(error1);
+    }
+  });
+
+  return promise_rejects(t, error1, rs.pipeTo(ws), 'pipeTo must reject with the same error')
+    .then(() =&gt; {
+      assert_array_equals(rs.eventsWithoutPulls, ['cancel', error1]);
+      assert_array_equals(ws.events, []);
+    });
+
+}, 'Errors must be propagated backward: starts errored; preventCancel omitted; fulfilled cancel promise');
+
+promise_test(t =&gt; {
+
+  const rs = recordingReadableStream();
+
+  const ws = recordingWritableStream({
+    write() {
+      return Promise.reject(error1);
+    }
+  });
+
+  const writer = ws.getWriter();
+
+  return promise_rejects(t, error1, writer.write('Hello'), 'writer.write() must reject with the write error')
+    .then(() =&gt; promise_rejects(t, error1, writer.closed, 'writer.closed must reject with the write error'))
+    .then(() =&gt; {
+      writer.releaseLock();
+
+      return promise_rejects(t, error1, rs.pipeTo(ws), 'pipeTo must reject with the write error')
+        .then(() =&gt; {
+          assert_array_equals(rs.eventsWithoutPulls, ['cancel', error1]);
+          assert_array_equals(ws.events, ['write', 'Hello']);
+        });
+    });
+
+}, 'Errors must be propagated backward: becomes errored before piping due to write; preventCancel omitted; ' +
+   'fulfilled cancel promise');
+
+promise_test(t =&gt; {
+
+  const rs = recordingReadableStream({
+    cancel() {
+      throw error2;
+    }
+  });
+
+  const ws = recordingWritableStream({
+    write() {
+      return Promise.reject(error1);
+    }
+  });
+
+  const writer = ws.getWriter();
+
+  return promise_rejects(t, error1, writer.write('Hello'), 'writer.write() must reject with the write error')
+    .then(() =&gt; promise_rejects(t, error1, writer.closed, 'writer.closed must reject with the write error'))
+    .then(() =&gt; {
+      writer.releaseLock();
+
+      return promise_rejects(t, error2, rs.pipeTo(ws), 'pipeTo must reject with the cancel error')
+        .then(() =&gt; {
+          assert_array_equals(rs.eventsWithoutPulls, ['cancel', error1]);
+          assert_array_equals(ws.events, ['write', 'Hello']);
+        });
+    });
+
+}, 'Errors must be propagated backward: becomes errored before piping due to write; preventCancel omitted; rejected ' +
+   'cancel promise');
+
+for (const falsy of [undefined, null, false, +0, -0, NaN, '']) {
+  const stringVersion = Object.is(falsy, -0) ? '-0' : String(falsy);
+
+  promise_test(t =&gt; {
+
+    const rs = recordingReadableStream();
+
+    const ws = recordingWritableStream({
+      write() {
+        return Promise.reject(error1);
+      }
+    });
+
+    const writer = ws.getWriter();
+
+    return promise_rejects(t, error1, writer.write('Hello'), 'writer.write() must reject with the write error')
+      .then(() =&gt; promise_rejects(t, error1, writer.closed, 'writer.closed must reject with the write error'))
+      .then(() =&gt; {
+        writer.releaseLock();
+
+        return promise_rejects(t, error1, rs.pipeTo(ws, { preventCancel: falsy }),
+                               'pipeTo must reject with the write error')
+          .then(() =&gt; {
+            assert_array_equals(rs.eventsWithoutPulls, ['cancel', error1]);
+            assert_array_equals(ws.events, ['write', 'Hello']);
+          });
+      });
+
+  }, `Errors must be propagated backward: becomes errored before piping due to write; preventCancel = ` +
+     `${stringVersion} (falsy); fulfilled cancel promise`);
+}
+
+for (const truthy of [true, 'a', 1, Symbol(), { }]) {
+  promise_test(t =&gt; {
+
+    const rs = recordingReadableStream();
+
+    const ws = recordingWritableStream({
+      write() {
+        return Promise.reject(error1);
+      }
+    });
+
+    const writer = ws.getWriter();
+
+    return promise_rejects(t, error1, writer.write('Hello'), 'writer.write() must reject with the write error')
+      .then(() =&gt; promise_rejects(t, error1, writer.closed, 'writer.closed must reject with the write error'))
+      .then(() =&gt; {
+        writer.releaseLock();
+
+        return promise_rejects(t, error1, rs.pipeTo(ws, { preventCancel: truthy }),
+                               'pipeTo must reject with the write error')
+          .then(() =&gt; {
+            assert_array_equals(rs.eventsWithoutPulls, []);
+            assert_array_equals(ws.events, ['write', 'Hello']);
+          });
+      });
+
+  }, `Errors must be propagated backward: becomes errored before piping due to write; preventCancel = ` +
+     `${String(truthy)} (truthy)`);
+}
+
+promise_test(t =&gt; {
+
+  const rs = recordingReadableStream();
+
+  const ws = recordingWritableStream({
+    write() {
+      return Promise.reject(error1);
+    }
+  });
+
+  const writer = ws.getWriter();
+
+  return promise_rejects(t, error1, writer.write('Hello'), 'writer.write() must reject with the write error')
+    .then(() =&gt; promise_rejects(t, error1, writer.closed, 'writer.closed must reject with the write error'))
+    .then(() =&gt; {
+      writer.releaseLock();
+
+      return promise_rejects(t, error1, rs.pipeTo(ws, { preventCancel: true, preventAbort: true }),
+                             'pipeTo must reject with the write error')
+        .then(() =&gt; {
+          assert_array_equals(rs.eventsWithoutPulls, []);
+          assert_array_equals(ws.events, ['write', 'Hello']);
+        });
+    });
+
+}, 'Errors must be propagated backward: becomes errored before piping due to write, preventCancel = true; ' +
+   'preventAbort = true');
+
+promise_test(t =&gt; {
+
+  const rs = recordingReadableStream();
+
+  const ws = recordingWritableStream({
+    write() {
+      return Promise.reject(error1);
+    }
+  });
+
+  const writer = ws.getWriter();
+
+  return promise_rejects(t, error1, writer.write('Hello'), 'writer.write() must reject with the write error')
+    .then(() =&gt; promise_rejects(t, error1, writer.closed, 'writer.closed must reject with the write error'))
+    .then(() =&gt; {
+      writer.releaseLock();
+
+      return promise_rejects(t, error1, rs.pipeTo(ws, { preventCancel: true, preventAbort: true, preventClose: true }),
+                             'pipeTo must reject with the write error')
+        .then(() =&gt; {
+          assert_array_equals(rs.eventsWithoutPulls, []);
+          assert_array_equals(ws.events, ['write', 'Hello']);
+        });
+    });
+
+}, 'Errors must be propagated backward: becomes errored before piping due to write; preventCancel = true, ' +
+   'preventAbort = true, preventClose = true');
+
+promise_test(t =&gt; {
+
+  const rs = recordingReadableStream({
+    start(controller) {
+      controller.enqueue('Hello');
+    }
+  });
+
+  const ws = recordingWritableStream({
+    write() {
+      throw error1;
+    }
+  });
+
+  return promise_rejects(t, error1, rs.pipeTo(ws), 'pipeTo must reject with the same error').then(() =&gt; {
+    assert_array_equals(rs.eventsWithoutPulls, ['cancel', error1]);
+    assert_array_equals(ws.events, ['write', 'Hello']);
+  });
+
+}, 'Errors must be propagated backward: becomes errored during piping due to write; preventCancel omitted; fulfilled ' +
+   'cancel promise');
+
+promise_test(t =&gt; {
+
+  const rs = recordingReadableStream({
+    start(controller) {
+      controller.enqueue('Hello');
+    },
+    cancel() {
+      throw error2;
+    }
+  });
+
+  const ws = recordingWritableStream({
+    write() {
+      throw error1;
+    }
+  });
+
+  return promise_rejects(t, error2, rs.pipeTo(ws), 'pipeTo must reject with the cancel error').then(() =&gt; {
+    assert_array_equals(rs.eventsWithoutPulls, ['cancel', error1]);
+    assert_array_equals(ws.events, ['write', 'Hello']);
+  });
+
+}, 'Errors must be propagated backward: becomes errored during piping due to write; preventCancel omitted; rejected ' +
+   'cancel promise');
+
+promise_test(t =&gt; {
+
+  const rs = recordingReadableStream({
+    start(controller) {
+      controller.enqueue('Hello');
+    }
+  });
+
+  const ws = recordingWritableStream({
+    write() {
+      throw error1;
+    }
+  });
+
+  return promise_rejects(t, error1, rs.pipeTo(ws, { preventCancel: true }), 'pipeTo must reject with the same error')
+  .then(() =&gt; {
+    assert_array_equals(rs.eventsWithoutPulls, []);
+    assert_array_equals(ws.events, ['write', 'Hello']);
+  });
+
+}, 'Errors must be propagated backward: becomes errored during piping due to write; preventCancel = true');
+
+promise_test(t =&gt; {
+
+  const rs = recordingReadableStream({
+    start(controller) {
+      controller.enqueue('a');
+      controller.enqueue('b');
+      controller.enqueue('c');
+    }
+  });
+
+  const ws = recordingWritableStream({
+    write() {
+      if (ws.events.length &gt; 2) {
+        return delay(0).then(() =&gt; {
+          throw error1;
+        });
+      }
+      return undefined;
+    }
+  });
+
+  return promise_rejects(t, error1, rs.pipeTo(ws), 'pipeTo must reject with the same error').then(() =&gt; {
+    assert_array_equals(rs.eventsWithoutPulls, ['cancel', error1]);
+    assert_array_equals(ws.events, ['write', 'a', 'write', 'b']);
+  });
+
+}, 'Errors must be propagated backward: becomes errored during piping due to write, but async; preventCancel = ' +
+   'false; fulfilled cancel promise');
+
+promise_test(t =&gt; {
+
+  const rs = recordingReadableStream({
+    start(controller) {
+      controller.enqueue('a');
+      controller.enqueue('b');
+      controller.enqueue('c');
+    },
+    cancel() {
+      throw error2;
+    }
+  });
+
+  const ws = recordingWritableStream({
+    write() {
+      if (ws.events.length &gt; 2) {
+        return delay(0).then(() =&gt; {
+          throw error1;
+        });
+      }
+      return undefined;
+    }
+  });
+
+  return promise_rejects(t, error2, rs.pipeTo(ws), 'pipeTo must reject with the cancel error').then(() =&gt; {
+    assert_array_equals(rs.eventsWithoutPulls, ['cancel', error1]);
+    assert_array_equals(ws.events, ['write', 'a', 'write', 'b']);
+  });
+
+}, 'Errors must be propagated backward: becomes errored during piping due to write, but async; preventCancel = ' +
+   'false; rejected cancel promise');
+
+promise_test(t =&gt; {
+
+  const rs = recordingReadableStream({
+    start(controller) {
+      controller.enqueue('a');
+      controller.enqueue('b');
+      controller.enqueue('c');
+    }
+  });
+
+  const ws = recordingWritableStream({
+    write() {
+      if (ws.events.length &gt; 2) {
+        return delay(0).then(() =&gt; {
+          throw error1;
+        });
+      }
+      return undefined;
+    }
+  });
+
+  return promise_rejects(t, error1, rs.pipeTo(ws, { preventCancel: true }), 'pipeTo must reject with the same error')
+  .then(() =&gt; {
+    assert_array_equals(rs.eventsWithoutPulls, []);
+    assert_array_equals(ws.events, ['write', 'a', 'write', 'b']);
+  });
+
+}, 'Errors must be propagated backward: becomes errored during piping due to write, but async; preventCancel = true');
+
+promise_test(t =&gt; {
+
+  const rs = recordingReadableStream();
+
+  const ws = recordingWritableStream();
+
+  const pipePromise = promise_rejects(t, error1, rs.pipeTo(ws), 'pipeTo must reject with the same error');
+
+  setTimeout(() =&gt; ws.controller.error(error1), 10);
+
+  return pipePromise.then(() =&gt; {
+    assert_array_equals(rs.eventsWithoutPulls, ['cancel', error1]);
+    assert_array_equals(ws.events, []);
+  });
+
+}, 'Errors must be propagated backward: becomes errored after piping; preventCancel omitted; fulfilled cancel promise');
+
+promise_test(t =&gt; {
+
+  const rs = recordingReadableStream({
+    cancel() {
+      throw error2;
+    }
+  });
+
+  const ws = recordingWritableStream();
+
+  const pipePromise = promise_rejects(t, error2, rs.pipeTo(ws), 'pipeTo must reject with the cancel error');
+
+  setTimeout(() =&gt; ws.controller.error(error1), 10);
+
+  return pipePromise.then(() =&gt; {
+    assert_array_equals(rs.eventsWithoutPulls, ['cancel', error1]);
+    assert_array_equals(ws.events, []);
+  });
+
+}, 'Errors must be propagated backward: becomes errored after piping; preventCancel omitted; rejected cancel promise');
+
+promise_test(t =&gt; {
+
+  const rs = recordingReadableStream();
+
+  const ws = recordingWritableStream();
+
+  const pipePromise = promise_rejects(t, error1, rs.pipeTo(ws, { preventCancel: true }),
+                                      'pipeTo must reject with the same error');
+
+  setTimeout(() =&gt; ws.controller.error(error1), 10);
+
+  return pipePromise.then(() =&gt; {
+    assert_array_equals(rs.eventsWithoutPulls, []);
+    assert_array_equals(ws.events, []);
+  });
+
+}, 'Errors must be propagated backward: becomes errored after piping; preventCancel = true');
+
+promise_test(t =&gt; {
+
+  const rs = recordingReadableStream({
+    start(controller) {
+      controller.enqueue('a');
+      controller.enqueue('b');
+      controller.enqueue('c');
+      controller.close();
+    }
+  });
+
+  const ws = recordingWritableStream({
+    write(chunk) {
+      if (chunk === 'c') {
+        return Promise.reject(error1);
+      }
+      return undefined;
+    }
+  });
+
+  return promise_rejects(t, error1, rs.pipeTo(ws), 'pipeTo must reject with the same error').then(() =&gt; {
+    assert_array_equals(rs.eventsWithoutPulls, []);
+    assert_array_equals(ws.events, ['write', 'a', 'write', 'b', 'write', 'c']);
+  });
+
+}, 'Errors must be propagated backward: becomes errored after piping due to last write; source is closed; ' +
+   'preventCancel omitted (but cancel is never called)');
+
+promise_test(t =&gt; {
+
+  const rs = recordingReadableStream({
+    start(controller) {
+      controller.enqueue('a');
+      controller.enqueue('b');
+      controller.enqueue('c');
+      controller.close();
+    }
+  });
+
+  const ws = recordingWritableStream({
+    write(chunk) {
+      if (chunk === 'c') {
+        return Promise.reject(error1);
+      }
+      return undefined;
+    }
+  });
+
+  return promise_rejects(t, error1, rs.pipeTo(ws, { preventCancel: true }), 'pipeTo must reject with the same error')
+    .then(() =&gt; {
+      assert_array_equals(rs.eventsWithoutPulls, []);
+      assert_array_equals(ws.events, ['write', 'a', 'write', 'b', 'write', 'c']);
+    });
+
+}, 'Errors must be propagated backward: becomes errored after piping due to last write; source is closed; ' +
+   'preventCancel = true');
+
+promise_test(t =&gt; {
+
+  const rs = recordingReadableStream();
+
+  const ws = recordingWritableStream(undefined, new CountQueuingStrategy({ highWaterMark: 0 }));
+
+  const pipePromise = promise_rejects(t, error1, rs.pipeTo(ws), 'pipeTo must reject with the same error');
+
+  setTimeout(() =&gt; ws.controller.error(error1), 10);
+
+  return pipePromise.then(() =&gt; {
+    assert_array_equals(rs.eventsWithoutPulls, ['cancel', error1]);
+    assert_array_equals(ws.events, []);
+  });
+
+}, 'Errors must be propagated backward: becomes errored after piping; dest never desires chunks; preventCancel = ' +
+   'false; fulfilled cancel promise');
+
+promise_test(t =&gt; {
+
+  const rs = recordingReadableStream({
+    cancel() {
+      throw error2;
+    }
+  });
+
+  const ws = recordingWritableStream(undefined, new CountQueuingStrategy({ highWaterMark: 0 }));
+
+  const pipePromise = promise_rejects(t, error2, rs.pipeTo(ws), 'pipeTo must reject with the cancel error');
+
+  setTimeout(() =&gt; ws.controller.error(error1), 10);
+
+  return pipePromise.then(() =&gt; {
+    assert_array_equals(rs.eventsWithoutPulls, ['cancel', error1]);
+    assert_array_equals(ws.events, []);
+  });
+
+}, 'Errors must be propagated backward: becomes errored after piping; dest never desires chunks; preventCancel = ' +
+   'false; rejected cancel promise');
+
+promise_test(t =&gt; {
+
+  const rs = recordingReadableStream();
+
+  const ws = recordingWritableStream(undefined, new CountQueuingStrategy({ highWaterMark: 0 }));
+
+  const pipePromise = promise_rejects(t, error1, rs.pipeTo(ws, { preventCancel: true }),
+                                      'pipeTo must reject with the same error');
+
+  setTimeout(() =&gt; ws.controller.error(error1), 10);
+
+  return pipePromise.then(() =&gt; {
+    assert_array_equals(rs.eventsWithoutPulls, []);
+    assert_array_equals(ws.events, []);
+  });
+
+}, 'Errors must be propagated backward: becomes errored after piping; dest never desires chunks; preventCancel = ' +
+   'true');
+
+promise_test(() =&gt; {
+
+  const rs = recordingReadableStream();
+
+  const ws = recordingWritableStream();
+
+  ws.abort(error1);
+
+  return rs.pipeTo(ws).then(
+    () =&gt; assert_unreached('the promise must not fulfill'),
+    err =&gt; {
+      assert_equals(err.name, 'TypeError', 'the promise must reject with a TypeError (_not_ with error1)');
+
+      assert_array_equals(rs.eventsWithoutPulls, ['cancel', err]);
+      assert_array_equals(ws.events, ['abort', error1]);
+    }
+  );
+
+}, 'Errors must be propagated backward: becomes errored before piping via abort; preventCancel omitted; fulfilled ' +
+   'cancel promise');
+
+promise_test(t =&gt; {
+
+  const rs = recordingReadableStream({
+    cancel() {
+      throw error2;
+    }
+  });
+
+  const ws = recordingWritableStream();
+
+  ws.abort(error1);
+
+  return promise_rejects(t, error2, rs.pipeTo(ws), 'pipeTo must reject with the cancel error')
+    .then(() =&gt; {
+      return ws.getWriter().closed.then(
+        () =&gt; assert_unreached('the promise must not fulfill'),
+        err =&gt; {
+          assert_equals(err.name, 'TypeError', 'the promise must reject with a TypeError (_not_ with error1)');
+
+          assert_array_equals(rs.eventsWithoutPulls, ['cancel', err]);
+          assert_array_equals(ws.events, ['abort', error1]);
+        }
+      );
+    });
+
+}, 'Errors must be propagated backward: becomes errored before piping via abort; preventCancel omitted; rejected ' +
+   'cancel promise');
+
+promise_test(t =&gt; {
+
+  const rs = recordingReadableStream();
+
+  const ws = recordingWritableStream();
+
+  ws.abort(error1);
+
+  return promise_rejects(t, new TypeError(), rs.pipeTo(ws, { preventCancel: true })).then(() =&gt; {
+    assert_array_equals(rs.eventsWithoutPulls, []);
+    assert_array_equals(ws.events, ['abort', error1]);
+  });
+
+}, 'Errors must be propagated backward: becomes errored before piping via abort; preventCancel = true');
+
+promise_test(t =&gt; {
+
+  const rs = recordingReadableStream();
+
+  let resolveWriteCalled;
+  const writeCalledPromise = new Promise(resolve =&gt; {
+    resolveWriteCalled = resolve;
+  });
+
+  const ws = recordingWritableStream({
+    write() {
+      resolveWriteCalled();
+      return flushAsyncEvents();
+    }
+  });
+
+  const pipePromise = rs.pipeTo(ws);
+
+  rs.controller.enqueue('a');
+
+  return writeCalledPromise.then(() =&gt; {
+    ws.controller.error(error1);
+
+    return promise_rejects(t, error1, pipePromise);
+  }).then(() =&gt; {
+    assert_array_equals(rs.eventsWithoutPulls, ['cancel', error1]);
+    assert_array_equals(ws.events, ['write', 'a']);
+  });
+
+}, 'Errors must be propagated backward: erroring via the controller errors once pending write completes');
+
+done();
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingerrorpropagationbackwardserviceworkerhttpsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-backward.serviceworker.https-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-backward.serviceworker.https-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-backward.serviceworker.https-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+FAIL Service worker test setup undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingerrorpropagationbackwardserviceworkerhttpshtmlfromrev212201trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadstrategieshttpshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-backward.serviceworker.https.html (from rev 212201, trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.https.html) (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-backward.serviceworker.https.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-backward.serviceworker.https.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;error-propagation-backward.js service worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/service-workers/service-worker/resources/test-helpers.sub.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+service_worker_test('error-propagation-backward.js', 'Service worker test setup');
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingerrorpropagationbackwardsharedworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-backward.sharedworker-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-backward.sharedworker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-backward.sharedworker-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+CONSOLE MESSAGE: line 10: ReferenceError: Can't find variable: SharedWorker
+
+Harness Error (FAIL), message = ReferenceError: Can't find variable: SharedWorker
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingerrorpropagationbackwardsharedworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-backward.sharedworker.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-backward.sharedworker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-backward.sharedworker.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;error-propagation-backward.js shared worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+fetch_tests_from_worker(new SharedWorker('error-propagation-backward.js'));
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingerrorpropagationforwardexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-forward-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-forward-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-forward-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,31 @@
</span><ins>+
+PASS Errors must be propagated forward: starts errored; preventAbort = false; fulfilled abort promise 
+FAIL Errors must be propagated forward: starts errored; preventAbort = false; rejected abort promise assert_throws: pipeTo must reject with the abort error function &quot;function () { throw e }&quot; threw object &quot;error1: error1!&quot; (&quot;error1&quot;) expected object &quot;error2: error2!&quot; (&quot;error2&quot;)
+PASS Errors must be propagated forward: starts errored; preventAbort = undefined (falsy); fulfilled abort promise 
+PASS Errors must be propagated forward: starts errored; preventAbort = null (falsy); fulfilled abort promise 
+PASS Errors must be propagated forward: starts errored; preventAbort = false (falsy); fulfilled abort promise 
+PASS Errors must be propagated forward: starts errored; preventAbort = 0 (falsy); fulfilled abort promise 
+PASS Errors must be propagated forward: starts errored; preventAbort = -0 (falsy); fulfilled abort promise 
+PASS Errors must be propagated forward: starts errored; preventAbort = NaN (falsy); fulfilled abort promise 
+PASS Errors must be propagated forward: starts errored; preventAbort =  (falsy); fulfilled abort promise 
+PASS Errors must be propagated forward: starts errored; preventAbort = true (truthy) 
+PASS Errors must be propagated forward: starts errored; preventAbort = a (truthy) 
+PASS Errors must be propagated forward: starts errored; preventAbort = 1 (truthy) 
+PASS Errors must be propagated forward: starts errored; preventAbort = Symbol() (truthy) 
+PASS Errors must be propagated forward: starts errored; preventAbort = [object Object] (truthy) 
+PASS Errors must be propagated forward: starts errored; preventAbort = true, preventCancel = true 
+PASS Errors must be propagated forward: starts errored; preventAbort = true, preventCancel = true, preventClose = true 
+PASS Errors must be propagated forward: becomes errored while empty; preventAbort = false; fulfilled abort promise 
+FAIL Errors must be propagated forward: becomes errored while empty; preventAbort = false; rejected abort promise assert_throws: pipeTo must reject with the abort error function &quot;function () { throw e }&quot; threw object &quot;error1: error1!&quot; (&quot;error1&quot;) expected object &quot;error2: error2!&quot; (&quot;error2&quot;)
+PASS Errors must be propagated forward: becomes errored while empty; preventAbort = true 
+PASS Errors must be propagated forward: becomes errored while empty; dest never desires chunks; preventAbort = false; fulfilled abort promise 
+FAIL Errors must be propagated forward: becomes errored while empty; dest never desires chunks; preventAbort = false; rejected abort promise assert_throws: pipeTo must reject with the abort error function &quot;function () { throw e }&quot; threw object &quot;error1: error1!&quot; (&quot;error1&quot;) expected object &quot;error2: error2!&quot; (&quot;error2&quot;)
+PASS Errors must be propagated forward: becomes errored while empty; dest never desires chunks; preventAbort = true 
+PASS Errors must be propagated forward: becomes errored after one chunk; preventAbort = false; fulfilled abort promise 
+FAIL Errors must be propagated forward: becomes errored after one chunk; preventAbort = false; rejected abort promise assert_throws: pipeTo must reject with the abort error function &quot;function () { throw e }&quot; threw object &quot;error1: error1!&quot; (&quot;error1&quot;) expected object &quot;error2: error2!&quot; (&quot;error2&quot;)
+PASS Errors must be propagated forward: becomes errored after one chunk; preventAbort = true 
+FAIL Errors must be propagated forward: becomes errored after one chunk; dest never desires chunks; preventAbort = false; fulfilled abort promise assert_array_equals: lengths differ, expected 2 got 4
+FAIL Errors must be propagated forward: becomes errored after one chunk; dest never desires chunks; preventAbort = false; rejected abort promise assert_throws: pipeTo must reject with the abort error function &quot;function () { throw e }&quot; threw object &quot;error1: error1!&quot; (&quot;error1&quot;) expected object &quot;error2: error2!&quot; (&quot;error2&quot;)
+FAIL Errors must be propagated forward: becomes errored after one chunk; dest never desires chunks; preventAbort = true assert_array_equals: lengths differ, expected 0 got 2
+FAIL Errors must be propagated forward: shutdown must not occur until the final write completes assert_array_equals: lengths differ, expected 2 got 4
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingerrorpropagationforwarddedicatedworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-forward.dedicatedworker-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-forward.dedicatedworker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-forward.dedicatedworker-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,31 @@
</span><ins>+
+FAIL Errors must be propagated forward: starts errored; preventAbort = false; fulfilled abort promise Can't find variable: WritableStream
+FAIL Errors must be propagated forward: starts errored; preventAbort = false; rejected abort promise Can't find variable: WritableStream
+FAIL Errors must be propagated forward: starts errored; preventAbort = undefined (falsy); fulfilled abort promise Can't find variable: WritableStream
+FAIL Errors must be propagated forward: starts errored; preventAbort = null (falsy); fulfilled abort promise Can't find variable: WritableStream
+FAIL Errors must be propagated forward: starts errored; preventAbort = false (falsy); fulfilled abort promise Can't find variable: WritableStream
+FAIL Errors must be propagated forward: starts errored; preventAbort = 0 (falsy); fulfilled abort promise Can't find variable: WritableStream
+FAIL Errors must be propagated forward: starts errored; preventAbort = -0 (falsy); fulfilled abort promise Can't find variable: WritableStream
+FAIL Errors must be propagated forward: starts errored; preventAbort = NaN (falsy); fulfilled abort promise Can't find variable: WritableStream
+FAIL Errors must be propagated forward: starts errored; preventAbort =  (falsy); fulfilled abort promise Can't find variable: WritableStream
+FAIL Errors must be propagated forward: starts errored; preventAbort = true (truthy) Can't find variable: WritableStream
+FAIL Errors must be propagated forward: starts errored; preventAbort = a (truthy) Can't find variable: WritableStream
+FAIL Errors must be propagated forward: starts errored; preventAbort = 1 (truthy) Can't find variable: WritableStream
+FAIL Errors must be propagated forward: starts errored; preventAbort = Symbol() (truthy) Can't find variable: WritableStream
+FAIL Errors must be propagated forward: starts errored; preventAbort = [object Object] (truthy) Can't find variable: WritableStream
+FAIL Errors must be propagated forward: starts errored; preventAbort = true, preventCancel = true Can't find variable: WritableStream
+FAIL Errors must be propagated forward: starts errored; preventAbort = true, preventCancel = true, preventClose = true Can't find variable: WritableStream
+FAIL Errors must be propagated forward: becomes errored while empty; preventAbort = false; fulfilled abort promise Can't find variable: WritableStream
+FAIL Errors must be propagated forward: becomes errored while empty; preventAbort = false; rejected abort promise Can't find variable: WritableStream
+FAIL Errors must be propagated forward: becomes errored while empty; preventAbort = true Can't find variable: WritableStream
+FAIL Errors must be propagated forward: becomes errored while empty; dest never desires chunks; preventAbort = false; fulfilled abort promise Can't find variable: WritableStream
+FAIL Errors must be propagated forward: becomes errored while empty; dest never desires chunks; preventAbort = false; rejected abort promise Can't find variable: WritableStream
+FAIL Errors must be propagated forward: becomes errored while empty; dest never desires chunks; preventAbort = true Can't find variable: WritableStream
+FAIL Errors must be propagated forward: becomes errored after one chunk; preventAbort = false; fulfilled abort promise Can't find variable: WritableStream
+FAIL Errors must be propagated forward: becomes errored after one chunk; preventAbort = false; rejected abort promise Can't find variable: WritableStream
+FAIL Errors must be propagated forward: becomes errored after one chunk; preventAbort = true Can't find variable: WritableStream
+FAIL Errors must be propagated forward: becomes errored after one chunk; dest never desires chunks; preventAbort = false; fulfilled abort promise Can't find variable: WritableStream
+FAIL Errors must be propagated forward: becomes errored after one chunk; dest never desires chunks; preventAbort = false; rejected abort promise Can't find variable: WritableStream
+FAIL Errors must be propagated forward: becomes errored after one chunk; dest never desires chunks; preventAbort = true Can't find variable: WritableStream
+FAIL Errors must be propagated forward: shutdown must not occur until the final write completes Can't find variable: WritableStream
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingerrorpropagationforwarddedicatedworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-forward.dedicatedworker.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-forward.dedicatedworker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-forward.dedicatedworker.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;error-propagation-forward.js dedicated worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+fetch_tests_from_worker(new Worker('error-propagation-forward.js'));
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingerrorpropagationforwardhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-forward.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-forward.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-forward.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;error-propagation-forward.js browser context wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script src=&quot;../resources/test-utils.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../resources/recording-streams.js&quot;&gt;&lt;/script&gt;
+
+&lt;script src=&quot;error-propagation-forward.js&quot;&gt;&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingerrorpropagationforwardjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-forward.js (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-forward.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-forward.js        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,431 @@
</span><ins>+'use strict';
+
+if (self.importScripts) {
+  self.importScripts('/resources/testharness.js');
+  self.importScripts('../resources/test-utils.js');
+  self.importScripts('../resources/recording-streams.js');
+}
+
+const error1 = new Error('error1!');
+error1.name = 'error1';
+
+const error2 = new Error('error2!');
+error2.name = 'error2';
+
+promise_test(t =&gt; {
+
+  const rs = recordingReadableStream({
+    start() {
+      return Promise.reject(error1);
+    }
+  });
+
+  const ws = recordingWritableStream();
+
+  return promise_rejects(t, error1, rs.pipeTo(ws), 'pipeTo must reject with the same error')
+    .then(() =&gt; {
+      assert_array_equals(rs.events, []);
+      assert_array_equals(ws.events, ['abort', error1]);
+    });
+
+}, 'Errors must be propagated forward: starts errored; preventAbort = false; fulfilled abort promise');
+
+promise_test(t =&gt; {
+
+  const rs = recordingReadableStream({
+    start() {
+      return Promise.reject(error1);
+    }
+  });
+
+  const ws = recordingWritableStream({
+    abort() {
+      throw error2;
+    }
+  });
+
+  return promise_rejects(t, error2, rs.pipeTo(ws), 'pipeTo must reject with the abort error')
+    .then(() =&gt; {
+      assert_array_equals(rs.events, []);
+      assert_array_equals(ws.events, ['abort', error1]);
+    });
+
+}, 'Errors must be propagated forward: starts errored; preventAbort = false; rejected abort promise');
+
+for (const falsy of [undefined, null, false, +0, -0, NaN, '']) {
+  const stringVersion = Object.is(falsy, -0) ? '-0' : String(falsy);
+
+  promise_test(t =&gt; {
+
+    const rs = recordingReadableStream({
+      start() {
+        return Promise.reject(error1);
+      }
+    });
+
+    const ws = recordingWritableStream();
+
+    return promise_rejects(t, error1, rs.pipeTo(ws, { preventAbort: falsy }), 'pipeTo must reject with the same error')
+      .then(() =&gt; {
+        assert_array_equals(rs.events, []);
+        assert_array_equals(ws.events, ['abort', error1]);
+      });
+
+  }, `Errors must be propagated forward: starts errored; preventAbort = ${stringVersion} (falsy); fulfilled abort ` +
+     `promise`);
+}
+
+for (const truthy of [true, 'a', 1, Symbol(), { }]) {
+  promise_test(t =&gt; {
+
+    const rs = recordingReadableStream({
+      start() {
+        return Promise.reject(error1);
+      }
+    });
+
+    const ws = recordingWritableStream();
+
+    return promise_rejects(t, error1, rs.pipeTo(ws, { preventAbort: truthy }),
+      'pipeTo must reject with the same error')
+      .then(() =&gt; {
+        assert_array_equals(rs.events, []);
+        assert_array_equals(ws.events, []);
+      });
+
+  }, `Errors must be propagated forward: starts errored; preventAbort = ${String(truthy)} (truthy)`);
+}
+
+
+promise_test(t =&gt; {
+
+  const rs = recordingReadableStream({
+    start() {
+      return Promise.reject(error1);
+    }
+  });
+
+  const ws = recordingWritableStream();
+
+  return promise_rejects(t, error1, rs.pipeTo(ws, { preventAbort: true, preventCancel: true }),
+    'pipeTo must reject with the same error')
+    .then(() =&gt; {
+      assert_array_equals(rs.events, []);
+      assert_array_equals(ws.events, []);
+    });
+
+}, 'Errors must be propagated forward: starts errored; preventAbort = true, preventCancel = true');
+
+promise_test(t =&gt; {
+
+  const rs = recordingReadableStream({
+    start() {
+      return Promise.reject(error1);
+    }
+  });
+
+  const ws = recordingWritableStream();
+
+  return promise_rejects(t, error1, rs.pipeTo(ws, { preventAbort: true, preventCancel: true, preventClose: true }),
+    'pipeTo must reject with the same error')
+    .then(() =&gt; {
+      assert_array_equals(rs.events, []);
+      assert_array_equals(ws.events, []);
+    });
+
+}, 'Errors must be propagated forward: starts errored; preventAbort = true, preventCancel = true, preventClose = true');
+
+promise_test(t =&gt; {
+
+  const rs = recordingReadableStream();
+
+  const ws = recordingWritableStream();
+
+  const pipePromise = promise_rejects(t, error1, rs.pipeTo(ws), 'pipeTo must reject with the same error');
+
+  setTimeout(() =&gt; rs.controller.error(error1), 10);
+
+  return pipePromise.then(() =&gt; {
+    assert_array_equals(rs.eventsWithoutPulls, []);
+    assert_array_equals(ws.events, ['abort', error1]);
+  });
+
+}, 'Errors must be propagated forward: becomes errored while empty; preventAbort = false; fulfilled abort promise');
+
+promise_test(t =&gt; {
+
+  const rs = recordingReadableStream();
+
+  const ws = recordingWritableStream({
+    abort() {
+      throw error2;
+    }
+  });
+
+  const pipePromise = promise_rejects(t, error2, rs.pipeTo(ws), 'pipeTo must reject with the abort error');
+
+  setTimeout(() =&gt; rs.controller.error(error1), 10);
+
+  return pipePromise.then(() =&gt; {
+    assert_array_equals(rs.eventsWithoutPulls, []);
+    assert_array_equals(ws.events, ['abort', error1]);
+  });
+
+}, 'Errors must be propagated forward: becomes errored while empty; preventAbort = false; rejected abort promise');
+
+promise_test(t =&gt; {
+
+  const rs = recordingReadableStream();
+
+  const ws = recordingWritableStream();
+
+  const pipePromise = promise_rejects(t, error1, rs.pipeTo(ws, { preventAbort: true }),
+                                      'pipeTo must reject with the same error');
+
+  setTimeout(() =&gt; rs.controller.error(error1), 10);
+
+  return pipePromise.then(() =&gt; {
+    assert_array_equals(rs.eventsWithoutPulls, []);
+    assert_array_equals(ws.events, []);
+  });
+
+}, 'Errors must be propagated forward: becomes errored while empty; preventAbort = true');
+
+promise_test(t =&gt; {
+
+  const rs = recordingReadableStream();
+
+  const ws = recordingWritableStream(undefined, new CountQueuingStrategy({ highWaterMark: 0 }));
+
+  const pipePromise = promise_rejects(t, error1, rs.pipeTo(ws), 'pipeTo must reject with the same error');
+
+  setTimeout(() =&gt; rs.controller.error(error1), 10);
+
+  return pipePromise.then(() =&gt; {
+    assert_array_equals(rs.eventsWithoutPulls, []);
+    assert_array_equals(ws.events, ['abort', error1]);
+  });
+
+}, 'Errors must be propagated forward: becomes errored while empty; dest never desires chunks; ' +
+   'preventAbort = false; fulfilled abort promise');
+
+promise_test(t =&gt; {
+
+  const rs = recordingReadableStream();
+
+  const ws = recordingWritableStream({
+    abort() {
+      throw error2;
+    }
+  }, new CountQueuingStrategy({ highWaterMark: 0 }));
+
+  const pipePromise = promise_rejects(t, error2, rs.pipeTo(ws), 'pipeTo must reject with the abort error');
+
+  setTimeout(() =&gt; rs.controller.error(error1), 10);
+
+  return pipePromise.then(() =&gt; {
+    assert_array_equals(rs.eventsWithoutPulls, []);
+    assert_array_equals(ws.events, ['abort', error1]);
+  });
+
+}, 'Errors must be propagated forward: becomes errored while empty; dest never desires chunks; ' +
+   'preventAbort = false; rejected abort promise');
+
+promise_test(t =&gt; {
+
+  const rs = recordingReadableStream();
+
+  const ws = recordingWritableStream(undefined, new CountQueuingStrategy({ highWaterMark: 0 }));
+
+  const pipePromise = promise_rejects(t, error1, rs.pipeTo(ws, { preventAbort: true }),
+                                      'pipeTo must reject with the same error');
+
+  setTimeout(() =&gt; rs.controller.error(error1), 10);
+
+  return pipePromise.then(() =&gt; {
+    assert_array_equals(rs.eventsWithoutPulls, []);
+    assert_array_equals(ws.events, []);
+  });
+
+}, 'Errors must be propagated forward: becomes errored while empty; dest never desires chunks; ' +
+   'preventAbort = true');
+
+promise_test(t =&gt; {
+
+  const rs = recordingReadableStream();
+
+  const ws = recordingWritableStream();
+
+  const pipePromise = promise_rejects(t, error1, rs.pipeTo(ws), 'pipeTo must reject with the same error');
+
+  setTimeout(() =&gt; {
+    rs.controller.enqueue('Hello');
+    setTimeout(() =&gt; rs.controller.error(error1), 10);
+  }, 10);
+
+  return pipePromise.then(() =&gt; {
+    assert_array_equals(rs.eventsWithoutPulls, []);
+    assert_array_equals(ws.events, ['write', 'Hello', 'abort', error1]);
+  });
+
+}, 'Errors must be propagated forward: becomes errored after one chunk; preventAbort = false; fulfilled abort promise');
+
+promise_test(t =&gt; {
+
+  const rs = recordingReadableStream();
+
+  const ws = recordingWritableStream({
+    abort() {
+      throw error2;
+    }
+  });
+
+  const pipePromise = promise_rejects(t, error2, rs.pipeTo(ws), 'pipeTo must reject with the abort error');
+
+  setTimeout(() =&gt; {
+    rs.controller.enqueue('Hello');
+    setTimeout(() =&gt; rs.controller.error(error1), 10);
+  }, 10);
+
+  return pipePromise.then(() =&gt; {
+    assert_array_equals(rs.eventsWithoutPulls, []);
+    assert_array_equals(ws.events, ['write', 'Hello', 'abort', error1]);
+  });
+
+}, 'Errors must be propagated forward: becomes errored after one chunk; preventAbort = false; rejected abort promise');
+
+promise_test(t =&gt; {
+
+  const rs = recordingReadableStream();
+
+  const ws = recordingWritableStream();
+
+  const pipePromise = promise_rejects(t, error1, rs.pipeTo(ws, { preventAbort: true }),
+                                      'pipeTo must reject with the same error');
+
+  setTimeout(() =&gt; {
+    rs.controller.enqueue('Hello');
+    setTimeout(() =&gt; rs.controller.error(error1), 10);
+  }, 10);
+
+  return pipePromise.then(() =&gt; {
+    assert_array_equals(rs.eventsWithoutPulls, []);
+    assert_array_equals(ws.events, ['write', 'Hello']);
+  });
+
+}, 'Errors must be propagated forward: becomes errored after one chunk; preventAbort = true');
+
+promise_test(t =&gt; {
+
+  const rs = recordingReadableStream();
+
+  const ws = recordingWritableStream(undefined, new CountQueuingStrategy({ highWaterMark: 0 }));
+
+  const pipePromise = promise_rejects(t, error1, rs.pipeTo(ws), 'pipeTo must reject with the same error');
+
+  setTimeout(() =&gt; {
+    rs.controller.enqueue('Hello');
+    setTimeout(() =&gt; rs.controller.error(error1), 10);
+  }, 10);
+
+  return pipePromise.then(() =&gt; {
+    assert_array_equals(rs.eventsWithoutPulls, []);
+    assert_array_equals(ws.events, ['abort', error1]);
+  });
+
+}, 'Errors must be propagated forward: becomes errored after one chunk; dest never desires chunks; ' +
+   'preventAbort = false; fulfilled abort promise');
+
+promise_test(t =&gt; {
+
+  const rs = recordingReadableStream();
+
+  const ws = recordingWritableStream({
+    abort() {
+      throw error2;
+    }
+  }, new CountQueuingStrategy({ highWaterMark: 0 }));
+
+  const pipePromise = promise_rejects(t, error2, rs.pipeTo(ws), 'pipeTo must reject with the abort error');
+
+  setTimeout(() =&gt; {
+    rs.controller.enqueue('Hello');
+    setTimeout(() =&gt; rs.controller.error(error1), 10);
+  }, 10);
+
+  return pipePromise.then(() =&gt; {
+    assert_array_equals(rs.eventsWithoutPulls, []);
+    assert_array_equals(ws.events, ['abort', error1]);
+  });
+
+}, 'Errors must be propagated forward: becomes errored after one chunk; dest never desires chunks; ' +
+   'preventAbort = false; rejected abort promise');
+
+promise_test(t =&gt; {
+
+  const rs = recordingReadableStream();
+
+  const ws = recordingWritableStream(undefined, new CountQueuingStrategy({ highWaterMark: 0 }));
+
+  const pipePromise = promise_rejects(t, error1, rs.pipeTo(ws, { preventAbort: true }),
+                                      'pipeTo must reject with the same error');
+
+  setTimeout(() =&gt; {
+    rs.controller.enqueue('Hello');
+    setTimeout(() =&gt; rs.controller.error(error1), 10);
+  }, 10);
+
+  return pipePromise.then(() =&gt; {
+    assert_array_equals(rs.eventsWithoutPulls, []);
+    assert_array_equals(ws.events, []);
+  });
+
+}, 'Errors must be propagated forward: becomes errored after one chunk; dest never desires chunks; ' +
+   'preventAbort = true');
+
+promise_test(t =&gt; {
+
+  const rs = recordingReadableStream();
+
+  let resolveWriteCalled;
+  const writeCalledPromise = new Promise(resolve =&gt; {
+    resolveWriteCalled = resolve;
+  });
+
+  let resolveWritePromise;
+  const ws = recordingWritableStream({
+    write() {
+      resolveWriteCalled();
+
+      return new Promise(resolve =&gt; {
+        resolveWritePromise = resolve;
+      });
+    }
+  });
+
+  let pipeComplete = false;
+  const pipePromise = promise_rejects(t, error1, rs.pipeTo(ws)).then(() =&gt; {
+    pipeComplete = true;
+  });
+
+  rs.controller.enqueue('a');
+
+  return writeCalledPromise.then(() =&gt; {
+    rs.controller.error(error1);
+
+    // Flush async events and verify that no shutdown occurs.
+    return flushAsyncEvents();
+  }).then(() =&gt; {
+    assert_array_equals(ws.events, ['write', 'a']); // no 'abort'
+    assert_equals(pipeComplete, false, 'the pipe must not be complete');
+
+    resolveWritePromise();
+
+    return pipePromise.then(() =&gt; {
+      assert_array_equals(ws.events, ['write', 'a', 'abort', error1]);
+    });
+  });
+
+}, 'Errors must be propagated forward: shutdown must not occur until the final write completes');
+
+done();
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingerrorpropagationforwardserviceworkerhttpsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-forward.serviceworker.https-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-forward.serviceworker.https-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-forward.serviceworker.https-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+FAIL Service worker test setup undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingerrorpropagationforwardserviceworkerhttpshtmlfromrev212201trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsreadablestreamreaderhttpshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-forward.serviceworker.https.html (from rev 212201, trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader.https.html) (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-forward.serviceworker.https.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-forward.serviceworker.https.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;error-propagation-forward.js service worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/service-workers/service-worker/resources/test-helpers.sub.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+service_worker_test('error-propagation-forward.js', 'Service worker test setup');
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingerrorpropagationforwardsharedworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-forward.sharedworker-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-forward.sharedworker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-forward.sharedworker-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+CONSOLE MESSAGE: line 10: ReferenceError: Can't find variable: SharedWorker
+
+Harness Error (FAIL), message = ReferenceError: Can't find variable: SharedWorker
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingerrorpropagationforwardsharedworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-forward.sharedworker.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-forward.sharedworker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-forward.sharedworker.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;error-propagation-forward.js shared worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+fetch_tests_from_worker(new SharedWorker('error-propagation-forward.js'));
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingflowcontrolexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/flow-control-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/flow-control-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/flow-control-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+
+FAIL Piping from a non-empty ReadableStream into a WritableStream that does not desire chunks promise_test: Unhandled rejection with value: object &quot;TypeError: ws.controller.error is not a function. (In 'ws.controller.error(error1)', 'ws.controller.error' is undefined)&quot;
+FAIL Piping from a non-empty ReadableStream into a WritableStream that does not desire chunks, but then does ws.getWriter is not a function. (In 'ws.getWriter()', 'ws.getWriter' is undefined)
+FAIL Piping from an empty ReadableStream into a WritableStream that does not desire chunks, but then the readable stream becomes non-empty and the writable stream starts desiring chunks ws.getWriter is not a function. (In 'ws.getWriter()', 'ws.getWriter' is undefined)
+FAIL Piping to a WritableStream that does not consume the writes fast enough exerts backpressure on the ReadableStream assert_array_equals: at t = 225 ms, the desiredSize at the last enqueue (200 ms) must have been 0 property 1, expected 0 but got 1
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingflowcontroldedicatedworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/flow-control.dedicatedworker-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/flow-control.dedicatedworker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/flow-control.dedicatedworker-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+
+FAIL Piping from a non-empty ReadableStream into a WritableStream that does not desire chunks Can't find variable: WritableStream
+FAIL Piping from a non-empty ReadableStream into a WritableStream that does not desire chunks, but then does Can't find variable: WritableStream
+FAIL Piping from an empty ReadableStream into a WritableStream that does not desire chunks, but then the readable stream becomes non-empty and the writable stream starts desiring chunks Can't find variable: WritableStream
+FAIL Piping to a WritableStream that does not consume the writes fast enough exerts backpressure on the ReadableStream Can't find variable: WritableStream
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingflowcontroldedicatedworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/flow-control.dedicatedworker.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/flow-control.dedicatedworker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/flow-control.dedicatedworker.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;flow-control.js dedicated worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+fetch_tests_from_worker(new Worker('flow-control.js'));
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingflowcontrolhtmlfromrev212201trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamscancelhttpshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/flow-control.html (from rev 212201, trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel.https.html) (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/flow-control.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/flow-control.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;flow-control.js browser context wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script src=&quot;../resources/test-utils.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../resources/rs-utils.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../resources/recording-streams.js&quot;&gt;&lt;/script&gt;
+
+&lt;script src=&quot;flow-control.js&quot;&gt;&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingflowcontroljs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/flow-control.js (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/flow-control.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/flow-control.js        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,226 @@
</span><ins>+'use strict';
+
+if (self.importScripts) {
+  self.importScripts('/resources/testharness.js');
+  self.importScripts('../resources/test-utils.js');
+  self.importScripts('../resources/rs-utils.js');
+  self.importScripts('../resources/recording-streams.js');
+}
+
+const error1 = new Error('error1!');
+error1.name = 'error1';
+
+promise_test(t =&gt; {
+
+  const rs = recordingReadableStream({
+    start(controller) {
+      controller.enqueue('a');
+      controller.enqueue('b');
+      controller.close();
+    }
+  });
+
+  const ws = recordingWritableStream(undefined, new CountQueuingStrategy({ highWaterMark: 0 }));
+
+  const pipePromise = rs.pipeTo(ws, { preventCancel: true });
+
+  // Wait and make sure it doesn't do any reading.
+  return flushAsyncEvents().then(() =&gt; {
+    ws.controller.error(error1);
+  })
+  .then(() =&gt; promise_rejects(t, error1, pipePromise, 'pipeTo must reject with the same error'))
+  .then(() =&gt; {
+    assert_array_equals(rs.eventsWithoutPulls, []);
+    assert_array_equals(ws.events, []);
+  })
+  .then(() =&gt; readableStreamToArray(rs))
+  .then(chunksNotPreviouslyRead =&gt; {
+    assert_array_equals(chunksNotPreviouslyRead, ['a', 'b']);
+  });
+
+}, 'Piping from a non-empty ReadableStream into a WritableStream that does not desire chunks');
+
+promise_test(() =&gt; {
+
+  const rs = recordingReadableStream({
+    start(controller) {
+      controller.enqueue('b');
+      controller.close();
+    }
+  });
+
+  let resolveWritePromise;
+  const ws = recordingWritableStream({
+    write() {
+      if (!resolveWritePromise) {
+        // first write
+        return new Promise(resolve =&gt; {
+          resolveWritePromise = resolve;
+        });
+      }
+      return undefined;
+    }
+  });
+
+  const writer = ws.getWriter();
+  const firstWritePromise = writer.write('a');
+  assert_equals(writer.desiredSize, 0, 'after writing the writer\'s desiredSize must be 0');
+  writer.releaseLock();
+
+  // firstWritePromise won't settle until we call resolveWritePromise.
+
+  const pipePromise = rs.pipeTo(ws);
+
+  return flushAsyncEvents().then(() =&gt; resolveWritePromise())
+    .then(() =&gt; Promise.all([firstWritePromise, pipePromise]))
+    .then(() =&gt; {
+      assert_array_equals(rs.eventsWithoutPulls, []);
+      assert_array_equals(ws.events, ['write', 'a', 'write', 'b', 'close']);
+    });
+
+}, 'Piping from a non-empty ReadableStream into a WritableStream that does not desire chunks, but then does');
+
+promise_test(() =&gt; {
+
+  const rs = recordingReadableStream();
+
+  const startPromise = Promise.resolve();
+  let resolveWritePromise;
+  const ws = recordingWritableStream({
+    start() {
+      return startPromise;
+    },
+    write() {
+      if (!resolveWritePromise) {
+        // first write
+        return new Promise(resolve =&gt; {
+          resolveWritePromise = resolve;
+        });
+      }
+      return undefined;
+    }
+  });
+
+  const writer = ws.getWriter();
+  writer.write('a');
+
+  return startPromise.then(() =&gt; {
+    assert_array_equals(ws.events, ['write', 'a']);
+    assert_equals(writer.desiredSize, 0, 'after writing the writer\'s desiredSize must be 0');
+    writer.releaseLock();
+
+    const pipePromise = rs.pipeTo(ws);
+
+    rs.controller.enqueue('b');
+    resolveWritePromise();
+    rs.controller.close();
+
+    return pipePromise.then(() =&gt; {
+      assert_array_equals(rs.eventsWithoutPulls, []);
+      assert_array_equals(ws.events, ['write', 'a', 'write', 'b', 'close']);
+    });
+  });
+
+}, 'Piping from an empty ReadableStream into a WritableStream that does not desire chunks, but then the readable ' +
+   'stream becomes non-empty and the writable stream starts desiring chunks');
+
+promise_test(() =&gt; {
+
+  const desiredSizes = [];
+  const rs = recordingReadableStream({
+    start(controller) {
+      delay(100).then(() =&gt; enqueue('a'));
+      delay(200).then(() =&gt; enqueue('b'));
+      delay(300).then(() =&gt; enqueue('c'));
+      delay(400).then(() =&gt; enqueue('d'));
+      delay(500).then(() =&gt; controller.close());
+
+      function enqueue(chunk) {
+        controller.enqueue(chunk);
+        desiredSizes.push(controller.desiredSize);
+      }
+    }
+  });
+
+  const chunksFinishedWriting = [];
+  const writableStartPromise = Promise.resolve();
+  const ws = recordingWritableStream({
+    start() {
+      return writableStartPromise;
+    },
+    write(chunk) {
+      return delay(350).then(() =&gt; {
+        chunksFinishedWriting.push(chunk);
+      });
+    }
+  });
+
+  return writableStartPromise.then(() =&gt; {
+    return Promise.all([
+      rs.pipeTo(ws).then(() =&gt; {
+        assert_array_equals(desiredSizes, [1, 0, -1, -2], 'backpressure must have been exerted at the source');
+        assert_array_equals(chunksFinishedWriting, ['a', 'b', 'c', 'd'], 'all chunks started writing');
+
+        assert_array_equals(rs.eventsWithoutPulls, [], 'nothing unexpected should happen to the ReadableStream');
+        assert_array_equals(ws.events, ['write', 'a', 'write', 'b', 'write', 'c', 'write', 'd', 'close'],
+          'all chunks were written (and the WritableStream closed)');
+      }),
+
+      delay(125).then(() =&gt; {
+        assert_array_equals(chunksFinishedWriting, [], 'at t = 125 ms, zero chunks must have finished writing');
+        assert_array_equals(ws.events, ['write', 'a'], 'at t = 125 ms, one chunk must have been written');
+
+        // When 'a' (the very first chunk) was enqueued, it was immediately used to fulfill the outstanding read request
+        // promise, leaving the queue empty.
+        assert_array_equals(desiredSizes, [1],
+          'at t = 125 ms, the desiredSize at the last enqueue (100 ms) must have been 1');
+        assert_equals(rs.controller.desiredSize, 1, 'at t = 125 ms, the current desiredSize must be 1');
+      }),
+
+      delay(225).then(() =&gt; {
+        assert_array_equals(chunksFinishedWriting, [], 'at t = 225 ms, zero chunks must have finished writing');
+        assert_array_equals(ws.events, ['write', 'a'], 'at t = 225 ms, one chunk must have been written');
+
+        // When 'b' was enqueued at 200 ms, the queue was also empty, since immediately after enqueuing 'a' at
+        // t = 100 ms, it was dequeued in order to fulfill the read() call that was made at time t = 0. Thus the queue
+        // had size 1 (thus desiredSize of 0).
+        assert_array_equals(desiredSizes, [1, 0],
+          'at t = 225 ms, the desiredSize at the last enqueue (200 ms) must have been 0');
+        assert_equals(rs.controller.desiredSize, 0, 'at t = 225 ms, the current desiredSize must be 0');
+      }),
+
+      delay(325).then(() =&gt; {
+        assert_array_equals(chunksFinishedWriting, [], 'at t = 325 ms, zero chunks must have finished writing');
+        assert_array_equals(ws.events, ['write', 'a'], 'at t = 325 ms, one chunk must have been written');
+
+        // When 'c' was enqueued at 300 ms, the queue was not empty; it had 'b' in it, since 'b' will not be read until
+        // the first write completes at 450 ms. Thus, the queue size is 2 after enqueuing 'c', giving a desiredSize of
+        // -1.
+        assert_array_equals(desiredSizes, [1, 0, -1],
+          'at t = 325 ms, the desiredSize at the last enqueue (300 ms) must have been -1');
+        assert_equals(rs.controller.desiredSize, -1, 'at t = 325 ms, the current desiredSize must be -1');
+      }),
+
+      delay(425).then(() =&gt; {
+        assert_array_equals(chunksFinishedWriting, [], 'at t = 425 ms, zero chunks must have finished writing');
+        assert_array_equals(ws.events, ['write', 'a'], 'at t = 425 ms, one chunk must have been written');
+
+        // When 'd' was enqueued at 400 ms, the situation is the same as before, leading to a queue containing 'b', 'c',
+        // and 'd'. (Remember the first write will only finish at 100 ms + 350 ms = 450 ms.)
+        assert_array_equals(desiredSizes, [1, 0, -1, -2],
+          'at t = 425 ms, the desiredSize at the last enqueue (400 ms) must have been -2');
+        assert_equals(rs.controller.desiredSize, -2, 'at t = 425 ms, the current desiredSize must be -2');
+      }),
+
+      delay(475).then(() =&gt; {
+        assert_array_equals(chunksFinishedWriting, ['a'], 'at t = 475 ms, one chunk must have finished writing');
+        assert_array_equals(ws.events, ['write', 'a', 'write', 'b'],
+          'at t = 475 ms, two chunks must have been written');
+
+        assert_equals(rs.controller.desiredSize, -1, 'at t = 475 ms, the current desiredSize must be -1');
+      })
+    ]);
+  });
+}, 'Piping to a WritableStream that does not consume the writes fast enough exerts backpressure on the ReadableStream');
+
+done();
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingflowcontrolserviceworkerhttpsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/flow-control.serviceworker.https-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/flow-control.serviceworker.https-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/flow-control.serviceworker.https-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+FAIL Service worker test setup undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingflowcontrolserviceworkerhttpshtmlfromrev212201trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadstrategieshttpshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/flow-control.serviceworker.https.html (from rev 212201, trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.https.html) (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/flow-control.serviceworker.https.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/flow-control.serviceworker.https.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;flow-control.js service worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/service-workers/service-worker/resources/test-helpers.sub.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+service_worker_test('flow-control.js', 'Service worker test setup');
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingflowcontrolsharedworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/flow-control.sharedworker-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/flow-control.sharedworker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/flow-control.sharedworker-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+CONSOLE MESSAGE: line 10: ReferenceError: Can't find variable: SharedWorker
+
+Harness Error (FAIL), message = ReferenceError: Can't find variable: SharedWorker
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingflowcontrolsharedworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/flow-control.sharedworker.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/flow-control.sharedworker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/flow-control.sharedworker.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;flow-control.js shared worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+fetch_tests_from_worker(new SharedWorker('flow-control.js'));
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipinggeneralexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/general-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/general-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/general-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,14 @@
</span><ins>+
+FAIL Piping must lock both the ReadableStream and WritableStream assert_false: sanity check: the WritableStream must not start locked expected false got undefined
+FAIL Piping finishing must unlock both the ReadableStream and WritableStream assert_false: the WritableStream must become unlocked expected false got undefined
+FAIL pipeTo must check the brand of its ReadableStream this value Can only call ReadableStream.getReader on instances of ReadableStream
+PASS pipeTo must check the brand of its WritableStream argument 
+FAIL pipeTo must fail if the ReadableStream is locked, and not lock the WritableStream assert_false: sanity check: the WritableStream does not start locked expected false got undefined
+FAIL pipeTo must fail if the WritableStream is locked, and not lock the ReadableStream ws.getWriter is not a function. (In 'ws.getWriter()', 'ws.getWriter' is undefined)
+FAIL Piping from a ReadableStream from which lots of chunks are synchronously readable promise_test: Unhandled rejection with value: object &quot;TypeError: ws.getWriter is not a function. (In 'ws.getWriter()', 'ws.getWriter' is undefined)&quot;
+FAIL Piping from a ReadableStream for which a chunk becomes asynchronously readable after the pipeTo assert_array_equals: close must always be called with the controller lengths differ, expected 1 got 0
+PASS an undefined rejection from pull should cause pipeTo() to reject when preventAbort is true 
+PASS an undefined rejection from pull should cause pipeTo() to reject when preventAbort is false 
+PASS an undefined rejection from write should cause pipeTo() to reject when preventCancel is true 
+PASS an undefined rejection from write should cause pipeTo() to reject when preventCancel is false 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipinggeneraldedicatedworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/general.dedicatedworker-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/general.dedicatedworker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/general.dedicatedworker-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,14 @@
</span><ins>+
+FAIL Piping must lock both the ReadableStream and WritableStream Can't find variable: WritableStream
+FAIL Piping finishing must unlock both the ReadableStream and WritableStream Can't find variable: WritableStream
+FAIL pipeTo must check the brand of its ReadableStream this value Can't find variable: WritableStream
+FAIL pipeTo must check the brand of its WritableStream argument Can't find variable: WritableStream
+FAIL pipeTo must fail if the ReadableStream is locked, and not lock the WritableStream Can't find variable: WritableStream
+FAIL pipeTo must fail if the WritableStream is locked, and not lock the ReadableStream Can't find variable: WritableStream
+FAIL Piping from a ReadableStream from which lots of chunks are synchronously readable Can't find variable: WritableStream
+FAIL Piping from a ReadableStream for which a chunk becomes asynchronously readable after the pipeTo Can't find variable: WritableStream
+FAIL an undefined rejection from pull should cause pipeTo() to reject when preventAbort is true Can't find variable: WritableStream
+FAIL an undefined rejection from pull should cause pipeTo() to reject when preventAbort is false Can't find variable: WritableStream
+FAIL an undefined rejection from write should cause pipeTo() to reject when preventCancel is true Can't find variable: WritableStream
+FAIL an undefined rejection from write should cause pipeTo() to reject when preventCancel is false Can't find variable: WritableStream
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipinggeneraldedicatedworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/general.dedicatedworker.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/general.dedicatedworker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/general.dedicatedworker.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;general.js dedicated worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+fetch_tests_from_worker(new Worker('general.js'));
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipinggeneralhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/general.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/general.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/general.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;general.js browser context wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script src=&quot;../resources/test-utils.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../resources/recording-streams.js&quot;&gt;&lt;/script&gt;
+
+&lt;script src=&quot;general.js&quot;&gt;&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipinggeneraljs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/general.js (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/general.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/general.js        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,195 @@
</span><ins>+'use strict';
+
+if (self.importScripts) {
+  self.importScripts('/resources/testharness.js');
+  self.importScripts('../resources/test-utils.js');
+  self.importScripts('../resources/recording-streams.js');
+}
+
+test(() =&gt; {
+
+  const rs = new ReadableStream();
+  const ws = new WritableStream();
+
+  assert_false(rs.locked, 'sanity check: the ReadableStream must not start locked');
+  assert_false(ws.locked, 'sanity check: the WritableStream must not start locked');
+
+  rs.pipeTo(ws);
+
+  assert_true(rs.locked, 'the ReadableStream must become locked');
+  assert_true(ws.locked, 'the WritableStream must become locked');
+
+}, 'Piping must lock both the ReadableStream and WritableStream');
+
+promise_test(() =&gt; {
+
+  const rs = new ReadableStream({
+    start(controller) {
+      controller.close();
+    }
+  });
+  const ws = new WritableStream();
+
+  return rs.pipeTo(ws).then(() =&gt; {
+    assert_false(rs.locked, 'the ReadableStream must become unlocked');
+    assert_false(ws.locked, 'the WritableStream must become unlocked');
+  });
+
+}, 'Piping finishing must unlock both the ReadableStream and WritableStream');
+
+promise_test(t =&gt; {
+
+  const fakeRS = Object.create(ReadableStream.prototype);
+  const ws = new WritableStream();
+
+  return methodRejects(t, ReadableStream.prototype, 'pipeTo', fakeRS, [ws]);
+
+}, 'pipeTo must check the brand of its ReadableStream this value');
+
+promise_test(t =&gt; {
+
+  const rs = new ReadableStream();
+  const fakeWS = Object.create(WritableStream.prototype);
+
+  return methodRejects(t, ReadableStream.prototype, 'pipeTo', rs, [fakeWS]);
+
+}, 'pipeTo must check the brand of its WritableStream argument');
+
+promise_test(t =&gt; {
+
+  const rs = new ReadableStream();
+  const ws = new WritableStream();
+
+  rs.getReader();
+
+  assert_true(rs.locked, 'sanity check: the ReadableStream starts locked');
+  assert_false(ws.locked, 'sanity check: the WritableStream does not start locked');
+
+  return promise_rejects(t, new TypeError(), rs.pipeTo(ws)).then(() =&gt; {
+    assert_false(ws.locked, 'the WritableStream must still be unlocked');
+  });
+
+}, 'pipeTo must fail if the ReadableStream is locked, and not lock the WritableStream');
+
+promise_test(t =&gt; {
+
+  const rs = new ReadableStream();
+  const ws = new WritableStream();
+
+  ws.getWriter();
+
+  assert_false(rs.locked, 'sanity check: the ReadableStream does not start locked');
+  assert_true(ws.locked, 'sanity check: the WritableStream starts locked');
+
+  return promise_rejects(t, new TypeError(), rs.pipeTo(ws)).then(() =&gt; {
+    assert_false(rs.locked, 'the ReadableStream must still be unlocked');
+  });
+
+}, 'pipeTo must fail if the WritableStream is locked, and not lock the ReadableStream');
+
+promise_test(() =&gt; {
+
+  const CHUNKS = 10;
+
+  const rs = new ReadableStream({
+    start(c) {
+      for (let i = 0; i &lt; CHUNKS; ++i) {
+        c.enqueue(i);
+      }
+      c.close();
+    }
+  });
+
+  const written = [];
+  const ws = new WritableStream({
+    write(chunk) {
+      written.push(chunk);
+    },
+    close() {
+      written.push('closed');
+    }
+  }, new CountQueuingStrategy({ highWaterMark: CHUNKS }));
+
+  return rs.pipeTo(ws).then(() =&gt; {
+    const targetValues = [];
+    for (let i = 0; i &lt; CHUNKS; ++i) {
+      targetValues.push(i);
+    }
+    targetValues.push('closed');
+
+    assert_array_equals(written, targetValues, 'the correct values must be written');
+
+    // Ensure both readable and writable are closed by the time the pipe finishes.
+    return Promise.all([
+      rs.getReader().closed,
+      ws.getWriter().closed
+    ]);
+  });
+
+  // NOTE: no requirement on *when* the pipe finishes; that is left to implementations.
+
+}, 'Piping from a ReadableStream from which lots of chunks are synchronously readable');
+
+promise_test(() =&gt; {
+
+  let controller;
+  const rs = recordingReadableStream({
+    start(c) {
+      controller = c;
+    }
+  });
+
+  const ws = recordingWritableStream();
+
+  const pipePromise = rs.pipeTo(ws).then(() =&gt; {
+    assert_array_equals(ws.events, ['write', 'Hello', 'close']);
+  });
+
+  setTimeout(() =&gt; {
+    controller.enqueue('Hello');
+    setTimeout(() =&gt; controller.close(), 10);
+  }, 10);
+
+  return pipePromise;
+
+}, 'Piping from a ReadableStream for which a chunk becomes asynchronously readable after the pipeTo');
+
+for (const preventAbort of [true, false]) {
+  promise_test(t =&gt; {
+
+    const rs = new ReadableStream({
+      pull() {
+        return Promise.reject(undefined);
+      }
+    });
+
+    return rs.pipeTo(new WritableStream(), { preventAbort }).then(
+        () =&gt; assert_unreached('pipeTo promise should be rejected'),
+        value =&gt; assert_equals(value, undefined, 'rejection value should be undefined'));
+
+  }, `an undefined rejection from pull should cause pipeTo() to reject when preventAbort is ${preventAbort}`);
+}
+
+for (const preventCancel of [true, false]) {
+  promise_test(t =&gt; {
+
+    const rs = new ReadableStream({
+      pull(controller) {
+        controller.enqueue(0);
+      }
+    });
+
+    const ws = new WritableStream({
+      write() {
+        return Promise.reject(undefined);
+      }
+    });
+
+    return rs.pipeTo(ws, { preventCancel }).then(
+         () =&gt; assert_unreached('pipeTo promise should be rejected'),
+        value =&gt; assert_equals(value, undefined, 'rejection value should be undefined'));
+
+  }, `an undefined rejection from write should cause pipeTo() to reject when preventCancel is ${preventCancel}`);
+}
+
+done();
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipinggeneralserviceworkerhttpsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/general.serviceworker.https-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/general.serviceworker.https-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/general.serviceworker.https-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+FAIL Service worker test setup undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipinggeneralserviceworkerhttpshtmlfromrev212201trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadstrategieshttpshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/general.serviceworker.https.html (from rev 212201, trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.https.html) (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/general.serviceworker.https.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/general.serviceworker.https.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;general.js service worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/service-workers/service-worker/resources/test-helpers.sub.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+service_worker_test('general.js', 'Service worker test setup');
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipinggeneralsharedworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/general.sharedworker-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/general.sharedworker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/general.sharedworker-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+CONSOLE MESSAGE: line 10: ReferenceError: Can't find variable: SharedWorker
+
+Harness Error (FAIL), message = ReferenceError: Can't find variable: SharedWorker
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipinggeneralsharedworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/general.sharedworker.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/general.sharedworker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/general.sharedworker.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;general.js shared worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+fetch_tests_from_worker(new SharedWorker('general.js'));
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingmultiplepropagationexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/multiple-propagation-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/multiple-propagation-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/multiple-propagation-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+
+FAIL Piping from an errored readable stream to an errored writable stream c.error is not a function. (In 'c.error(error2)', 'c.error' is undefined)
+FAIL Piping from an errored readable stream to an errored writable stream; preventAbort = true c.error is not a function. (In 'c.error(error2)', 'c.error' is undefined)
+FAIL Piping from an errored readable stream to a closed writable stream ws.getWriter is not a function. (In 'ws.getWriter()', 'ws.getWriter' is undefined)
+FAIL Piping from a closed readable stream to an errored writable stream c.error is not a function. (In 'c.error(error1)', 'c.error' is undefined)
+FAIL Piping from a closed readable stream to a closed writable stream ws.getWriter is not a function. (In 'ws.getWriter()', 'ws.getWriter' is undefined)
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingmultiplepropagationdedicatedworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/multiple-propagation.dedicatedworker-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/multiple-propagation.dedicatedworker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/multiple-propagation.dedicatedworker-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+
+FAIL Piping from an errored readable stream to an errored writable stream Can't find variable: WritableStream
+FAIL Piping from an errored readable stream to an errored writable stream; preventAbort = true Can't find variable: WritableStream
+FAIL Piping from an errored readable stream to a closed writable stream Can't find variable: WritableStream
+FAIL Piping from a closed readable stream to an errored writable stream Can't find variable: WritableStream
+FAIL Piping from a closed readable stream to a closed writable stream Can't find variable: WritableStream
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingmultiplepropagationdedicatedworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/multiple-propagation.dedicatedworker.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/multiple-propagation.dedicatedworker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/multiple-propagation.dedicatedworker.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;multiple-propagation.js dedicated worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+fetch_tests_from_worker(new Worker('multiple-propagation.js'));
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingmultiplepropagationhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/multiple-propagation.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/multiple-propagation.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/multiple-propagation.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;multiple-propagation.js browser context wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script src=&quot;../resources/test-utils.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../resources/recording-streams.js&quot;&gt;&lt;/script&gt;
+
+&lt;script src=&quot;multiple-propagation.js&quot;&gt;&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingmultiplepropagationjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/multiple-propagation.js (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/multiple-propagation.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/multiple-propagation.js        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,136 @@
</span><ins>+'use strict';
+
+if (self.importScripts) {
+  self.importScripts('/resources/testharness.js');
+  self.importScripts('../resources/test-utils.js');
+  self.importScripts('../resources/recording-streams.js');
+}
+
+const error1 = new Error('error1!');
+error1.name = 'error1';
+
+const error2 = new Error('error2!');
+error2.name = 'error2';
+
+promise_test(t =&gt; {
+  const rs = recordingReadableStream({
+    start(c) {
+      c.error(error1);
+    }
+  });
+  const ws = recordingWritableStream({
+    start(c) {
+      c.error(error2);
+    }
+  });
+
+  // Trying to abort a stream that was errored will give that error back
+  return promise_rejects(t, error2, rs.pipeTo(ws), 'pipeTo must reject with the writable stream\'s error').then(() =&gt; {
+    assert_array_equals(rs.events, []);
+    assert_array_equals(ws.events, []);
+
+    return Promise.all([
+      promise_rejects(t, error1, rs.getReader().closed, 'the readable stream must be errored with error1'),
+      promise_rejects(t, error2, ws.getWriter().closed, 'the writable stream must be errored with error2')
+    ]);
+  });
+
+}, 'Piping from an errored readable stream to an errored writable stream');
+
+promise_test(t =&gt; {
+  const rs = recordingReadableStream({
+    start(c) {
+      c.error(error1);
+    }
+  });
+  const ws = recordingWritableStream({
+    start(c) {
+      c.error(error2);
+    }
+  });
+
+  return promise_rejects(t, error1, rs.pipeTo(ws, { preventAbort: true }),
+    'pipeTo must reject with the readable stream\'s error')
+  .then(() =&gt; {
+    assert_array_equals(rs.events, []);
+    assert_array_equals(ws.events, []);
+
+    return Promise.all([
+      promise_rejects(t, error1, rs.getReader().closed, 'the readable stream must be errored with error1'),
+      promise_rejects(t, error2, ws.getWriter().closed, 'the writable stream must be errored with error2')
+    ]);
+  });
+
+}, 'Piping from an errored readable stream to an errored writable stream; preventAbort = true');
+
+promise_test(t =&gt; {
+  const rs = recordingReadableStream({
+    start(c) {
+      c.error(error1);
+    }
+  });
+  const ws = recordingWritableStream();
+  const writer = ws.getWriter();
+  writer.close();
+  writer.releaseLock();
+
+  return promise_rejects(t, error1, rs.pipeTo(ws), 'pipeTo must reject with the readable stream\'s error').then(() =&gt; {
+    assert_array_equals(rs.events, []);
+    assert_array_equals(ws.events, ['close']);
+
+    return Promise.all([
+      promise_rejects(t, error1, rs.getReader().closed, 'the readable stream must be errored with error1'),
+      ws.getWriter().closed
+    ]);
+  });
+
+}, 'Piping from an errored readable stream to a closed writable stream');
+
+promise_test(t =&gt; {
+  const rs = recordingReadableStream({
+    start(c) {
+      c.close();
+    }
+  });
+  const ws = recordingWritableStream({
+    start(c) {
+      c.error(error1);
+    }
+  });
+
+  return promise_rejects(t, error1, rs.pipeTo(ws), 'pipeTo must reject with the writable stream\'s error').then(() =&gt; {
+    assert_array_equals(rs.events, []);
+    assert_array_equals(ws.events, []);
+
+    return Promise.all([
+      rs.getReader().closed,
+      promise_rejects(t, error1, ws.getWriter().closed, 'the writable stream must be errored with error1')
+    ]);
+  });
+
+}, 'Piping from a closed readable stream to an errored writable stream');
+
+promise_test(() =&gt; {
+  const rs = recordingReadableStream({
+    start(c) {
+      c.close();
+    }
+  });
+  const ws = recordingWritableStream();
+  const writer = ws.getWriter();
+  writer.close();
+  writer.releaseLock();
+
+  return rs.pipeTo(ws).then(() =&gt; {
+    assert_array_equals(rs.events, []);
+    assert_array_equals(ws.events, ['close']);
+
+    return Promise.all([
+      rs.getReader().closed,
+      ws.getWriter().closed
+    ]);
+  });
+
+}, 'Piping from a closed readable stream to a closed writable stream');
+
+done();
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingmultiplepropagationserviceworkerhttpsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/multiple-propagation.serviceworker.https-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/multiple-propagation.serviceworker.https-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/multiple-propagation.serviceworker.https-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+FAIL Service worker test setup undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingmultiplepropagationserviceworkerhttpshtmlfromrev212201trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadstrategieshttpshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/multiple-propagation.serviceworker.https.html (from rev 212201, trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.https.html) (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/multiple-propagation.serviceworker.https.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/multiple-propagation.serviceworker.https.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;multiple-propagation.js service worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/service-workers/service-worker/resources/test-helpers.sub.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+service_worker_test('multiple-propagation.js', 'Service worker test setup');
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingmultiplepropagationsharedworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/multiple-propagation.sharedworker-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/multiple-propagation.sharedworker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/multiple-propagation.sharedworker-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+CONSOLE MESSAGE: line 10: ReferenceError: Can't find variable: SharedWorker
+
+Harness Error (FAIL), message = ReferenceError: Can't find variable: SharedWorker
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingmultiplepropagationsharedworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/multiple-propagation.sharedworker.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/multiple-propagation.sharedworker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/multiple-propagation.sharedworker.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;multiple-propagation.js shared worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+fetch_tests_from_worker(new SharedWorker('multiple-propagation.js'));
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingpipethroughexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/pipe-through-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/pipe-through-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/pipe-through-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+
+PASS Piping through a duck-typed pass-through transform stream should work 
+FAIL Piping through a transform errored on the writable end does not cause an unhandled promise rejection c.error is not a function. (In 'c.error(new Error('this rejection should not be reported as unhandled'))', 'c.error' is undefined)
+PASS pipeThrough generically calls pipeTo with the appropriate args 
+PASS pipeThrough can handle calling a pipeTo that returns a non-promise object 
+PASS pipeThrough can handle calling a pipeTo that returns a non-promise thenable object 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingpipethroughdedicatedworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/pipe-through.dedicatedworker-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/pipe-through.dedicatedworker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/pipe-through.dedicatedworker-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+
+FAIL Piping through a duck-typed pass-through transform stream should work Can't find variable: WritableStream
+FAIL Piping through a transform errored on the writable end does not cause an unhandled promise rejection Can't find variable: WritableStream
+PASS pipeThrough generically calls pipeTo with the appropriate args 
+PASS pipeThrough can handle calling a pipeTo that returns a non-promise object 
+PASS pipeThrough can handle calling a pipeTo that returns a non-promise thenable object 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingpipethroughdedicatedworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/pipe-through.dedicatedworker.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/pipe-through.dedicatedworker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/pipe-through.dedicatedworker.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;pipe-through.js dedicated worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+fetch_tests_from_worker(new Worker('pipe-through.js'));
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingpipethroughhtmlfromrev212201trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamspipethroughhttpshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/pipe-through.html (from rev 212201, trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/pipe-through.https.html) (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/pipe-through.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/pipe-through.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;pipe-through.js browser context wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script src=&quot;../resources/rs-utils.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../resources/test-utils.js&quot;&gt;&lt;/script&gt;
+
+&lt;script src=&quot;pipe-through.js&quot;&gt;&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingpipethroughjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/pipe-through.js (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/pipe-through.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/pipe-through.js        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,107 @@
</span><ins>+'use strict';
+
+if (self.importScripts) {
+  self.importScripts('/resources/testharness.js');
+  self.importScripts('../resources/rs-utils.js');
+  self.importScripts('../resources/test-utils.js');
+}
+
+function duckTypedPassThroughTransform() {
+  let enqueueInReadable;
+  let closeReadable;
+
+  return {
+    writable: new WritableStream({
+      write(chunk) {
+        enqueueInReadable(chunk);
+      },
+
+      close() {
+        closeReadable();
+      }
+    }),
+
+    readable: new ReadableStream({
+      start(c) {
+        enqueueInReadable = c.enqueue.bind(c);
+        closeReadable = c.close.bind(c);
+      }
+    })
+  };
+}
+
+promise_test(() =&gt; {
+  const readableEnd = sequentialReadableStream(5).pipeThrough(duckTypedPassThroughTransform());
+
+  return readableStreamToArray(readableEnd).then(chunks =&gt;
+    assert_array_equals(chunks, [1, 2, 3, 4, 5]), 'chunks should match');
+}, 'Piping through a duck-typed pass-through transform stream should work');
+
+promise_test(t =&gt; {
+  const transform = {
+    writable: new WritableStream({
+      start(c) {
+        c.error(new Error('this rejection should not be reported as unhandled'));
+      }
+    }),
+    readable: new ReadableStream()
+  };
+
+  sequentialReadableStream(5).pipeThrough(transform);
+
+  // The test harness should complain about unhandled rejections by then.
+  return flushAsyncEvents();
+
+}, 'Piping through a transform errored on the writable end does not cause an unhandled promise rejection');
+
+test(() =&gt; {
+  let calledWithArgs;
+  const dummy = {
+    pipeTo(...args) {
+      calledWithArgs = args;
+
+      // Does not return anything, testing the spec's guard against trying to mark [[PromiseIsHandled]] on undefined.
+    }
+  };
+
+  const fakeWritable = { fake: 'writable' };
+  const fakeReadable = { fake: 'readable' };
+  const arg2 = { arg: 'arg2' };
+  const arg3 = { arg: 'arg3' };
+  ReadableStream.prototype.pipeThrough.call(dummy, { writable: fakeWritable, readable: fakeReadable }, arg2, arg3);
+
+  assert_array_equals(calledWithArgs, [fakeWritable, arg2],
+    'The this value\'s pipeTo method should be called with the appropriate arguments');
+
+}, 'pipeThrough generically calls pipeTo with the appropriate args');
+
+test(() =&gt; {
+  const dummy = {
+    pipeTo(args) {
+      return { not: 'a promise' };
+    }
+  };
+
+  ReadableStream.prototype.pipeThrough.call(dummy, { });
+
+  // Test passes if this doesn't throw or crash.
+
+}, 'pipeThrough can handle calling a pipeTo that returns a non-promise object');
+
+test(() =&gt; {
+  const dummy = {
+    pipeTo(args) {
+      return {
+        then() {},
+        this: 'is not a real promise'
+      };
+    }
+  };
+
+  ReadableStream.prototype.pipeThrough.call(dummy, { });
+
+  // Test passes if this doesn't throw or crash.
+
+}, 'pipeThrough can handle calling a pipeTo that returns a non-promise thenable object');
+
+done();
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingpipethroughserviceworkerhttpsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/pipe-through.serviceworker.https-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/pipe-through.serviceworker.https-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/pipe-through.serviceworker.https-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+FAIL Service worker test setup undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingpipethroughserviceworkerhttpshtmlfromrev212201trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadstrategieshttpshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/pipe-through.serviceworker.https.html (from rev 212201, trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.https.html) (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/pipe-through.serviceworker.https.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/pipe-through.serviceworker.https.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;pipe-through.js service worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/service-workers/service-worker/resources/test-helpers.sub.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+service_worker_test('pipe-through.js', 'Service worker test setup');
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingpipethroughsharedworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/pipe-through.sharedworker-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/pipe-through.sharedworker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/pipe-through.sharedworker-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+CONSOLE MESSAGE: line 10: ReferenceError: Can't find variable: SharedWorker
+
+Harness Error (FAIL), message = ReferenceError: Can't find variable: SharedWorker
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingpipethroughsharedworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/pipe-through.sharedworker.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/pipe-through.sharedworker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/pipe-through.sharedworker.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;pipe-through.js shared worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+fetch_tests_from_worker(new SharedWorker('pipe-through.js'));
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingtransformstreamsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/transform-streams-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/transform-streams-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/transform-streams-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+FAIL Piping through an identity transform stream should close the destination when the source closes Can't find variable: TransformStream
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingtransformstreamsdedicatedworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/transform-streams.dedicatedworker-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/transform-streams.dedicatedworker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/transform-streams.dedicatedworker-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+FAIL Piping through an identity transform stream should close the destination when the source closes Can't find variable: TransformStream
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingtransformstreamsdedicatedworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/transform-streams.dedicatedworker.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/transform-streams.dedicatedworker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/transform-streams.dedicatedworker.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;transform-streams.js dedicated worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+fetch_tests_from_worker(new Worker('transform-streams.js'));
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingtransformstreamshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/transform-streams.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/transform-streams.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/transform-streams.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,10 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;transform-streams.js browser context wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+
+
+&lt;script src=&quot;transform-streams.js&quot;&gt;&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingtransformstreamsjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/transform-streams.js (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/transform-streams.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/transform-streams.js        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,27 @@
</span><ins>+'use strict';
+
+if (self.importScripts) {
+  self.importScripts('/resources/testharness.js');
+}
+
+promise_test(() =&gt; {
+  const rs = new ReadableStream({
+    start(c) {
+      c.enqueue('a');
+      c.enqueue('b');
+      c.enqueue('c');
+      c.close();
+    }
+  });
+
+  const ts = new TransformStream();
+
+  const ws = new WritableStream();
+
+  return rs.pipeThrough(ts).pipeTo(ws).then(() =&gt; {
+    const writer = ws.getWriter();
+    return writer.closed;
+  });
+}, 'Piping through an identity transform stream should close the destination when the source closes');
+
+done();
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingtransformstreamsserviceworkerhttpsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/transform-streams.serviceworker.https-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/transform-streams.serviceworker.https-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/transform-streams.serviceworker.https-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+FAIL Service worker test setup undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingtransformstreamsserviceworkerhttpshtmlfromrev212201trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadunderlyingsourceshttpshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/transform-streams.serviceworker.https.html (from rev 212201, trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.https.html) (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/transform-streams.serviceworker.https.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/transform-streams.serviceworker.https.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;transform-streams.js service worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/service-workers/service-worker/resources/test-helpers.sub.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+service_worker_test('transform-streams.js', 'Service worker test setup');
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingtransformstreamssharedworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/transform-streams.sharedworker-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/transform-streams.sharedworker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/transform-streams.sharedworker-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+CONSOLE MESSAGE: line 10: ReferenceError: Can't find variable: SharedWorker
+
+Harness Error (FAIL), message = ReferenceError: Can't find variable: SharedWorker
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingtransformstreamssharedworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/transform-streams.sharedworker.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/transform-streams.sharedworker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/transform-streams.sharedworker.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;transform-streams.js shared worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+fetch_tests_from_worker(new SharedWorker('transform-streams.js'));
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingw3cimportlog"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/w3c-import.log (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/w3c-import.log                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/w3c-import.log        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,62 @@
</span><ins>+The tests in this directory were imported from the W3C repository.
+Do NOT modify these tests directly in WebKit.
+Instead, create a pull request on the W3C CSS or WPT github:
+        https://github.com/w3c/csswg-test
+        https://github.com/w3c/web-platform-tests
+
+Then run the Tools/Scripts/import-w3c-tests in WebKit to reimport
+
+Do NOT modify or remove this file.
+
+------------------------------------------------------------------------
+Properties requiring vendor prefixes:
+None
+Property values requiring vendor prefixes:
+None
+------------------------------------------------------------------------
+List of files:
+/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-backward.dedicatedworker.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-backward.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-backward.js
+/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-backward.serviceworker.https.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-backward.sharedworker.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-forward.dedicatedworker.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-forward.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-forward.js
+/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-forward.serviceworker.https.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-forward.sharedworker.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-backward.dedicatedworker.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-backward.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-backward.js
+/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-backward.serviceworker.https.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-backward.sharedworker.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-forward.dedicatedworker.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-forward.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-forward.js
+/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-forward.serviceworker.https.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-forward.sharedworker.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/piping/flow-control.dedicatedworker.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/piping/flow-control.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/piping/flow-control.js
+/LayoutTests/imported/w3c/web-platform-tests/streams/piping/flow-control.serviceworker.https.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/piping/flow-control.sharedworker.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/piping/general.dedicatedworker.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/piping/general.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/piping/general.js
+/LayoutTests/imported/w3c/web-platform-tests/streams/piping/general.serviceworker.https.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/piping/general.sharedworker.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/piping/multiple-propagation.dedicatedworker.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/piping/multiple-propagation.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/piping/multiple-propagation.js
+/LayoutTests/imported/w3c/web-platform-tests/streams/piping/multiple-propagation.serviceworker.https.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/piping/multiple-propagation.sharedworker.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/piping/pipe-through.dedicatedworker.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/piping/pipe-through.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/piping/pipe-through.js
+/LayoutTests/imported/w3c/web-platform-tests/streams/piping/pipe-through.serviceworker.https.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/piping/pipe-through.sharedworker.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/piping/transform-streams.dedicatedworker.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/piping/transform-streams.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/piping/transform-streams.js
+/LayoutTests/imported/w3c/web-platform-tests/streams/piping/transform-streams.serviceworker.https.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/piping/transform-streams.sharedworker.html
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablebytestreamsgeneralexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,70 @@
</span><ins>+
+PASS getReader({mode: &quot;byob&quot;}) throws on non-bytes streams 
+PASS ReadableStream with byte source can be constructed with no errors 
+PASS ReadableStream with byte source: Construct and expect start and pull being called 
+PASS ReadableStream with byte source: No automatic pull call if start doesn't finish 
+PASS ReadableStream with byte source: Construct with highWaterMark of 0 
+PASS ReadableStream with byte source: getReader(), then releaseLock() 
+FAIL ReadableStream with byte source: getReader() with mode set to byob, then releaseLock() ReadableStreamBYOBReader is not implemented
+PASS ReadableStream with byte source: Test that closing a stream does not release a reader automatically 
+FAIL ReadableStream with byte source: Test that closing a stream does not release a BYOB reader automatically ReadableStreamBYOBReader is not implemented
+PASS ReadableStream with byte source: Test that erroring a stream does not release a reader automatically 
+FAIL ReadableStream with byte source: Test that erroring a stream does not release a BYOB reader automatically ReadableStreamBYOBReader is not implemented
+PASS ReadableStream with byte source: releaseLock() on ReadableStreamReader with pending read() must throw 
+PASS ReadableStream with byte source: Automatic pull() after start() 
+PASS ReadableStream with byte source: Automatic pull() after start() and read() 
+FAIL ReadableStream with byte source: autoAllocateChunkSize assert_equals: pull() must have been invoked once expected 1 but got 0
+FAIL ReadableStream with byte source: Mix of auto allocate and BYOB promise_test: Unhandled rejection with value: object &quot;TypeError: undefined is not an object (evaluating 'byobRequest.view')&quot;
+PASS ReadableStream with byte source: Automatic pull() after start() and read(view) 
+PASS ReadableStream with byte source: enqueue(), getReader(), then read() 
+PASS ReadableStream with byte source: Push source that doesn't understand pull signal 
+PASS ReadableStream with byte source: read(), but pull() function is not callable 
+FAIL ReadableStream with byte source: read(view), but pull() function is not callable ReadableStreamBYOBReader is not implemented
+PASS ReadableStream with byte source: enqueue() with Uint16Array, getReader(), then read() 
+FAIL ReadableStream with byte source: enqueue(), read(view) partially, then read() ReadableStreamBYOBReader is not implemented
+PASS ReadableStream with byte source: getReader(), enqueue(), close(), then read() 
+PASS ReadableStream with byte source: enqueue(), close(), getReader(), then read() 
+PASS ReadableStream with byte source: Respond to pull() by enqueue() 
+PASS ReadableStream with byte source: Respond to pull() by enqueue() asynchronously 
+FAIL ReadableStream with byte source: read(view), then respond() ReadableStreamBYOBReader is not implemented
+FAIL ReadableStream with byte source: read(view), then respond() with a transferred ArrayBuffer ReadableStreamBYOBReader is not implemented
+FAIL ReadableStream with byte source: read(view), then respond() with too big value ReadableStreamBYOBReader is not implemented
+FAIL ReadableStream with byte source: respond(3) to read(view) with 2 element Uint16Array enqueues the 1 byte remainder ReadableStreamBYOBReader is not implemented
+FAIL ReadableStream with byte source: enqueue(), getReader(), then read(view) ReadableStreamBYOBReader is not implemented
+PASS ReadableStream with byte source: enqueue(), getReader(), then cancel() (mode = not BYOB) 
+FAIL ReadableStream with byte source: enqueue(), getReader(), then cancel() (mode = BYOB) ReadableStreamBYOBReader is not implemented
+FAIL ReadableStream with byte source: getReader(), read(view), then cancel() ReadableStreamBYOBReader is not implemented
+FAIL ReadableStream with byte source: cancel() with partially filled pending pull() request promise_test: Unhandled rejection with value: object &quot;TypeError: ReadableStreamBYOBReader is not implemented&quot;
+FAIL ReadableStream with byte source: enqueue(), getReader(), then read(view) where view.buffer is not fully covered by view ReadableStreamBYOBReader is not implemented
+FAIL ReadableStream with byte source: Multiple enqueue(), getReader(), then read(view) ReadableStreamBYOBReader is not implemented
+FAIL ReadableStream with byte source: enqueue(), getReader(), then read(view) with a bigger view ReadableStreamBYOBReader is not implemented
+FAIL ReadableStream with byte source: enqueue(), getReader(), then read(view) with a smaller views ReadableStreamBYOBReader is not implemented
+FAIL ReadableStream with byte source: enqueue() 1 byte, getReader(), then read(view) with Uint16Array ReadableStreamBYOBReader is not implemented
+FAIL ReadableStream with byte source: enqueue() 3 byte, getReader(), then read(view) with 2-element Uint16Array promise_test: Unhandled rejection with value: object &quot;TypeError: ReadableStreamBYOBReader is not implemented&quot;
+FAIL ReadableStream with byte source: read(view) with Uint16Array on close()-d stream with 1 byte enqueue()-d must fail ReadableStreamBYOBReader is not implemented
+FAIL ReadableStream with byte source: A stream must be errored if close()-d before fulfilling read(view) with Uint16Array ReadableStreamBYOBReader is not implemented
+PASS ReadableStream with byte source: Throw if close()-ed more than once 
+PASS ReadableStream with byte source: Throw on enqueue() after close() 
+FAIL ReadableStream with byte source: read(view), then respond() and close() in pull() ReadableStreamBYOBReader is not implemented
+FAIL ReadableStream with byte source: read(view) with Uint32Array, then fill it by multiple respond() calls ReadableStreamBYOBReader is not implemented
+PASS ReadableStream with byte source: read() twice, then enqueue() twice 
+FAIL ReadableStream with byte source: Multiple read(view), close() and respond() ReadableStreamBYOBReader is not implemented
+FAIL ReadableStream with byte source: Multiple read(view), big enqueue() ReadableStreamBYOBReader is not implemented
+FAIL ReadableStream with byte source: Multiple read(view) and multiple enqueue() ReadableStreamBYOBReader is not implemented
+FAIL ReadableStream with byte source: read(view) with passing undefined as view must fail ReadableStreamBYOBReader is not implemented
+FAIL ReadableStream with byte source: read(view) with zero-length view must fail ReadableStreamBYOBReader is not implemented
+FAIL ReadableStream with byte source: read(view) with passing an empty object as view must fail ReadableStreamBYOBReader is not implemented
+FAIL ReadableStream with byte source: Even read(view) with passing ArrayBufferView like object as view must fail ReadableStreamBYOBReader is not implemented
+PASS ReadableStream with byte source: read() on an errored stream 
+PASS ReadableStream with byte source: read(), then error() 
+FAIL ReadableStream with byte source: read(view) on an errored stream ReadableStreamBYOBReader is not implemented
+FAIL ReadableStream with byte source: read(view), then error() ReadableStreamBYOBReader is not implemented
+PASS ReadableStream with byte source: Throwing in pull function must error the stream 
+PASS ReadableStream with byte source: Throwing in pull in response to read() must be ignored if the stream is errored in it 
+FAIL ReadableStream with byte source: Throwing in pull in response to read(view) function must error the stream ReadableStreamBYOBReader is not implemented
+FAIL ReadableStream with byte source: Throwing in pull in response to read(view) must be ignored if the stream is errored in it ReadableStreamBYOBReader is not implemented
+FAIL ReadableStreamBYOBReader can be constructed directly ReadableStreamBYOBReader is not implemented
+FAIL ReadableStreamBYOBReader constructor requires a ReadableStream argument ReadableStreamBYOBReader is not implemented
+FAIL ReadableStreamBYOBReader constructor requires an unlocked ReadableStream ReadableStreamBYOBReader is not implemented
+FAIL ReadableStreamBYOBReader constructor requires a ReadableStream with type &quot;bytes&quot; ReadableStreamBYOBReader is not implemented
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablebytestreamsgeneraldedicatedworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.dedicatedworker-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.dedicatedworker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.dedicatedworker-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,70 @@
</span><ins>+
+PASS getReader({mode: &quot;byob&quot;}) throws on non-bytes streams 
+PASS ReadableStream with byte source can be constructed with no errors 
+PASS ReadableStream with byte source: Construct and expect start and pull being called 
+PASS ReadableStream with byte source: No automatic pull call if start doesn't finish 
+PASS ReadableStream with byte source: Construct with highWaterMark of 0 
+PASS ReadableStream with byte source: getReader(), then releaseLock() 
+FAIL ReadableStream with byte source: getReader() with mode set to byob, then releaseLock() ReadableStreamBYOBReader is not implemented
+PASS ReadableStream with byte source: Test that closing a stream does not release a reader automatically 
+FAIL ReadableStream with byte source: Test that closing a stream does not release a BYOB reader automatically ReadableStreamBYOBReader is not implemented
+PASS ReadableStream with byte source: Test that erroring a stream does not release a reader automatically 
+FAIL ReadableStream with byte source: Test that erroring a stream does not release a BYOB reader automatically ReadableStreamBYOBReader is not implemented
+PASS ReadableStream with byte source: releaseLock() on ReadableStreamReader with pending read() must throw 
+PASS ReadableStream with byte source: Automatic pull() after start() 
+PASS ReadableStream with byte source: Automatic pull() after start() and read() 
+FAIL ReadableStream with byte source: autoAllocateChunkSize assert_equals: pull() must have been invoked once expected 1 but got 0
+FAIL ReadableStream with byte source: Mix of auto allocate and BYOB promise_test: Unhandled rejection with value: object &quot;TypeError: undefined is not an object (evaluating 'byobRequest.view')&quot;
+PASS ReadableStream with byte source: Automatic pull() after start() and read(view) 
+PASS ReadableStream with byte source: enqueue(), getReader(), then read() 
+PASS ReadableStream with byte source: Push source that doesn't understand pull signal 
+PASS ReadableStream with byte source: read(), but pull() function is not callable 
+FAIL ReadableStream with byte source: read(view), but pull() function is not callable ReadableStreamBYOBReader is not implemented
+PASS ReadableStream with byte source: enqueue() with Uint16Array, getReader(), then read() 
+FAIL ReadableStream with byte source: enqueue(), read(view) partially, then read() ReadableStreamBYOBReader is not implemented
+PASS ReadableStream with byte source: getReader(), enqueue(), close(), then read() 
+PASS ReadableStream with byte source: enqueue(), close(), getReader(), then read() 
+PASS ReadableStream with byte source: Respond to pull() by enqueue() 
+PASS ReadableStream with byte source: Respond to pull() by enqueue() asynchronously 
+FAIL ReadableStream with byte source: read(view), then respond() ReadableStreamBYOBReader is not implemented
+FAIL ReadableStream with byte source: read(view), then respond() with a transferred ArrayBuffer ReadableStreamBYOBReader is not implemented
+FAIL ReadableStream with byte source: read(view), then respond() with too big value ReadableStreamBYOBReader is not implemented
+FAIL ReadableStream with byte source: respond(3) to read(view) with 2 element Uint16Array enqueues the 1 byte remainder ReadableStreamBYOBReader is not implemented
+FAIL ReadableStream with byte source: enqueue(), getReader(), then read(view) ReadableStreamBYOBReader is not implemented
+PASS ReadableStream with byte source: enqueue(), getReader(), then cancel() (mode = not BYOB) 
+FAIL ReadableStream with byte source: enqueue(), getReader(), then cancel() (mode = BYOB) ReadableStreamBYOBReader is not implemented
+FAIL ReadableStream with byte source: getReader(), read(view), then cancel() ReadableStreamBYOBReader is not implemented
+FAIL ReadableStream with byte source: cancel() with partially filled pending pull() request promise_test: Unhandled rejection with value: object &quot;TypeError: ReadableStreamBYOBReader is not implemented&quot;
+FAIL ReadableStream with byte source: enqueue(), getReader(), then read(view) where view.buffer is not fully covered by view ReadableStreamBYOBReader is not implemented
+FAIL ReadableStream with byte source: Multiple enqueue(), getReader(), then read(view) ReadableStreamBYOBReader is not implemented
+FAIL ReadableStream with byte source: enqueue(), getReader(), then read(view) with a bigger view ReadableStreamBYOBReader is not implemented
+FAIL ReadableStream with byte source: enqueue(), getReader(), then read(view) with a smaller views ReadableStreamBYOBReader is not implemented
+FAIL ReadableStream with byte source: enqueue() 1 byte, getReader(), then read(view) with Uint16Array ReadableStreamBYOBReader is not implemented
+FAIL ReadableStream with byte source: enqueue() 3 byte, getReader(), then read(view) with 2-element Uint16Array promise_test: Unhandled rejection with value: object &quot;TypeError: ReadableStreamBYOBReader is not implemented&quot;
+FAIL ReadableStream with byte source: read(view) with Uint16Array on close()-d stream with 1 byte enqueue()-d must fail ReadableStreamBYOBReader is not implemented
+FAIL ReadableStream with byte source: A stream must be errored if close()-d before fulfilling read(view) with Uint16Array ReadableStreamBYOBReader is not implemented
+PASS ReadableStream with byte source: Throw if close()-ed more than once 
+PASS ReadableStream with byte source: Throw on enqueue() after close() 
+FAIL ReadableStream with byte source: read(view), then respond() and close() in pull() ReadableStreamBYOBReader is not implemented
+FAIL ReadableStream with byte source: read(view) with Uint32Array, then fill it by multiple respond() calls ReadableStreamBYOBReader is not implemented
+PASS ReadableStream with byte source: read() twice, then enqueue() twice 
+FAIL ReadableStream with byte source: Multiple read(view), close() and respond() ReadableStreamBYOBReader is not implemented
+FAIL ReadableStream with byte source: Multiple read(view), big enqueue() ReadableStreamBYOBReader is not implemented
+FAIL ReadableStream with byte source: Multiple read(view) and multiple enqueue() ReadableStreamBYOBReader is not implemented
+FAIL ReadableStream with byte source: read(view) with passing undefined as view must fail ReadableStreamBYOBReader is not implemented
+FAIL ReadableStream with byte source: read(view) with zero-length view must fail ReadableStreamBYOBReader is not implemented
+FAIL ReadableStream with byte source: read(view) with passing an empty object as view must fail ReadableStreamBYOBReader is not implemented
+FAIL ReadableStream with byte source: Even read(view) with passing ArrayBufferView like object as view must fail ReadableStreamBYOBReader is not implemented
+PASS ReadableStream with byte source: read() on an errored stream 
+PASS ReadableStream with byte source: read(), then error() 
+FAIL ReadableStream with byte source: read(view) on an errored stream ReadableStreamBYOBReader is not implemented
+FAIL ReadableStream with byte source: read(view), then error() ReadableStreamBYOBReader is not implemented
+PASS ReadableStream with byte source: Throwing in pull function must error the stream 
+PASS ReadableStream with byte source: Throwing in pull in response to read() must be ignored if the stream is errored in it 
+FAIL ReadableStream with byte source: Throwing in pull in response to read(view) function must error the stream ReadableStreamBYOBReader is not implemented
+FAIL ReadableStream with byte source: Throwing in pull in response to read(view) must be ignored if the stream is errored in it ReadableStreamBYOBReader is not implemented
+FAIL ReadableStreamBYOBReader can be constructed directly ReadableStreamBYOBReader is not implemented
+FAIL ReadableStreamBYOBReader constructor requires a ReadableStream argument ReadableStreamBYOBReader is not implemented
+FAIL ReadableStreamBYOBReader constructor requires an unlocked ReadableStream ReadableStreamBYOBReader is not implemented
+FAIL ReadableStreamBYOBReader constructor requires a ReadableStream with type &quot;bytes&quot; ReadableStreamBYOBReader is not implemented
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablebytestreamsgeneraldedicatedworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.dedicatedworker.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.dedicatedworker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.dedicatedworker.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;general.js dedicated worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+fetch_tests_from_worker(new Worker('general.js'));
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablebytestreamsgeneralhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,10 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;general.js browser context wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script src=&quot;../resources/rs-utils.js&quot;&gt;&lt;/script&gt;
+
+&lt;script src=&quot;general.js&quot;&gt;&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablebytestreamsgeneraljs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.js (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.js        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,1877 @@
</span><ins>+'use strict';
+
+if (self.importScripts) {
+  self.importScripts('../resources/rs-utils.js');
+  self.importScripts('/resources/testharness.js');
+}
+
+const error1 = new Error('error1');
+error1.name = 'error1';
+
+test(() =&gt; {
+  assert_throws(new TypeError(), () =&gt; new ReadableStream().getReader({ mode: 'byob' }));
+}, 'getReader({mode: &quot;byob&quot;}) throws on non-bytes streams');
+
+
+test(() =&gt; {
+  // Constructing ReadableStream with an empty underlying byte source object as parameter shouldn't throw.
+  new ReadableStream({ type: 'bytes' });
+}, 'ReadableStream with byte source can be constructed with no errors');
+
+promise_test(() =&gt; {
+  let startCalled = false;
+  let startCalledBeforePull = false;
+  let desiredSize;
+  let controller;
+
+  let resolveTestPromise;
+  const testPromise = new Promise(resolve =&gt; {
+    resolveTestPromise = resolve;
+  });
+
+  new ReadableStream({
+    start(c) {
+      controller = c;
+      startCalled = true;
+    },
+    pull() {
+      startCalledBeforePull = startCalled;
+      desiredSize = controller.desiredSize;
+      resolveTestPromise();
+    },
+    type: 'bytes'
+  }, {
+    highWaterMark: 256
+  });
+
+  return testPromise.then(() =&gt; {
+    assert_true(startCalledBeforePull, 'start should be called before pull');
+    assert_equals(desiredSize, 256, 'desiredSize should equal highWaterMark');
+  });
+
+}, 'ReadableStream with byte source: Construct and expect start and pull being called');
+
+promise_test(() =&gt; {
+  let pullCount = 0;
+  let checkedNoPull = false;
+
+  let resolveTestPromise;
+  const testPromise = new Promise(resolve =&gt; {
+    resolveTestPromise = resolve;
+  });
+  let resolveStartPromise;
+
+  new ReadableStream({
+    start() {
+      return new Promise(resolve =&gt; {
+        resolveStartPromise = resolve;
+      });
+    },
+    pull() {
+      if (checkedNoPull) {
+        resolveTestPromise();
+      }
+
+      ++pullCount;
+    },
+    type: 'bytes'
+  }, {
+    highWaterMark: 256
+  });
+
+  Promise.resolve().then(() =&gt; {
+    assert_equals(pullCount, 0);
+    checkedNoPull = true;
+    resolveStartPromise();
+  });
+
+  return testPromise;
+
+}, 'ReadableStream with byte source: No automatic pull call if start doesn\'t finish');
+
+promise_test(t =&gt; {
+  new ReadableStream({
+    pull: t.unreached_func('pull() should not be called'),
+    type: 'bytes'
+  }, {
+    highWaterMark: 0
+  });
+
+  return Promise.resolve();
+}, 'ReadableStream with byte source: Construct with highWaterMark of 0');
+
+promise_test(t =&gt; {
+  const stream = new ReadableStream({
+    type: 'bytes'
+  });
+
+  const reader = stream.getReader();
+  reader.releaseLock();
+
+  return promise_rejects(t, new TypeError(), reader.closed, 'closed must reject');
+}, 'ReadableStream with byte source: getReader(), then releaseLock()');
+
+promise_test(t =&gt; {
+  const stream = new ReadableStream({
+    type: 'bytes'
+  });
+
+  const reader = stream.getReader({ mode: 'byob' });
+  reader.releaseLock();
+
+  return promise_rejects(t, new TypeError(), reader.closed, 'closed must reject');
+}, 'ReadableStream with byte source: getReader() with mode set to byob, then releaseLock()');
+
+promise_test(t =&gt; {
+  const stream = new ReadableStream({
+    start(c) {
+      c.close();
+    },
+    pull: t.unreached_func('pull() should not be called'),
+    type: 'bytes'
+  });
+
+  const reader = stream.getReader();
+
+  return reader.closed.then(() =&gt; {
+    assert_throws(new TypeError(), () =&gt; stream.getReader(), 'getReader() must throw');
+  });
+}, 'ReadableStream with byte source: Test that closing a stream does not release a reader automatically');
+
+promise_test(t =&gt; {
+  const stream = new ReadableStream({
+    start(c) {
+      c.close();
+    },
+    pull: t.unreached_func('pull() should not be called'),
+    type: 'bytes'
+  });
+
+  const reader = stream.getReader({ mode: 'byob' });
+
+  return reader.closed.then(() =&gt; {
+    assert_throws(new TypeError(), () =&gt; stream.getReader({ mode: 'byob' }), 'getReader() must throw');
+  });
+}, 'ReadableStream with byte source: Test that closing a stream does not release a BYOB reader automatically');
+
+promise_test(t =&gt; {
+  const stream = new ReadableStream({
+    start(c) {
+      c.error(error1);
+    },
+    pull: t.unreached_func('pull() should not be called'),
+    type: 'bytes'
+  });
+
+  const reader = stream.getReader();
+
+  return promise_rejects(t, error1, reader.closed, 'closed must reject').then(() =&gt; {
+    assert_throws(new TypeError(), () =&gt; stream.getReader(), 'getReader() must throw');
+  });
+}, 'ReadableStream with byte source: Test that erroring a stream does not release a reader automatically');
+
+promise_test(t =&gt; {
+  const stream = new ReadableStream({
+    start(c) {
+      c.error(error1);
+    },
+    pull: t.unreached_func('pull() should not be called'),
+    type: 'bytes'
+  });
+
+  const reader = stream.getReader({ mode: 'byob' });
+
+  return promise_rejects(t, error1, reader.closed, 'closed must reject').then(() =&gt; {
+    assert_throws(new TypeError(), () =&gt; stream.getReader({ mode: 'byob' }), 'getReader() must throw');
+  });
+}, 'ReadableStream with byte source: Test that erroring a stream does not release a BYOB reader automatically');
+
+test(() =&gt; {
+  const stream = new ReadableStream({
+    type: 'bytes'
+  });
+
+  const reader = stream.getReader();
+  reader.read();
+  assert_throws(new TypeError(), () =&gt; reader.releaseLock(), 'reader.releaseLock() must throw');
+}, 'ReadableStream with byte source: releaseLock() on ReadableStreamReader with pending read() must throw');
+
+promise_test(() =&gt; {
+  let pullCount = 0;
+
+  const stream = new ReadableStream({
+    pull() {
+      ++pullCount;
+    },
+    type: 'bytes'
+  }, {
+    highWaterMark: 8
+  });
+
+  stream.getReader();
+
+  assert_equals(pullCount, 0, 'No pull as start() just finished and is not yet reflected to the state of the stream');
+
+  return Promise.resolve().then(() =&gt; {
+    assert_equals(pullCount, 1, 'pull must be invoked');
+  });
+}, 'ReadableStream with byte source: Automatic pull() after start()');
+
+promise_test(() =&gt; {
+  let pullCount = 0;
+
+  const stream = new ReadableStream({
+    pull() {
+      ++pullCount;
+    },
+    type: 'bytes'
+  }, {
+    highWaterMark: 0
+  });
+
+  const reader = stream.getReader();
+  reader.read();
+
+  assert_equals(pullCount, 0, 'No pull as start() just finished and is not yet reflected to the state of the stream');
+
+  return Promise.resolve().then(() =&gt; {
+    assert_equals(pullCount, 1, 'pull must be invoked');
+  });
+}, 'ReadableStream with byte source: Automatic pull() after start() and read()');
+
+// View buffers are detached after pull() returns, so record the information at the time that pull() was called.
+function extractViewInfo(view) {
+  return {
+    constructor: view.constructor,
+    bufferByteLength: view.buffer.byteLength,
+    byteOffset: view.byteOffset,
+    byteLength: view.byteLength
+  };
+}
+
+promise_test(() =&gt; {
+  let pullCount = 0;
+  let controller;
+  let byobRequest;
+  let viewDefined = false;
+  let viewInfo;
+
+  const stream = new ReadableStream({
+    start(c) {
+      controller = c;
+    },
+    pull() {
+      byobRequest = controller.byobRequest;
+      const view = byobRequest.view;
+      viewDefined = view !== undefined;
+      viewInfo = extractViewInfo(view);
+
+      view[0] = 0x01;
+      byobRequest.respond(1);
+
+      ++pullCount;
+    },
+    type: 'bytes',
+    autoAllocateChunkSize: 16
+  }, {
+    highWaterMark: 0
+  });
+
+  const reader = stream.getReader();
+  const readPromise = reader.read();
+  const ignoredReadPromise = reader.read();
+
+  assert_equals(pullCount, 0, 'No pull() as start() just finished and is not yet reflected to the state of the stream');
+
+  return Promise.resolve().then(() =&gt; {
+    assert_equals(pullCount, 1, 'pull() must have been invoked once');
+    assert_not_equals(byobRequest, undefined, 'byobRequest must not be undefined');
+    assert_true(viewDefined, 'byobRequest.view must not be undefined');
+    assert_equals(viewInfo.constructor, Uint8Array, 'view.constructor should be Uint8Array');
+    assert_equals(viewInfo.bufferByteLength, 16, 'view.buffer.byteLength should be 16');
+    assert_equals(viewInfo.byteOffset, 0, 'view.byteOffset should be 0');
+    assert_equals(viewInfo.byteLength, 16, 'view.byteLength should be 16');
+    return readPromise;
+  }).then(result =&gt; {
+    assert_not_equals(result.value, undefined);
+    assert_equals(result.value.constructor, Uint8Array);
+    assert_equals(result.value.buffer.byteLength, 16);
+    assert_equals(result.value.byteOffset, 0);
+    assert_equals(result.value.byteLength, 1);
+    assert_equals(result.value[0], 0x01);
+    assert_equals(pullCount, 1, 'pull() should only be invoked once');
+  });
+}, 'ReadableStream with byte source: autoAllocateChunkSize');
+
+promise_test(() =&gt; {
+  let pullCount = 0;
+  let controller;
+  const byobRequests = [];
+
+  const stream = new ReadableStream({
+    start(c) {
+      controller = c;
+    },
+    pull() {
+      const byobRequest = controller.byobRequest;
+      const view = byobRequest.view;
+      byobRequests[pullCount] = {
+        defined: byobRequest !== undefined,
+        viewDefined: view !== undefined,
+        viewInfo: extractViewInfo(view)
+      };
+      if (pullCount === 0) {
+        view[0] = 0x01;
+        byobRequest.respond(1);
+      } else if (pullCount === 1) {
+        view[0] = 0x02;
+        view[1] = 0x03;
+        byobRequest.respond(2);
+      }
+
+      ++pullCount;
+    },
+    type: 'bytes',
+    autoAllocateChunkSize: 16
+  }, {
+    highWaterMark: 0
+  });
+
+  const reader = stream.getReader();
+  return reader.read().then(result =&gt; {
+    assert_not_equals(result.value, undefined);
+    assert_equals(result.value.constructor, Uint8Array);
+    assert_equals(result.value.buffer.byteLength, 16);
+    assert_equals(result.value.byteOffset, 0);
+    assert_equals(result.value.byteLength, 1);
+    assert_equals(result.value[0], 0x01);
+    const byobRequest = byobRequests[0];
+    assert_true(byobRequest.defined, 'first byobRequest must not be undefined');
+    assert_true(byobRequest.viewDefined, 'first byobRequest.view must not be undefined');
+    const viewInfo = byobRequest.viewInfo;
+    assert_equals(viewInfo.constructor, Uint8Array, 'first view.constructor should be Uint8Array');
+    assert_equals(viewInfo.bufferByteLength, 16, 'first view.buffer.byteLength should be 16');
+    assert_equals(viewInfo.byteOffset, 0, 'first view.byteOffset should be 0');
+    assert_equals(viewInfo.byteLength, 16, 'first view.byteLength should be 16');
+
+    reader.releaseLock();
+    const byobReader = stream.getReader({ mode: 'byob' });
+    return byobReader.read(new Uint8Array(32));
+  }).then(result =&gt; {
+    assert_not_equals(result.value, undefined);
+    assert_equals(result.value.constructor, Uint8Array);
+    assert_equals(result.value.buffer.byteLength, 32);
+    assert_equals(result.value.byteOffset, 0);
+    assert_equals(result.value.byteLength, 2);
+    assert_equals(result.value[0], 0x02);
+    assert_equals(result.value[1], 0x03);
+    const byobRequest = byobRequests[1];
+    assert_true(byobRequest.defined, 'second byobRequest must not be undefined');
+    assert_true(byobRequest.viewDefined, 'second byobRequest.view must not be undefined');
+    const viewInfo = byobRequest.viewInfo;
+    assert_equals(viewInfo.constructor, Uint8Array, 'second view.constructor should be Uint8Array');
+    assert_equals(viewInfo.bufferByteLength, 32, 'second view.buffer.byteLength should be 32');
+    assert_equals(viewInfo.byteOffset, 0, 'second view.byteOffset should be 0');
+    assert_equals(viewInfo.byteLength, 32, 'second view.byteLength should be 32');
+    assert_equals(pullCount, 2, 'pullCount should be 2');
+  });
+}, 'ReadableStream with byte source: Mix of auto allocate and BYOB');
+
+promise_test(() =&gt; {
+  let pullCount = 0;
+
+  const stream = new ReadableStream({
+    pull() {
+      ++pullCount;
+    },
+    type: 'bytes'
+  }, {
+    highWaterMark: 0
+  });
+
+  const reader = stream.getReader();
+  reader.read(new Uint8Array(8));
+
+  assert_equals(pullCount, 0, 'No pull as start() just finished and is not yet reflected to the state of the stream');
+
+  return Promise.resolve().then(() =&gt; {
+    assert_equals(pullCount, 1, 'pull must be invoked');
+  });
+}, 'ReadableStream with byte source: Automatic pull() after start() and read(view)');
+
+promise_test(() =&gt; {
+  let pullCount = 0;
+
+  let controller;
+  let desiredSizeInStart;
+  let desiredSizeInPull;
+
+  const stream = new ReadableStream({
+    start(c) {
+      c.enqueue(new Uint8Array(16));
+      desiredSizeInStart = c.desiredSize;
+      controller = c;
+    },
+    pull() {
+      ++pullCount;
+
+      if (pullCount === 1) {
+        desiredSizeInPull = controller.desiredSize;
+      }
+    },
+    type: 'bytes'
+  }, {
+    highWaterMark: 8
+  });
+
+  return Promise.resolve().then(() =&gt; {
+    assert_equals(pullCount, 0, 'No pull as the queue was filled by start()');
+    assert_equals(desiredSizeInStart, -8, 'desiredSize after enqueue() in start()');
+
+    const reader = stream.getReader();
+
+    const promise = reader.read();
+    assert_equals(pullCount, 1, 'The first pull() should be made on read()');
+    assert_equals(desiredSizeInPull, 8, 'desiredSize in pull()');
+
+    return promise.then(result =&gt; {
+      assert_equals(result.done, false, 'result.done');
+
+      const view = result.value;
+      assert_equals(view.constructor, Uint8Array, 'view.constructor');
+      assert_equals(view.buffer.byteLength, 16, 'view.buffer');
+      assert_equals(view.byteOffset, 0, 'view.byteOffset');
+      assert_equals(view.byteLength, 16, 'view.byteLength');
+    });
+  });
+}, 'ReadableStream with byte source: enqueue(), getReader(), then read()');
+
+promise_test(() =&gt; {
+  let controller;
+
+  const stream = new ReadableStream({
+    start(c) {
+      controller = c;
+    },
+    type: 'bytes'
+  });
+
+  const reader = stream.getReader();
+
+  const promise = reader.read().then(result =&gt; {
+    assert_equals(result.done, false);
+
+    const view = result.value;
+    assert_equals(view.constructor, Uint8Array);
+    assert_equals(view.buffer.byteLength, 1);
+    assert_equals(view.byteOffset, 0);
+    assert_equals(view.byteLength, 1);
+  });
+
+  controller.enqueue(new Uint8Array(1));
+
+  return promise;
+}, 'ReadableStream with byte source: Push source that doesn\'t understand pull signal');
+
+promise_test(t =&gt; {
+  const stream = new ReadableStream({
+    pull: 'foo',
+    type: 'bytes'
+  });
+
+  const reader = stream.getReader();
+
+  return promise_rejects(t, new TypeError(), reader.read(), 'read() must fail');
+}, 'ReadableStream with byte source: read(), but pull() function is not callable');
+
+promise_test(t =&gt; {
+  const stream = new ReadableStream({
+    pull: 'foo',
+    type: 'bytes'
+  });
+
+  const reader = stream.getReader({ mode: 'byob' });
+
+  return promise_rejects(t, new TypeError(), reader.read(new Uint8Array(1)), 'read() must fail');
+}, 'ReadableStream with byte source: read(view), but pull() function is not callable');
+
+promise_test(() =&gt; {
+  const stream = new ReadableStream({
+    start(c) {
+      c.enqueue(new Uint16Array(16));
+    },
+    type: 'bytes'
+  });
+
+  const reader = stream.getReader();
+
+  return reader.read().then(result =&gt; {
+    assert_equals(result.done, false);
+
+    const view = result.value;
+    assert_equals(view.constructor, Uint8Array);
+    assert_equals(view.buffer.byteLength, 32);
+    assert_equals(view.byteOffset, 0);
+    assert_equals(view.byteLength, 32);
+  });
+}, 'ReadableStream with byte source: enqueue() with Uint16Array, getReader(), then read()');
+
+promise_test(t =&gt; {
+  const stream = new ReadableStream({
+    start(c) {
+      const view = new Uint8Array(16);
+      view[0] = 0x01;
+      view[8] = 0x02;
+      c.enqueue(view);
+    },
+    pull: t.unreached_func('pull() should not be called'),
+    type: 'bytes'
+  });
+
+  const byobReader = stream.getReader({ mode: 'byob' });
+
+  return byobReader.read(new Uint8Array(8)).then(result =&gt; {
+    assert_equals(result.done, false, 'done');
+
+    const view = result.value;
+    assert_equals(view.constructor, Uint8Array, 'value.constructor');
+    assert_equals(view.buffer.byteLength, 8, 'value.buffer.byteLength');
+    assert_equals(view.byteOffset, 0, 'value.byteOffset');
+    assert_equals(view.byteLength, 8, 'value.byteLength');
+    assert_equals(view[0], 0x01);
+
+    byobReader.releaseLock();
+
+    const reader = stream.getReader();
+
+    return reader.read();
+  }).then(result =&gt; {
+    assert_equals(result.done, false, 'done');
+
+    const view = result.value;
+    assert_equals(view.constructor, Uint8Array, 'value.constructor');
+    assert_equals(view.buffer.byteLength, 16, 'value.buffer.byteLength');
+    assert_equals(view.byteOffset, 8, 'value.byteOffset');
+    assert_equals(view.byteLength, 8, 'value.byteLength');
+    assert_equals(view[0], 0x02);
+  });
+}, 'ReadableStream with byte source: enqueue(), read(view) partially, then read()');
+
+promise_test(t =&gt; {
+  let controller;
+
+  const stream = new ReadableStream({
+    start(c) {
+      controller = c;
+    },
+    pull: t.unreached_func('pull() should not be called'),
+    type: 'bytes'
+  });
+
+  const reader = stream.getReader();
+
+  controller.enqueue(new Uint8Array(16));
+  controller.close();
+
+  return reader.read().then(result =&gt; {
+    assert_equals(result.done, false, 'done');
+
+    const view = result.value;
+    assert_equals(view.byteOffset, 0, 'byteOffset');
+    assert_equals(view.byteLength, 16, 'byteLength');
+
+    return reader.read();
+  }).then(result =&gt; {
+    assert_equals(result.done, true, 'done');
+    assert_equals(result.value, undefined, 'value');
+  });
+}, 'ReadableStream with byte source: getReader(), enqueue(), close(), then read()');
+
+promise_test(t =&gt; {
+  const stream = new ReadableStream({
+    start(c) {
+      c.enqueue(new Uint8Array(16));
+      c.close();
+    },
+    pull: t.unreached_func('pull() should not be called'),
+    type: 'bytes'
+  });
+
+  const reader = stream.getReader();
+
+  return reader.read().then(result =&gt; {
+    assert_equals(result.done, false, 'done');
+
+    const view = result.value;
+    assert_equals(view.byteOffset, 0, 'byteOffset');
+    assert_equals(view.byteLength, 16, 'byteLength');
+
+    return reader.read();
+  }).then(result =&gt; {
+    assert_equals(result.done, true, 'done');
+    assert_equals(result.value, undefined, 'value');
+  });
+}, 'ReadableStream with byte source: enqueue(), close(), getReader(), then read()');
+
+promise_test(() =&gt; {
+  let controller;
+  let byobRequest;
+
+  const stream = new ReadableStream({
+    start(c) {
+      controller = c;
+    },
+    pull() {
+      controller.enqueue(new Uint8Array(16));
+      byobRequest = controller.byobRequest;
+    },
+    type: 'bytes'
+  });
+
+  const reader = stream.getReader();
+
+  return reader.read().then(result =&gt; {
+    assert_equals(result.done, false, 'done');
+    assert_equals(result.value.byteLength, 16, 'byteLength');
+    assert_equals(byobRequest, undefined, 'byobRequest must be undefined');
+  });
+}, 'ReadableStream with byte source: Respond to pull() by enqueue()');
+
+promise_test(() =&gt; {
+  let pullCount = 0;
+
+  let controller;
+  let byobRequest;
+  const desiredSizes = [];
+
+  const stream = new ReadableStream({
+    start(c) {
+      controller = c;
+    },
+    pull() {
+      byobRequest = controller.byobRequest;
+      desiredSizes.push(controller.desiredSize);
+      controller.enqueue(new Uint8Array(1));
+      desiredSizes.push(controller.desiredSize);
+      controller.enqueue(new Uint8Array(1));
+      desiredSizes.push(controller.desiredSize);
+
+      ++pullCount;
+    },
+    type: 'bytes'
+  }, {
+    highWaterMark: 256
+  });
+
+  const reader = stream.getReader();
+
+  const p0 = reader.read();
+  const p1 = reader.read();
+  const p2 = reader.read();
+
+  // Respond to the first pull call.
+  controller.enqueue(new Uint8Array(1));
+
+  assert_equals(pullCount, 0, 'pullCount after the enqueue() outside pull');
+
+  return Promise.all([p0, p1, p2]).then(result =&gt; {
+    assert_equals(pullCount, 1, 'pullCount after completion of all read()s');
+
+    assert_equals(result[0].done, false, 'result[0].done');
+    assert_equals(result[0].value.byteLength, 1, 'result[0].value.byteLength');
+    assert_equals(result[1].done, false, 'result[1].done');
+    assert_equals(result[1].value.byteLength, 1, 'result[1].value.byteLength');
+    assert_equals(result[2].done, false, 'result[2].done');
+    assert_equals(result[2].value.byteLength, 1, 'result[2].value.byteLength');
+    assert_equals(byobRequest, undefined, 'byobRequest should be undefined');
+    assert_equals(desiredSizes[0], 256, 'desiredSize on pull should be 256');
+    assert_equals(desiredSizes[1], 256, 'desiredSize after 1st enqueue() should be 256');
+    assert_equals(desiredSizes[2], 256, 'desiredSize after 2nd enqueue() should be 256');
+    assert_equals(pullCount, 1, 'pull() should only be called once');
+  });
+}, 'ReadableStream with byte source: Respond to pull() by enqueue() asynchronously');
+
+promise_test(() =&gt; {
+  let controller;
+
+  let pullCount = 0;
+  const byobRequestDefined = [];
+
+  const stream = new ReadableStream({
+    start(c) {
+      controller = c;
+    },
+    pull() {
+      byobRequestDefined.push(controller.byobRequest !== undefined);
+
+      const view = controller.byobRequest.view;
+      view[0] = 0x01;
+      controller.byobRequest.respond(1);
+
+      byobRequestDefined.push(controller.byobRequest !== undefined);
+
+      ++pullCount;
+    },
+    type: 'bytes'
+  });
+
+  const reader = stream.getReader({ mode: 'byob' });
+
+  return reader.read(new Uint8Array(1)).then(result =&gt; {
+    assert_equals(result.done, false, 'result.done');
+    assert_equals(result.value.byteLength, 1, 'result.value.byteLength');
+    assert_equals(result.value[0], 0x01, 'result.value[0]');
+    assert_equals(pullCount, 1, 'pull() should be called only once');
+    assert_true(byobRequestDefined[0], 'byobRequest must not be undefined before respond()');
+    assert_false(byobRequestDefined[1], 'byobRequest must be undefined after respond()');
+  });
+}, 'ReadableStream with byte source: read(view), then respond()');
+
+promise_test(() =&gt; {
+  let controller;
+
+  let pullCount = 0;
+  const byobRequestDefined = [];
+
+  const stream = new ReadableStream({
+    start(c) {
+      controller = c;
+    },
+    pull() {
+      byobRequestDefined.push(controller.byobRequest !== undefined);
+
+      // Emulate ArrayBuffer transfer by just creating a new ArrayBuffer and pass it. By checking the result of
+      // read(view), we test that the respond()'s buffer argument is working correctly.
+      //
+      // A real implementation of the underlying byte source would transfer controller.byobRequest.view.buffer into
+      // a new ArrayBuffer, then construct a view around it and write to it.
+      const transferredView = new Uint8Array(1);
+      transferredView[0] = 0x01;
+      controller.byobRequest.respondWithNewView(transferredView);
+
+      byobRequestDefined.push(controller.byobRequest !== undefined);
+
+      ++pullCount;
+    },
+    type: 'bytes'
+  });
+
+  const reader = stream.getReader({ mode: 'byob' });
+
+  return reader.read(new Uint8Array(1)).then(result =&gt; {
+    assert_equals(result.done, false, 'result.done');
+    assert_equals(result.value.byteLength, 1, 'result.value.byteLength');
+    assert_equals(result.value[0], 0x01, 'result.value[0]');
+    assert_equals(pullCount, 1, 'pull() should be called only once');
+    assert_true(byobRequestDefined[0], 'byobRequest must not be undefined before respond()');
+    assert_false(byobRequestDefined[1], 'byobRequest must be undefined after respond()');
+  });
+}, 'ReadableStream with byte source: read(view), then respond() with a transferred ArrayBuffer');
+
+promise_test(() =&gt; {
+  let controller;
+  let byobRequestWasDefined;
+  let incorrectRespondException;
+
+  const stream = new ReadableStream({
+    start(c) {
+      controller = c;
+    },
+    pull() {
+      byobRequestWasDefined = controller.byobRequest !== undefined;
+
+      try {
+        controller.byobRequest.respond(2);
+      } catch (e) {
+        incorrectRespondException = e;
+      }
+
+      controller.byobRequest.respond(1);
+    },
+    type: 'bytes'
+  });
+
+  const reader = stream.getReader({ mode: 'byob' });
+
+  return reader.read(new Uint8Array(1)).then(() =&gt; {
+    assert_true(byobRequestWasDefined, 'byobRequest should be defined');
+    assert_not_equals(incorrectRespondException, undefined, 'respond() must throw');
+    assert_equals(incorrectRespondException.name, 'RangeError', 'respond() must throw a RangeError');
+  });
+}, 'ReadableStream with byte source: read(view), then respond() with too big value');
+
+promise_test(() =&gt; {
+  let pullCount = 0;
+
+  let controller;
+  let byobRequest;
+  let viewInfo;
+
+  const stream = new ReadableStream({
+    start(c) {
+      controller = c;
+    },
+    pull() {
+      ++pullCount;
+
+      byobRequest = controller.byobRequest;
+      const view = byobRequest.view;
+      viewInfo = extractViewInfo(view);
+
+      view[0] = 0x01;
+      view[1] = 0x02;
+      view[2] = 0x03;
+
+      controller.byobRequest.respond(3);
+    },
+    type: 'bytes'
+  });
+
+  const reader = stream.getReader({ mode: 'byob' });
+
+  return reader.read(new Uint16Array(2)).then(result =&gt; {
+    assert_equals(pullCount, 1);
+
+    assert_equals(result.done, false, 'done');
+
+    const view = result.value;
+    assert_equals(view.byteOffset, 0, 'byteOffset');
+    assert_equals(view.byteLength, 2, 'byteLength');
+
+    assert_equals(view[0], 0x0201);
+
+    return reader.read(new Uint8Array(1));
+  }).then(result =&gt; {
+    assert_equals(pullCount, 1);
+    assert_not_equals(byobRequest, undefined, 'byobRequest must not be undefined');
+    assert_equals(viewInfo.constructor, Uint8Array, 'view.constructor should be Uint8Array');
+    assert_equals(viewInfo.bufferByteLength, 4, 'view.buffer.byteLength should be 4');
+    assert_equals(viewInfo.byteOffset, 0, 'view.byteOffset should be 0');
+    assert_equals(viewInfo.byteLength, 4, 'view.byteLength should be 4');
+
+    assert_equals(result.done, false, 'done');
+
+    const view = result.value;
+    assert_equals(view.byteOffset, 0, 'byteOffset');
+    assert_equals(view.byteLength, 1, 'byteLength');
+
+    assert_equals(view[0], 0x03);
+  });
+}, 'ReadableStream with byte source: respond(3) to read(view) with 2 element Uint16Array enqueues the 1 byte ' +
+   'remainder');
+
+promise_test(t =&gt; {
+  const stream = new ReadableStream({
+    start(controller) {
+      const view = new Uint8Array(16);
+      view[15] = 0x01;
+      controller.enqueue(view);
+    },
+    pull: t.unreached_func('pull() should not be called'),
+    type: 'bytes'
+  });
+
+  const reader = stream.getReader({ mode: 'byob' });
+
+  return reader.read(new Uint8Array(16)).then(result =&gt; {
+    assert_equals(result.done, false);
+
+    const view = result.value;
+    assert_equals(view.byteOffset, 0);
+    assert_equals(view.byteLength, 16);
+    assert_equals(view[15], 0x01);
+  });
+}, 'ReadableStream with byte source: enqueue(), getReader(), then read(view)');
+
+promise_test(t =&gt; {
+  let cancelCount = 0;
+  let reason;
+
+  const passedReason = new TypeError('foo');
+
+  const stream = new ReadableStream({
+    start(c) {
+      c.enqueue(new Uint8Array(16));
+    },
+    pull: t.unreached_func('pull() should not be called'),
+    cancel(r) {
+      if (cancelCount === 0) {
+        reason = r;
+      }
+
+      ++cancelCount;
+    },
+    type: 'bytes'
+  });
+
+  const reader = stream.getReader();
+
+  return reader.cancel(passedReason).then(result =&gt; {
+    assert_equals(result, undefined);
+    assert_equals(cancelCount, 1);
+    assert_equals(reason, passedReason, 'reason should equal the passed reason');
+  });
+}, 'ReadableStream with byte source: enqueue(), getReader(), then cancel() (mode = not BYOB)');
+
+promise_test(t =&gt; {
+  let cancelCount = 0;
+  let reason;
+
+  const passedReason = new TypeError('foo');
+
+  const stream = new ReadableStream({
+    start(c) {
+      c.enqueue(new Uint8Array(16));
+    },
+    pull: t.unreached_func('pull() should not be called'),
+    cancel(r) {
+      if (cancelCount === 0) {
+        reason = r;
+      }
+
+      ++cancelCount;
+    },
+    type: 'bytes'
+  });
+
+  const reader = stream.getReader({ mode: 'byob' });
+
+  return reader.cancel(passedReason).then(result =&gt; {
+    assert_equals(result, undefined);
+    assert_equals(cancelCount, 1);
+    assert_equals(reason, passedReason, 'reason should equal the passed reason');
+  });
+}, 'ReadableStream with byte source: enqueue(), getReader(), then cancel() (mode = BYOB)');
+
+promise_test(t =&gt; {
+  let cancelCount = 0;
+  let reason;
+
+  const passedReason = new TypeError('foo');
+
+  let controller;
+
+  const stream = new ReadableStream({
+    start(c) {
+      controller = c;
+    },
+    pull: t.unreached_func('pull() should not be called'),
+    cancel(r) {
+      if (cancelCount === 0) {
+        reason = r;
+        controller.byobRequest.respond(0);
+      }
+
+      ++cancelCount;
+
+      return 'bar';
+    },
+    type: 'bytes'
+  });
+
+  const reader = stream.getReader({ mode: 'byob' });
+
+  const readPromise = reader.read(new Uint8Array(1)).then(result =&gt; {
+    assert_equals(result.done, true);
+  });
+
+  const cancelPromise = reader.cancel(passedReason).then(result =&gt; {
+    assert_equals(result, undefined);
+    assert_equals(cancelCount, 1);
+    assert_equals(reason, passedReason, 'reason should equal the passed reason');
+  });
+
+  return Promise.all([readPromise, cancelPromise]);
+}, 'ReadableStream with byte source: getReader(), read(view), then cancel()');
+
+promise_test(() =&gt; {
+  let pullCount = 0;
+
+  let controller;
+  let byobRequest;
+  const viewInfos = [];
+
+  const stream = new ReadableStream({
+    start(c) {
+      controller = c;
+    },
+    pull() {
+      byobRequest = controller.byobRequest;
+
+      viewInfos.push(extractViewInfo(controller.byobRequest.view));
+      controller.enqueue(new Uint8Array(1));
+      viewInfos.push(extractViewInfo(controller.byobRequest.view));
+
+      ++pullCount;
+    },
+    type: 'bytes'
+  });
+
+  return Promise.resolve().then(() =&gt; {
+    assert_equals(pullCount, 0, 'No pull() as no read(view) yet');
+
+    const reader = stream.getReader({ mode: 'byob' });
+
+    const promise = reader.read(new Uint16Array(1)).then(result =&gt; {
+      assert_equals(result.done, true, 'result.done');
+      assert_equals(result.value.constructor, Uint16Array, 'result.value');
+    });
+
+    assert_equals(pullCount, 1, '1 pull() should have been made in response to partial fill by enqueue()');
+    assert_not_equals(byobRequest, undefined, 'byobRequest should not be undefined');
+    assert_equals(viewInfos[0].byteLength, 2, 'byteLength before enqueue() shouild be 2');
+    assert_equals(viewInfos[1].byteLength, 1, 'byteLength after enqueue() should be 1');
+
+
+    reader.cancel();
+
+    // Tell that the buffer given via pull() is returned.
+    controller.byobRequest.respond(0);
+
+    assert_equals(pullCount, 1, 'pull() should only be called once');
+    return promise;
+  });
+}, 'ReadableStream with byte source: cancel() with partially filled pending pull() request');
+
+promise_test(() =&gt; {
+  let controller;
+  let byobRequest;
+
+  const stream = new ReadableStream({
+    start(c) {
+      const view = new Uint8Array(8);
+      view[7] = 0x01;
+      c.enqueue(view);
+
+      controller = c;
+    },
+    pull() {
+      byobRequest = controller.byobRequest;
+    },
+    type: 'bytes'
+  });
+
+  const reader = stream.getReader({ mode: 'byob' });
+
+  const buffer = new ArrayBuffer(16);
+
+  return reader.read(new Uint8Array(buffer, 8, 8)).then(result =&gt; {
+    assert_equals(result.done, false);
+
+    assert_equals(byobRequest, undefined, 'byobRequest must be undefined');
+
+    const view = result.value;
+    assert_equals(view.constructor, Uint8Array);
+    assert_equals(view.buffer.byteLength, 16);
+    assert_equals(view.byteOffset, 8);
+    assert_equals(view.byteLength, 8);
+    assert_equals(view[7], 0x01);
+  });
+}, 'ReadableStream with byte source: enqueue(), getReader(), then read(view) where view.buffer is not fully ' +
+   'covered by view');
+
+promise_test(() =&gt; {
+  let controller;
+  let byobRequest;
+
+  const stream = new ReadableStream({
+    start(c) {
+      let view;
+
+      view = new Uint8Array(16);
+      view[15] = 123;
+      c.enqueue(view);
+
+      view = new Uint8Array(8);
+      view[7] = 111;
+      c.enqueue(view);
+
+      controller = c;
+    },
+    pull() {
+      byobRequest = controller.byobRequest;
+    },
+    type: 'bytes'
+  });
+
+  const reader = stream.getReader({ mode: 'byob' });
+
+  return reader.read(new Uint8Array(24)).then(result =&gt; {
+    assert_equals(result.done, false, 'done');
+
+    assert_equals(byobRequest, undefined, 'byobRequest must be undefined');
+
+    const view = result.value;
+    assert_equals(view.byteOffset, 0, 'byteOffset');
+    assert_equals(view.byteLength, 24, 'byteLength');
+    assert_equals(view[15], 123, 'Contents are set from the first chunk');
+    assert_equals(view[23], 111, 'Contents are set from the second chunk');
+  });
+}, 'ReadableStream with byte source: Multiple enqueue(), getReader(), then read(view)');
+
+promise_test(() =&gt; {
+  let byobRequest;
+
+  const stream = new ReadableStream({
+    start(c) {
+      const view = new Uint8Array(16);
+      view[15] = 0x01;
+      c.enqueue(view);
+    },
+    pull(controller) {
+      byobRequest = controller.byobRequest;
+    },
+    type: 'bytes'
+  });
+
+  const reader = stream.getReader({ mode: 'byob' });
+
+  return reader.read(new Uint8Array(24)).then(result =&gt; {
+    assert_equals(result.done, false);
+
+    assert_equals(byobRequest, undefined, 'byobRequest must be undefined');
+
+    const view = result.value;
+    assert_equals(view.byteOffset, 0);
+    assert_equals(view.byteLength, 16);
+    assert_equals(view[15], 0x01);
+  });
+}, 'ReadableStream with byte source: enqueue(), getReader(), then read(view) with a bigger view');
+
+promise_test(() =&gt; {
+  let byobRequest;
+
+  const stream = new ReadableStream({
+    start(c) {
+      const view = new Uint8Array(16);
+      view[7] = 0x01;
+      view[15] = 0x02;
+      c.enqueue(view);
+    },
+    pull(controller) {
+      byobRequest = controller.byobRequest;
+    },
+    type: 'bytes'
+  });
+
+  const reader = stream.getReader({ mode: 'byob' });
+
+  return reader.read(new Uint8Array(8)).then(result =&gt; {
+    assert_equals(result.done, false, 'done');
+
+    const view = result.value;
+    assert_equals(view.byteOffset, 0);
+    assert_equals(view.byteLength, 8);
+    assert_equals(view[7], 0x01);
+
+    return reader.read(new Uint8Array(8));
+  }).then(result =&gt; {
+    assert_equals(result.done, false, 'done');
+
+    assert_equals(byobRequest, undefined, 'byobRequest must be undefined');
+
+    const view = result.value;
+    assert_equals(view.byteOffset, 0);
+    assert_equals(view.byteLength, 8);
+    assert_equals(view[7], 0x02);
+  });
+}, 'ReadableStream with byte source: enqueue(), getReader(), then read(view) with a smaller views');
+
+promise_test(() =&gt; {
+  let controller;
+  let viewInfo;
+
+  const stream = new ReadableStream({
+    start(c) {
+      const view = new Uint8Array(1);
+      view[0] = 0xff;
+      c.enqueue(view);
+
+      controller = c;
+    },
+    pull() {
+      if (controller.byobRequest === undefined) {
+        return;
+      }
+
+      const view = controller.byobRequest.view;
+      viewInfo = extractViewInfo(view);
+
+      view[0] = 0xaa;
+      controller.byobRequest.respond(1);
+    },
+    type: 'bytes'
+  });
+
+  const reader = stream.getReader({ mode: 'byob' });
+
+  return reader.read(new Uint16Array(1)).then(result =&gt; {
+    assert_equals(result.done, false);
+
+    const view = result.value;
+    assert_equals(view.byteOffset, 0);
+    assert_equals(view.byteLength, 2);
+    assert_equals(view[0], 0xaaff);
+
+    assert_equals(viewInfo.constructor, Uint8Array, 'view.constructor should be Uint8Array');
+    assert_equals(viewInfo.bufferByteLength, 2, 'view.buffer.byteLength should be 2');
+    assert_equals(viewInfo.byteOffset, 1, 'view.byteOffset should be 1');
+    assert_equals(viewInfo.byteLength, 1, 'view.byteLength should be 1');
+  });
+}, 'ReadableStream with byte source: enqueue() 1 byte, getReader(), then read(view) with Uint16Array');
+
+promise_test(() =&gt; {
+  let pullCount = 0;
+
+  let controller;
+  let byobRequest;
+  let viewInfo;
+  let desiredSize;
+
+  const stream = new ReadableStream({
+    start(c) {
+      const view = new Uint8Array(3);
+      view[0] = 0x01;
+      view[2] = 0x02;
+      c.enqueue(view);
+
+      controller = c;
+    },
+    pull() {
+      byobRequest = controller.byobRequest;
+
+      const view = controller.byobRequest.view;
+
+      viewInfo = extractViewInfo(view);
+
+      view[0] = 0x03;
+      controller.byobRequest.respond(1);
+
+      desiredSize = controller.desiredSize;
+
+      ++pullCount;
+    },
+    type: 'bytes'
+  });
+
+  // Wait for completion of the start method to be reflected.
+  return Promise.resolve().then(() =&gt; {
+    const reader = stream.getReader({ mode: 'byob' });
+
+    const promise = reader.read(new Uint16Array(2)).then(result =&gt; {
+      assert_equals(result.done, false, 'done');
+
+      const view = result.value;
+      assert_equals(view.constructor, Uint16Array, 'constructor');
+      assert_equals(view.buffer.byteLength, 4, 'buffer.byteLength');
+      assert_equals(view.byteOffset, 0, 'byteOffset');
+      assert_equals(view.byteLength, 2, 'byteLength');
+      assert_equals(view[0], 0x0001, 'Contents are set');
+
+      const p = reader.read(new Uint16Array(1));
+
+      assert_equals(pullCount, 1);
+
+      return p;
+    }).then(result =&gt; {
+      assert_equals(result.done, false, 'done');
+
+      const view = result.value;
+      assert_equals(view.buffer.byteLength, 2, 'buffer.byteLength');
+      assert_equals(view.byteOffset, 0, 'byteOffset');
+      assert_equals(view.byteLength, 2, 'byteLength');
+      assert_equals(view[0], 0x0302, 'Contents are set');
+
+      assert_not_equals(byobRequest, undefined, 'byobRequest must not be undefined');
+      assert_equals(viewInfo.constructor, Uint8Array, 'view.constructor should be Uint8Array');
+      assert_equals(viewInfo.bufferByteLength, 2, 'view.buffer.byteLength should be 2');
+      assert_equals(viewInfo.byteOffset, 1, 'view.byteOffset should be 1');
+      assert_equals(viewInfo.byteLength, 1, 'view.byteLength should be 1');
+      assert_equals(desiredSize, 0, 'desiredSize should be zero');
+    });
+
+    assert_equals(pullCount, 0);
+
+    return promise;
+  });
+}, 'ReadableStream with byte source: enqueue() 3 byte, getReader(), then read(view) with 2-element Uint16Array');
+
+promise_test(t =&gt; {
+  const stream = new ReadableStream({
+    start(c) {
+      const view = new Uint8Array(1);
+      view[0] = 0xff;
+      c.enqueue(view);
+      c.close();
+    },
+    pull: t.unreached_func('pull() should not be called'),
+    type: 'bytes'
+  });
+
+  const reader = stream.getReader({ mode: 'byob' });
+
+
+  return promise_rejects(t, new TypeError(), reader.read(new Uint16Array(1)), 'read(view) must fail')
+      .then(() =&gt; promise_rejects(t, new TypeError(), reader.closed, 'reader.closed should reject'));
+}, 'ReadableStream with byte source: read(view) with Uint16Array on close()-d stream with 1 byte enqueue()-d must ' +
+   'fail');
+
+promise_test(t =&gt; {
+  let controller;
+
+  const stream = new ReadableStream({
+    start(c) {
+      const view = new Uint8Array(1);
+      view[0] = 0xff;
+      c.enqueue(view);
+
+      controller = c;
+    },
+    pull: t.unreached_func('pull() should not be called'),
+    type: 'bytes'
+  });
+
+  const reader = stream.getReader({ mode: 'byob' });
+
+  const readPromise = reader.read(new Uint16Array(1));
+
+  assert_throws(new TypeError(), () =&gt; controller.close(), 'controller.close() must throw');
+
+  return promise_rejects(t, new TypeError(), readPromise, 'read(view) must fail')
+      .then(() =&gt; promise_rejects(t, new TypeError(), reader.closed, 'reader.closed must reject'));
+}, 'ReadableStream with byte source: A stream must be errored if close()-d before fulfilling read(view) with ' +
+   'Uint16Array');
+
+test(() =&gt; {
+  let controller;
+
+  new ReadableStream({
+    start(c) {
+      controller = c;
+    },
+    type: 'bytes'
+  });
+
+  // Enqueue a chunk so that the stream doesn't get closed. This is to check duplicate close() calls are rejected
+  // even if the stream has not yet entered the closed state.
+  const view = new Uint8Array(1);
+  controller.enqueue(view);
+  controller.close();
+
+  assert_throws(new TypeError(), () =&gt; controller.close(), 'controller.close() must throw');
+}, 'ReadableStream with byte source: Throw if close()-ed more than once');
+
+test(() =&gt; {
+  let controller;
+
+  new ReadableStream({
+    start(c) {
+      controller = c;
+    },
+    type: 'bytes'
+  });
+
+  // Enqueue a chunk so that the stream doesn't get closed. This is to check enqueue() after close() is  rejected
+  // even if the stream has not yet entered the closed state.
+  const view = new Uint8Array(1);
+  controller.enqueue(view);
+  controller.close();
+
+  assert_throws(new TypeError(), () =&gt; controller.enqueue(view), 'controller.close() must throw');
+}, 'ReadableStream with byte source: Throw on enqueue() after close()');
+
+promise_test(() =&gt; {
+  let controller;
+  let byobRequest;
+  let viewInfo;
+
+  const stream = new ReadableStream({
+    start(c) {
+      controller = c;
+    },
+    pull() {
+      byobRequest = controller.byobRequest;
+      const view = controller.byobRequest.view;
+      viewInfo = extractViewInfo(view);
+
+      view[15] = 0x01;
+      controller.byobRequest.respond(16);
+      controller.close();
+    },
+    type: 'bytes'
+  });
+
+  const reader = stream.getReader({ mode: 'byob' });
+
+  return reader.read(new Uint8Array(16)).then(result =&gt; {
+    assert_equals(result.done, false);
+
+    const view = result.value;
+    assert_equals(view.byteOffset, 0);
+    assert_equals(view.byteLength, 16);
+    assert_equals(view[15], 0x01);
+
+    return reader.read(new Uint8Array(16));
+  }).then(result =&gt; {
+    assert_equals(result.done, true);
+
+    const view = result.value;
+    assert_equals(view.byteOffset, 0);
+    assert_equals(view.byteLength, 0);
+
+    assert_not_equals(byobRequest, undefined, 'byobRequest must not be undefined');
+    assert_equals(viewInfo.constructor, Uint8Array, 'view.constructor should be Uint8Array');
+    assert_equals(viewInfo.bufferByteLength, 16, 'view.buffer.byteLength should be 16');
+    assert_equals(viewInfo.byteOffset, 0, 'view.byteOffset should be 0');
+    assert_equals(viewInfo.byteLength, 16, 'view.byteLength should be 16');
+  });
+}, 'ReadableStream with byte source: read(view), then respond() and close() in pull()');
+
+promise_test(() =&gt; {
+  let pullCount = 0;
+
+  let controller;
+  const viewInfos = [];
+
+  const stream = new ReadableStream({
+    start(c) {
+      controller = c;
+    },
+    pull() {
+      if (controller.byobRequest === undefined) {
+        return;
+      }
+
+      for (let i = 0; i &lt; 4; ++i) {
+        const view = controller.byobRequest.view;
+        viewInfos.push(extractViewInfo(view));
+
+        view[0] = 0x01;
+        controller.byobRequest.respond(1);
+      }
+
+      ++pullCount;
+    },
+    type: 'bytes'
+  });
+
+  const reader = stream.getReader({ mode: 'byob' });
+
+  return reader.read(new Uint32Array(1)).then(result =&gt; {
+    assert_equals(result.done, false);
+
+    const view = result.value;
+    assert_equals(view.byteOffset, 0);
+    assert_equals(view.byteLength, 4);
+    assert_equals(view[0], 0x01010101);
+
+    assert_equals(pullCount, 1, 'pull() should only be called once');
+
+    for (let i = 0; i &lt; 4; ++i) {
+      assert_equals(viewInfos[i].constructor, Uint8Array, 'view.constructor should be Uint8Array');
+      assert_equals(viewInfos[i].bufferByteLength, 4, 'view.buffer.byteLength should be 4');
+
+      assert_equals(viewInfos[i].byteOffset, i, 'view.byteOffset should be i');
+      assert_equals(viewInfos[i].byteLength, 4 - i, 'view.byteLength should be 4 - i');
+    }
+  });
+}, 'ReadableStream with byte source: read(view) with Uint32Array, then fill it by multiple respond() calls');
+
+promise_test(() =&gt; {
+  let pullCount = 0;
+
+  let controller;
+  let byobRequest;
+
+  const stream = new ReadableStream({
+    start(c) {
+      controller = c;
+    },
+    pull() {
+      byobRequest = controller.byobRequest;
+
+      ++pullCount;
+    },
+    type: 'bytes'
+  });
+
+  const reader = stream.getReader();
+
+  const p0 = reader.read().then(result =&gt; {
+    assert_equals(pullCount, 1);
+
+    controller.enqueue(new Uint8Array(2));
+
+    // Since the queue has data no less than HWM, no more pull.
+    assert_equals(pullCount, 1);
+
+    assert_equals(result.done, false);
+
+    const view = result.value;
+    assert_equals(view.constructor, Uint8Array);
+    assert_equals(view.buffer.byteLength, 1);
+    assert_equals(view.byteOffset, 0);
+    assert_equals(view.byteLength, 1);
+  });
+
+  assert_equals(pullCount, 0, 'No pull should have been made since the startPromise has not yet been handled');
+
+  const p1 = reader.read().then(result =&gt; {
+    assert_equals(pullCount, 1);
+
+    assert_equals(result.done, false);
+
+    const view = result.value;
+    assert_equals(view.constructor, Uint8Array);
+    assert_equals(view.buffer.byteLength, 2);
+    assert_equals(view.byteOffset, 0);
+    assert_equals(view.byteLength, 2);
+
+    assert_equals(byobRequest, undefined, 'byobRequest must be undefined');
+  });
+
+  assert_equals(pullCount, 0, 'No pull should have been made since the startPromise has not yet been handled');
+
+  controller.enqueue(new Uint8Array(1));
+
+  assert_equals(pullCount, 0, 'No pull should have been made since the startPromise has not yet been handled');
+
+  return Promise.all([p0, p1]);
+}, 'ReadableStream with byte source: read() twice, then enqueue() twice');
+
+promise_test(t =&gt; {
+  let controller;
+
+  const stream = new ReadableStream({
+    start(c) {
+      controller = c;
+    },
+    pull: t.unreached_func('pull() should not be called'),
+    type: 'bytes'
+  });
+
+  const reader = stream.getReader({ mode: 'byob' });
+
+  const p0 = reader.read(new Uint8Array(16)).then(result =&gt; {
+    assert_equals(result.done, true, '1st read: done');
+
+    const view = result.value;
+    assert_equals(view.buffer.byteLength, 16, '1st read: buffer.byteLength');
+    assert_equals(view.byteOffset, 0, '1st read: byteOffset');
+    assert_equals(view.byteLength, 0, '1st read: byteLength');
+  });
+
+  const p1 = reader.read(new Uint8Array(32)).then(result =&gt; {
+    assert_equals(result.done, true, '2nd read: done');
+
+    const view = result.value;
+    assert_equals(view.buffer.byteLength, 32, '2nd read: buffer.byteLength');
+    assert_equals(view.byteOffset, 0, '2nd read: byteOffset');
+    assert_equals(view.byteLength, 0, '2nd read: byteLength');
+  });
+
+  controller.close();
+  controller.byobRequest.respond(0);
+
+  return Promise.all([p0, p1]);
+}, 'ReadableStream with byte source: Multiple read(view), close() and respond()');
+
+promise_test(t =&gt; {
+  let controller;
+
+  const stream = new ReadableStream({
+    start(c) {
+      controller = c;
+    },
+    pull: t.unreached_func('pull() should not be called'),
+    type: 'bytes'
+  });
+
+  const reader = stream.getReader({ mode: 'byob' });
+
+  const p0 = reader.read(new Uint8Array(16)).then(result =&gt; {
+    assert_equals(result.done, false, '1st read: done');
+
+    const view = result.value;
+    assert_equals(view.buffer.byteLength, 16, '1st read: buffer.byteLength');
+    assert_equals(view.byteOffset, 0, '1st read: byteOffset');
+    assert_equals(view.byteLength, 16, '1st read: byteLength');
+  });
+
+  const p1 = reader.read(new Uint8Array(16)).then(result =&gt; {
+    assert_equals(result.done, false, '2nd read: done');
+
+    const view = result.value;
+    assert_equals(view.buffer.byteLength, 16, '2nd read: buffer.byteLength');
+    assert_equals(view.byteOffset, 0, '2nd read: byteOffset');
+    assert_equals(view.byteLength, 8, '2nd read: byteLength');
+  });
+
+  controller.enqueue(new Uint8Array(24));
+
+  return Promise.all([p0, p1]);
+}, 'ReadableStream with byte source: Multiple read(view), big enqueue()');
+
+promise_test(t =&gt; {
+  let controller;
+
+  const stream = new ReadableStream({
+    start(c) {
+      controller = c;
+    },
+    pull: t.unreached_func('pull() should not be called'),
+    type: 'bytes'
+  });
+
+  const reader = stream.getReader({ mode: 'byob' });
+
+  let bytesRead = 0;
+
+  function pump() {
+    return reader.read(new Uint8Array(7)).then(result =&gt; {
+      if (result.done) {
+        assert_equals(bytesRead, 1024);
+        return undefined;
+      }
+
+      bytesRead += result.value.byteLength;
+
+      return pump();
+    });
+  }
+  const promise = pump();
+
+  controller.enqueue(new Uint8Array(512));
+  controller.enqueue(new Uint8Array(512));
+  controller.close();
+
+  return promise;
+}, 'ReadableStream with byte source: Multiple read(view) and multiple enqueue()');
+
+promise_test(t =&gt; {
+  let byobRequest;
+  const stream = new ReadableStream({
+    pull(controller) {
+      byobRequest = controller.byobRequest;
+    },
+    type: 'bytes'
+  });
+
+  const reader = stream.getReader({ mode: 'byob' });
+
+  return promise_rejects(t, new TypeError(), reader.read(), 'read() must fail')
+      .then(() =&gt; assert_equals(byobRequest, undefined, 'byobRequest must be undefined'));
+}, 'ReadableStream with byte source: read(view) with passing undefined as view must fail');
+
+promise_test(t =&gt; {
+  let byobRequest;
+  const stream = new ReadableStream({
+    pull(controller) {
+      byobRequest = controller.byobRequest;
+    },
+    type: 'bytes'
+  });
+
+  const reader = stream.getReader({ mode: 'byob' });
+
+  return promise_rejects(t, new TypeError(), reader.read(new Uint8Array(0)), 'read(view) must fail')
+      .then(() =&gt; assert_equals(byobRequest, undefined, 'byobRequest must be undefined'));
+}, 'ReadableStream with byte source: read(view) with zero-length view must fail');
+
+promise_test(t =&gt; {
+  const stream = new ReadableStream({
+    type: 'bytes'
+  });
+
+  const reader = stream.getReader({ mode: 'byob' });
+
+  return promise_rejects(t, new TypeError(), reader.read({}), 'read(view) must fail');
+}, 'ReadableStream with byte source: read(view) with passing an empty object as view must fail');
+
+promise_test(t =&gt; {
+  const stream = new ReadableStream({
+    type: 'bytes'
+  });
+
+  const reader = stream.getReader({ mode: 'byob' });
+
+  return promise_rejects(t, new TypeError(),
+                         reader.read({ buffer: new ArrayBuffer(10), byteOffset: 0, byteLength: 10 }),
+                         'read(view) must fail');
+}, 'ReadableStream with byte source: Even read(view) with passing ArrayBufferView like object as view must fail');
+
+promise_test(t =&gt; {
+  const stream = new ReadableStream({
+    start(c) {
+      c.error(error1);
+    },
+    pull: t.unreached_func('pull() should not be called'),
+    type: 'bytes'
+  });
+
+  const reader = stream.getReader();
+
+  return promise_rejects(t, error1, reader.read(), 'read() must fail');
+}, 'ReadableStream with byte source: read() on an errored stream');
+
+promise_test(t =&gt; {
+  let controller;
+
+  const stream = new ReadableStream({
+    start(c) {
+      controller = c;
+    },
+    type: 'bytes'
+  });
+
+  const reader = stream.getReader();
+
+  const promise = promise_rejects(t, error1, reader.read(), 'read() must fail');
+
+  controller.error(error1);
+
+  return promise;
+}, 'ReadableStream with byte source: read(), then error()');
+
+promise_test(t =&gt; {
+  const stream = new ReadableStream({
+    start(c) {
+      c.error(error1);
+    },
+    pull: t.unreached_func('pull() should not be called'),
+    type: 'bytes'
+  });
+
+  const reader = stream.getReader({ mode: 'byob' });
+
+  return promise_rejects(t, error1, reader.read(new Uint8Array(1)), 'read() must fail');
+}, 'ReadableStream with byte source: read(view) on an errored stream');
+
+promise_test(t =&gt; {
+  let controller;
+
+  const stream = new ReadableStream({
+    start(c) {
+      controller = c;
+    },
+    type: 'bytes'
+  });
+
+  const reader = stream.getReader({ mode: 'byob' });
+
+  const promise = promise_rejects(t, error1, reader.read(new Uint8Array(1)), 'read() must fail');
+
+  controller.error(error1);
+
+  return promise;
+}, 'ReadableStream with byte source: read(view), then error()');
+
+promise_test(t =&gt; {
+  let controller;
+  let byobRequest;
+
+  const testError = new TypeError('foo');
+
+  const stream = new ReadableStream({
+    start(c) {
+      controller = c;
+    },
+    pull() {
+      byobRequest = controller.byobRequest;
+      throw testError;
+    },
+    type: 'bytes'
+  });
+
+  const reader = stream.getReader();
+
+  const promise = promise_rejects(t, testError, reader.read(), 'read() must fail');
+  return promise_rejects(t, testError, promise.then(() =&gt; reader.closed))
+      .then(() =&gt; assert_equals(byobRequest, undefined, 'byobRequest must be undefined'));
+}, 'ReadableStream with byte source: Throwing in pull function must error the stream');
+
+promise_test(t =&gt; {
+  let byobRequest;
+
+  const stream = new ReadableStream({
+    pull(controller) {
+      byobRequest = controller.byobRequest;
+      controller.error(error1);
+      throw new TypeError('foo');
+    },
+    type: 'bytes'
+  });
+
+  const reader = stream.getReader();
+
+  return promise_rejects(t, error1, reader.read(), 'read() must fail')
+      .then(() =&gt; promise_rejects(t, error1, reader.closed, 'closed must fail'))
+      .then(() =&gt; assert_equals(byobRequest, undefined, 'byobRequest must be undefined'));
+}, 'ReadableStream with byte source: Throwing in pull in response to read() must be ignored if the stream is ' +
+   'errored in it');
+
+promise_test(t =&gt; {
+  let byobRequest;
+
+  const testError = new TypeError('foo');
+
+  const stream = new ReadableStream({
+    pull(controller) {
+      byobRequest = controller.byobRequest;
+      throw testError;
+    },
+    type: 'bytes'
+  });
+
+  const reader = stream.getReader({ mode: 'byob' });
+
+  return promise_rejects(t, testError, reader.read(new Uint8Array(1)), 'read(view) must fail')
+      .then(() =&gt; promise_rejects(t, testError, reader.closed, 'reader.closed must reject'))
+      .then(() =&gt; assert_not_equals(byobRequest, undefined, 'byobRequest must not be undefined'));
+}, 'ReadableStream with byte source: Throwing in pull in response to read(view) function must error the stream');
+
+promise_test(t =&gt; {
+  let byobRequest;
+
+  const stream = new ReadableStream({
+    pull(controller) {
+      byobRequest = controller.byobRequest;
+      controller.error(error1);
+      throw new TypeError('foo');
+    },
+    type: 'bytes'
+  });
+
+  const reader = stream.getReader({ mode: 'byob' });
+
+  return promise_rejects(t, error1, reader.read(new Uint8Array(1)), 'read(view) must fail')
+      .then(() =&gt; promise_rejects(t, error1, reader.closed, 'closed must fail'))
+      .then(() =&gt; assert_not_equals(byobRequest, undefined, 'byobRequest must not be undefined'));
+}, 'ReadableStream with byte source: Throwing in pull in response to read(view) must be ignored if the stream is ' +
+   'errored in it');
+
+test(() =&gt; {
+  const ReadableStreamBYOBReader = new ReadableStream({ type: 'bytes' }).getReader({ mode: 'byob' }).constructor;
+  const stream = new ReadableStream({ type: 'bytes' });
+  new ReadableStreamBYOBReader(stream);
+}, 'ReadableStreamBYOBReader can be constructed directly');
+
+test(() =&gt; {
+  const ReadableStreamBYOBReader = new ReadableStream({ type: 'bytes' }).getReader({ mode: 'byob' }).constructor;
+  assert_throws(new TypeError(), () =&gt; new ReadableStreamBYOBReader({}), 'constructor must throw');
+}, 'ReadableStreamBYOBReader constructor requires a ReadableStream argument');
+
+test(() =&gt; {
+  const ReadableStreamBYOBReader = new ReadableStream({ type: 'bytes' }).getReader({ mode: 'byob' }).constructor;
+  const stream = new ReadableStream({ type: 'bytes' });
+  stream.getReader();
+  assert_throws(new TypeError(), () =&gt; new ReadableStreamBYOBReader(stream), 'constructor must throw');
+}, 'ReadableStreamBYOBReader constructor requires an unlocked ReadableStream');
+
+test(() =&gt; {
+  const ReadableStreamBYOBReader = new ReadableStream({ type: 'bytes' }).getReader({ mode: 'byob' }).constructor;
+  const stream = new ReadableStream();
+  assert_throws(new TypeError(), () =&gt; new ReadableStreamBYOBReader(stream), 'constructor must throw');
+}, 'ReadableStreamBYOBReader constructor requires a ReadableStream with type &quot;bytes&quot;');
+
+done();
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablebytestreamsgeneralserviceworkerhttpsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.serviceworker.https-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.serviceworker.https-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.serviceworker.https-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+FAIL Service worker test setup undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablebytestreamsgeneralserviceworkerhttpshtmlfromrev212201trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadstrategieshttpshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.serviceworker.https.html (from rev 212201, trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.https.html) (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.serviceworker.https.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.serviceworker.https.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;general.js service worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/service-workers/service-worker/resources/test-helpers.sub.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+service_worker_test('general.js', 'Service worker test setup');
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablebytestreamsgeneralsharedworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.sharedworker-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.sharedworker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.sharedworker-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+CONSOLE MESSAGE: line 10: ReferenceError: Can't find variable: SharedWorker
+
+Harness Error (FAIL), message = ReferenceError: Can't find variable: SharedWorker
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablebytestreamsgeneralsharedworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.sharedworker.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.sharedworker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.sharedworker.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;general.js shared worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+fetch_tests_from_worker(new SharedWorker('general.js'));
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablebytestreamsw3cimportlogfromrev212201trunkLayoutTestsimportedw3cwebplatformtestsfontsw3cimportlog"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/w3c-import.log (from rev 212201, trunk/LayoutTests/imported/w3c/web-platform-tests/fonts/w3c-import.log) (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/w3c-import.log                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/w3c-import.log        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,22 @@
</span><ins>+The tests in this directory were imported from the W3C repository.
+Do NOT modify these tests directly in WebKit.
+Instead, create a pull request on the W3C CSS or WPT github:
+        https://github.com/w3c/csswg-test
+        https://github.com/w3c/web-platform-tests
+
+Then run the Tools/Scripts/import-w3c-tests in WebKit to reimport
+
+Do NOT modify or remove this file.
+
+------------------------------------------------------------------------
+Properties requiring vendor prefixes:
+None
+Property values requiring vendor prefixes:
+None
+------------------------------------------------------------------------
+List of files:
+/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.dedicatedworker.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.js
+/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.serviceworker.https.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.sharedworker.html
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadstrategiesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -6,13 +6,4 @@
</span><span class="cx"> PASS Readable stream: throwing strategy.highWaterMark getter 
</span><span class="cx"> PASS Readable stream: invalid strategy.highWaterMark 
</span><span class="cx"> PASS Readable stream: invalid strategy.size return value 
</span><del>-FAIL Load bad-strategies.js with SharedWorker assert_unreached: SharedWorker is unavailable Reached unreachable code
-FAIL Untitled undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')
-PASS Readable stream: throwing strategy.size getter 
-PASS Readable stream: strategy.size errors the stream and then throws 
-PASS Readable stream: strategy.size errors the stream and then returns Infinity 
-PASS Readable stream: throwing strategy.size method 
-PASS Readable stream: throwing strategy.highWaterMark getter 
-PASS Readable stream: invalid strategy.highWaterMark 
-PASS Readable stream: invalid strategy.size return value 
</del><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadstrategiesdedicatedworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.dedicatedworker-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.dedicatedworker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.dedicatedworker-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,9 @@
</span><ins>+
+PASS Readable stream: throwing strategy.size getter 
+PASS Readable stream: strategy.size errors the stream and then throws 
+PASS Readable stream: strategy.size errors the stream and then returns Infinity 
+PASS Readable stream: throwing strategy.size method 
+PASS Readable stream: throwing strategy.highWaterMark getter 
+PASS Readable stream: invalid strategy.highWaterMark 
+PASS Readable stream: invalid strategy.size return value 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadstrategiesdedicatedworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.dedicatedworker.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.dedicatedworker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.dedicatedworker.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;bad-strategies.js dedicated worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+fetch_tests_from_worker(new Worker('bad-strategies.js'));
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadstrategieshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,10 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;bad-strategies.js browser context wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+
+
+&lt;script src=&quot;bad-strategies.js&quot;&gt;&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadstrategieshttpsexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.https-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.https-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.https-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,18 +0,0 @@
</span><del>-
-PASS Readable stream: throwing strategy.size getter 
-PASS Readable stream: strategy.size errors the stream and then throws 
-PASS Readable stream: strategy.size errors the stream and then returns Infinity 
-PASS Readable stream: throwing strategy.size method 
-PASS Readable stream: throwing strategy.highWaterMark getter 
-PASS Readable stream: invalid strategy.highWaterMark 
-PASS Readable stream: invalid strategy.size return value 
-FAIL Load bad-strategies.js with SharedWorker assert_unreached: SharedWorker is unavailable Reached unreachable code
-FAIL Untitled undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')
-PASS Readable stream: throwing strategy.size getter 
-PASS Readable stream: strategy.size errors the stream and then throws 
-PASS Readable stream: strategy.size errors the stream and then returns Infinity 
-PASS Readable stream: throwing strategy.size method 
-PASS Readable stream: throwing strategy.highWaterMark getter 
-PASS Readable stream: invalid strategy.highWaterMark 
-PASS Readable stream: invalid strategy.size return value 
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadstrategieshttpshtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.https.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.https.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.https.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,12 +0,0 @@
</span><del>-&lt;!DOCTYPE html&gt;
-&lt;meta charset=&quot;utf-8&quot;&gt;
-&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;/service-workers/service-worker/resources/test-helpers.sub.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;../resources/test-initializer.js&quot;&gt;&lt;/script&gt;
-
-&lt;script src=&quot;bad-strategies.js&quot;&gt;&lt;/script&gt;
-&lt;script&gt;
-'use strict';
-worker_test('bad-strategies.js');
-&lt;/script&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadstrategiesserviceworkerhttpsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.serviceworker.https-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.serviceworker.https-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.serviceworker.https-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+FAIL Service worker test setup undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadstrategiesserviceworkerhttpshtmlfromrev212201trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadstrategieshttpshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.serviceworker.https.html (from rev 212201, trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.https.html) (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.serviceworker.https.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.serviceworker.https.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;bad-strategies.js service worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/service-workers/service-worker/resources/test-helpers.sub.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+service_worker_test('bad-strategies.js', 'Service worker test setup');
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadstrategiessharedworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.sharedworker-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.sharedworker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.sharedworker-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+CONSOLE MESSAGE: line 10: ReferenceError: Can't find variable: SharedWorker
+
+Harness Error (FAIL), message = ReferenceError: Can't find variable: SharedWorker
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadstrategiessharedworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.sharedworker.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.sharedworker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.sharedworker.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;bad-strategies.js shared worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+fetch_tests_from_worker(new SharedWorker('bad-strategies.js'));
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadunderlyingsourcesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -7,40 +7,18 @@
</span><span class="cx"> PASS Underlying source pull: throwing method (second pull) 
</span><span class="cx"> PASS Underlying source cancel: throwing getter 
</span><span class="cx"> PASS Underlying source cancel: throwing method 
</span><del>-PASS Underlying source: calling enqueue on an empty canceled stream should not throw 
-PASS Underlying source: calling enqueue on a non-empty canceled stream should not throw 
</del><ins>+PASS Underlying source: calling enqueue on an empty canceled stream should throw 
+PASS Underlying source: calling enqueue on a non-empty canceled stream should throw 
</ins><span class="cx"> PASS Underlying source: calling enqueue on a closed stream should throw 
</span><span class="cx"> PASS Underlying source: calling enqueue on an errored stream should throw 
</span><span class="cx"> PASS Underlying source: calling close twice on an empty stream should throw the second time 
</span><span class="cx"> PASS Underlying source: calling close twice on a non-empty stream should throw the second time 
</span><del>-PASS Underlying source: calling close on an empty canceled stream should not throw 
-PASS Underlying source: calling close on a non-empty canceled stream should not throw 
</del><ins>+PASS Underlying source: calling close on an empty canceled stream should throw 
+PASS Underlying source: calling close on a non-empty canceled stream should throw 
</ins><span class="cx"> PASS Underlying source: calling close after error should throw 
</span><span class="cx"> PASS Underlying source: calling error twice should throw the second time 
</span><span class="cx"> PASS Underlying source: calling error after close should throw 
</span><span class="cx"> PASS Underlying source: calling error and returning a rejected promise from start should cause the stream to error with the first error 
</span><span class="cx"> PASS Underlying source: calling error and returning a rejected promise from pull should cause the stream to error with the first error 
</span><del>-FAIL Load bad-underlying-sources.js with SharedWorker assert_unreached: SharedWorker is unavailable Reached unreachable code
-FAIL Untitled undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')
-PASS Underlying source start: throwing getter 
-PASS Underlying source start: throwing method 
-PASS Underlying source: throwing pull getter (initial pull) 
-PASS Underlying source: throwing pull method (initial pull) 
-PASS Underlying source pull: throwing getter (second pull) 
-PASS Underlying source pull: throwing method (second pull) 
-PASS Underlying source cancel: throwing getter 
-PASS Underlying source cancel: throwing method 
-PASS Underlying source: calling enqueue on an empty canceled stream should not throw 
-PASS Underlying source: calling enqueue on a non-empty canceled stream should not throw 
-PASS Underlying source: calling enqueue on a closed stream should throw 
-PASS Underlying source: calling enqueue on an errored stream should throw 
-PASS Underlying source: calling close twice on an empty stream should throw the second time 
-PASS Underlying source: calling close twice on a non-empty stream should throw the second time 
-PASS Underlying source: calling close on an empty canceled stream should not throw 
-PASS Underlying source: calling close on a non-empty canceled stream should not throw 
-PASS Underlying source: calling close after error should throw 
-PASS Underlying source: calling error twice should throw the second time 
-PASS Underlying source: calling error after close should throw 
-PASS Underlying source: calling error and returning a rejected promise from start should cause the stream to error with the first error 
-PASS Underlying source: calling error and returning a rejected promise from pull should cause the stream to error with the first error 
</del><ins>+PASS read should not error if it dequeues and pull() throws 
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadunderlyingsourcesdedicatedworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.dedicatedworker-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.dedicatedworker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.dedicatedworker-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,24 @@
</span><ins>+
+PASS Underlying source start: throwing getter 
+PASS Underlying source start: throwing method 
+PASS Underlying source: throwing pull getter (initial pull) 
+PASS Underlying source: throwing pull method (initial pull) 
+PASS Underlying source pull: throwing getter (second pull) 
+PASS Underlying source pull: throwing method (second pull) 
+PASS Underlying source cancel: throwing getter 
+PASS Underlying source cancel: throwing method 
+PASS Underlying source: calling enqueue on an empty canceled stream should throw 
+PASS Underlying source: calling enqueue on a non-empty canceled stream should throw 
+PASS Underlying source: calling enqueue on a closed stream should throw 
+PASS Underlying source: calling enqueue on an errored stream should throw 
+PASS Underlying source: calling close twice on an empty stream should throw the second time 
+PASS Underlying source: calling close twice on a non-empty stream should throw the second time 
+PASS Underlying source: calling close on an empty canceled stream should throw 
+PASS Underlying source: calling close on a non-empty canceled stream should throw 
+PASS Underlying source: calling close after error should throw 
+PASS Underlying source: calling error twice should throw the second time 
+PASS Underlying source: calling error after close should throw 
+PASS Underlying source: calling error and returning a rejected promise from start should cause the stream to error with the first error 
+PASS Underlying source: calling error and returning a rejected promise from pull should cause the stream to error with the first error 
+PASS read should not error if it dequeues and pull() throws 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadunderlyingsourcesdedicatedworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.dedicatedworker.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.dedicatedworker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.dedicatedworker.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;bad-underlying-sources.js dedicated worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+fetch_tests_from_worker(new Worker('bad-underlying-sources.js'));
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadunderlyingsourceshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,10 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;bad-underlying-sources.js browser context wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+
+
+&lt;script src=&quot;bad-underlying-sources.js&quot;&gt;&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadunderlyingsourceshttpsexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.https-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.https-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.https-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,46 +0,0 @@
</span><del>-
-PASS Underlying source start: throwing getter 
-PASS Underlying source start: throwing method 
-PASS Underlying source: throwing pull getter (initial pull) 
-PASS Underlying source: throwing pull method (initial pull) 
-PASS Underlying source pull: throwing getter (second pull) 
-PASS Underlying source pull: throwing method (second pull) 
-PASS Underlying source cancel: throwing getter 
-PASS Underlying source cancel: throwing method 
-PASS Underlying source: calling enqueue on an empty canceled stream should throw 
-PASS Underlying source: calling enqueue on a non-empty canceled stream should throw 
-PASS Underlying source: calling enqueue on a closed stream should throw 
-PASS Underlying source: calling enqueue on an errored stream should throw 
-PASS Underlying source: calling close twice on an empty stream should throw the second time 
-PASS Underlying source: calling close twice on a non-empty stream should throw the second time 
-PASS Underlying source: calling close on an empty canceled stream should throw 
-PASS Underlying source: calling close on a non-empty canceled stream should throw 
-PASS Underlying source: calling close after error should throw 
-PASS Underlying source: calling error twice should throw the second time 
-PASS Underlying source: calling error after close should throw 
-PASS Underlying source: calling error and returning a rejected promise from start should cause the stream to error with the first error 
-PASS Underlying source: calling error and returning a rejected promise from pull should cause the stream to error with the first error 
-FAIL Load bad-underlying-sources.js with SharedWorker assert_unreached: SharedWorker is unavailable Reached unreachable code
-FAIL Untitled undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')
-PASS Underlying source start: throwing getter 
-PASS Underlying source start: throwing method 
-PASS Underlying source: throwing pull getter (initial pull) 
-PASS Underlying source: throwing pull method (initial pull) 
-PASS Underlying source pull: throwing getter (second pull) 
-PASS Underlying source pull: throwing method (second pull) 
-PASS Underlying source cancel: throwing getter 
-PASS Underlying source cancel: throwing method 
-PASS Underlying source: calling enqueue on an empty canceled stream should throw 
-PASS Underlying source: calling enqueue on a non-empty canceled stream should throw 
-PASS Underlying source: calling enqueue on a closed stream should throw 
-PASS Underlying source: calling enqueue on an errored stream should throw 
-PASS Underlying source: calling close twice on an empty stream should throw the second time 
-PASS Underlying source: calling close twice on a non-empty stream should throw the second time 
-PASS Underlying source: calling close on an empty canceled stream should throw 
-PASS Underlying source: calling close on a non-empty canceled stream should throw 
-PASS Underlying source: calling close after error should throw 
-PASS Underlying source: calling error twice should throw the second time 
-PASS Underlying source: calling error after close should throw 
-PASS Underlying source: calling error and returning a rejected promise from start should cause the stream to error with the first error 
-PASS Underlying source: calling error and returning a rejected promise from pull should cause the stream to error with the first error 
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadunderlyingsourceshttpshtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.https.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.https.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.https.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,12 +0,0 @@
</span><del>-&lt;!DOCTYPE html&gt;
-&lt;meta charset=&quot;utf-8&quot;&gt;
-&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;/service-workers/service-worker/resources/test-helpers.sub.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;../resources/test-initializer.js&quot;&gt;&lt;/script&gt;
-
-&lt;script src=&quot;bad-underlying-sources.js&quot;&gt;&lt;/script&gt;
-&lt;script&gt;
-'use strict';
-worker_test('bad-underlying-sources.js');
-&lt;/script&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadunderlyingsourcesjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.js (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.js        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.js        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -380,4 +380,28 @@
</span><span class="cx"> }, 'Underlying source: calling error and returning a rejected promise from pull should cause the stream to error ' +
</span><span class="cx">    'with the first error');
</span><span class="cx"> 
</span><ins>+const error1 = { name: 'error1' };
+
+promise_test(t =&gt; {
+
+  let pullShouldThrow = false;
+  const rs = new ReadableStream({
+    pull(controller) {
+      if (pullShouldThrow) {
+        throw error1;
+      }
+      controller.enqueue(0);
+    }
+  }, new CountQueuingStrategy({highWaterMark: 1}));
+  const reader = rs.getReader();
+  return Promise.resolve().then(() =&gt; {
+    pullShouldThrow = true;
+    return Promise.all([
+      reader.read(),
+      promise_rejects(t, error1, reader.closed, '.closed promise should reject')
+    ]);
+  });
+
+}, 'read should not error if it dequeues and pull() throws');
+
</ins><span class="cx"> done();
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadunderlyingsourcesserviceworkerhttpsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.serviceworker.https-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.serviceworker.https-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.serviceworker.https-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+FAIL Service worker test setup undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadunderlyingsourcesserviceworkerhttpshtmlfromrev212201trunkLayoutTestsimportedw3cwebplatformtestsstreamscountqueuingstrategyhttpshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.serviceworker.https.html (from rev 212201, trunk/LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.https.html) (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.serviceworker.https.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.serviceworker.https.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;bad-underlying-sources.js service worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/service-workers/service-worker/resources/test-helpers.sub.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+service_worker_test('bad-underlying-sources.js', 'Service worker test setup');
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadunderlyingsourcessharedworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.sharedworker-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.sharedworker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.sharedworker-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+CONSOLE MESSAGE: line 10: ReferenceError: Can't find variable: SharedWorker
+
+Harness Error (FAIL), message = ReferenceError: Can't find variable: SharedWorker
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadunderlyingsourcessharedworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.sharedworker.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.sharedworker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.sharedworker.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;bad-underlying-sources.js shared worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+fetch_tests_from_worker(new SharedWorker('bad-underlying-sources.js'));
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbrandchecksexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/brand-checks-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/brand-checks-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/brand-checks-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -14,21 +14,4 @@
</span><span class="cx"> PASS ReadableStreamController.prototype.close enforces a brand check 
</span><span class="cx"> PASS ReadableStreamController.prototype.enqueue enforces a brand check 
</span><span class="cx"> PASS ReadableStreamController.prototype.error enforces a brand check 
</span><del>-FAIL Load brand-checks.js with SharedWorker assert_unreached: SharedWorker is unavailable Reached unreachable code
-FAIL Untitled undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')
-PASS Can get the ReadableStreamReader constructor indirectly 
-PASS Can get the ReadableStreamController constructor indirectly 
-PASS ReadableStream.prototype.cancel enforces a brand check 
-PASS ReadableStream.prototype.getReader enforces a brand check 
-PASS ReadableStream.prototype.tee enforces a brand check 
-PASS ReadableStreamReader enforces a brand check on its argument 
-PASS ReadableStreamReader.prototype.closed enforces a brand check 
-PASS ReadableStreamReader.prototype.cancel enforces a brand check 
-PASS ReadableStreamReader.prototype.read enforces a brand check 
-PASS ReadableStreamReader.prototype.releaseLock enforces a brand check 
-PASS ReadableStreamController enforces a brand check on its argument 
-PASS ReadableStreamController can't be given a fully-constructed ReadableStream 
-PASS ReadableStreamController.prototype.close enforces a brand check 
-PASS ReadableStreamController.prototype.enqueue enforces a brand check 
-PASS ReadableStreamController.prototype.error enforces a brand check 
</del><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbrandchecksdedicatedworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/brand-checks.dedicatedworker-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/brand-checks.dedicatedworker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/brand-checks.dedicatedworker-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+
+PASS Can get the ReadableStreamReader constructor indirectly 
+PASS Can get the ReadableStreamController constructor indirectly 
+PASS ReadableStream.prototype.cancel enforces a brand check 
+PASS ReadableStream.prototype.getReader enforces a brand check 
+PASS ReadableStream.prototype.tee enforces a brand check 
+PASS ReadableStreamReader enforces a brand check on its argument 
+PASS ReadableStreamReader.prototype.closed enforces a brand check 
+PASS ReadableStreamReader.prototype.cancel enforces a brand check 
+PASS ReadableStreamReader.prototype.read enforces a brand check 
+PASS ReadableStreamReader.prototype.releaseLock enforces a brand check 
+PASS ReadableStreamController enforces a brand check on its argument 
+PASS ReadableStreamController can't be given a fully-constructed ReadableStream 
+PASS ReadableStreamController.prototype.close enforces a brand check 
+PASS ReadableStreamController.prototype.enqueue enforces a brand check 
+PASS ReadableStreamController.prototype.error enforces a brand check 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbrandchecksdedicatedworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/brand-checks.dedicatedworker.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/brand-checks.dedicatedworker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/brand-checks.dedicatedworker.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;brand-checks.js dedicated worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+fetch_tests_from_worker(new Worker('brand-checks.js'));
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbrandcheckshtmlfromrev212201trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbrandcheckshttpshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/brand-checks.html (from rev 212201, trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/brand-checks.https.html) (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/brand-checks.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/brand-checks.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,10 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;brand-checks.js browser context wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script src=&quot;../resources/test-utils.js&quot;&gt;&lt;/script&gt;
+
+&lt;script src=&quot;brand-checks.js&quot;&gt;&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbrandcheckshttpsexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/brand-checks.https-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/brand-checks.https-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/brand-checks.https-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,34 +0,0 @@
</span><del>-
-PASS Can get the ReadableStreamReader constructor indirectly 
-PASS Can get the ReadableStreamController constructor indirectly 
-PASS ReadableStream.prototype.cancel enforces a brand check 
-PASS ReadableStream.prototype.getReader enforces a brand check 
-PASS ReadableStream.prototype.tee enforces a brand check 
-PASS ReadableStreamReader enforces a brand check on its argument 
-PASS ReadableStreamReader.prototype.closed enforces a brand check 
-PASS ReadableStreamReader.prototype.cancel enforces a brand check 
-PASS ReadableStreamReader.prototype.read enforces a brand check 
-PASS ReadableStreamReader.prototype.releaseLock enforces a brand check 
-PASS ReadableStreamController enforces a brand check on its argument 
-PASS ReadableStreamController can't be given a fully-constructed ReadableStream 
-PASS ReadableStreamController.prototype.close enforces a brand check 
-PASS ReadableStreamController.prototype.enqueue enforces a brand check 
-PASS ReadableStreamController.prototype.error enforces a brand check 
-FAIL Load brand-checks.js with SharedWorker assert_unreached: SharedWorker is unavailable Reached unreachable code
-FAIL Untitled undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')
-PASS Can get the ReadableStreamReader constructor indirectly 
-PASS Can get the ReadableStreamController constructor indirectly 
-PASS ReadableStream.prototype.cancel enforces a brand check 
-PASS ReadableStream.prototype.getReader enforces a brand check 
-PASS ReadableStream.prototype.tee enforces a brand check 
-PASS ReadableStreamReader enforces a brand check on its argument 
-PASS ReadableStreamReader.prototype.closed enforces a brand check 
-PASS ReadableStreamReader.prototype.cancel enforces a brand check 
-PASS ReadableStreamReader.prototype.read enforces a brand check 
-PASS ReadableStreamReader.prototype.releaseLock enforces a brand check 
-PASS ReadableStreamController enforces a brand check on its argument 
-PASS ReadableStreamController can't be given a fully-constructed ReadableStream 
-PASS ReadableStreamController.prototype.close enforces a brand check 
-PASS ReadableStreamController.prototype.enqueue enforces a brand check 
-PASS ReadableStreamController.prototype.error enforces a brand check 
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbrandcheckshttpshtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/brand-checks.https.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/brand-checks.https.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/brand-checks.https.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,13 +0,0 @@
</span><del>-&lt;!DOCTYPE html&gt;
-&lt;meta charset=&quot;utf-8&quot;&gt;
-&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;/service-workers/service-worker/resources/test-helpers.sub.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;../resources/test-initializer.js&quot;&gt;&lt;/script&gt;
-
-&lt;script src=&quot;../resources/test-utils.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;brand-checks.js&quot;&gt;&lt;/script&gt;
-&lt;script&gt;
-'use strict';
-worker_test('brand-checks.js');
-&lt;/script&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbrandchecksserviceworkerhttpsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/brand-checks.serviceworker.https-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/brand-checks.serviceworker.https-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/brand-checks.serviceworker.https-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+FAIL Service worker test setup undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbrandchecksserviceworkerhttpshtmlfromrev212201trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadstrategieshttpshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/brand-checks.serviceworker.https.html (from rev 212201, trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.https.html) (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/brand-checks.serviceworker.https.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/brand-checks.serviceworker.https.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;brand-checks.js service worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/service-workers/service-worker/resources/test-helpers.sub.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+service_worker_test('brand-checks.js', 'Service worker test setup');
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbrandcheckssharedworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/brand-checks.sharedworker-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/brand-checks.sharedworker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/brand-checks.sharedworker-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+CONSOLE MESSAGE: line 10: ReferenceError: Can't find variable: SharedWorker
+
+Harness Error (FAIL), message = ReferenceError: Can't find variable: SharedWorker
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbrandcheckssharedworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/brand-checks.sharedworker.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/brand-checks.sharedworker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/brand-checks.sharedworker.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;brand-checks.js shared worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+fetch_tests_from_worker(new SharedWorker('brand-checks.js'));
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamscancelexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -9,16 +9,4 @@
</span><span class="cx"> PASS ReadableStream cancellation: if the underlying source's cancel method returns a promise, the promise returned by the stream's cancel should fulfill when that one does (2) 
</span><span class="cx"> PASS ReadableStream cancellation: if the underlying source's cancel method returns a promise, the promise returned by the stream's cancel should reject when that one does 
</span><span class="cx"> PASS ReadableStream cancellation: cancelling before start finishes should prevent pull() from being called 
</span><del>-FAIL Load cancel.js with SharedWorker assert_unreached: SharedWorker is unavailable Reached unreachable code
-FAIL Untitled undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')
-PASS ReadableStream cancellation: integration test on an infinite stream derived from a random push source 
-PASS ReadableStream cancellation: cancel(reason) should pass through the given reason to the underlying source 
-PASS ReadableStream cancellation: cancel() on a locked stream should fail and not call the underlying source cancel 
-PASS ReadableStream cancellation: should fulfill promise when cancel callback went fine 
-PASS ReadableStream cancellation: returning a value from the underlying source's cancel should not affect the fulfillment value of the promise returned by the stream's cancel 
-PASS ReadableStream cancellation: should reject promise when cancel callback raises an exception 
-PASS ReadableStream cancellation: if the underlying source's cancel method returns a promise, the promise returned by the stream's cancel should fulfill when that one does (1) 
-PASS ReadableStream cancellation: if the underlying source's cancel method returns a promise, the promise returned by the stream's cancel should fulfill when that one does (2) 
-PASS ReadableStream cancellation: if the underlying source's cancel method returns a promise, the promise returned by the stream's cancel should reject when that one does 
-PASS ReadableStream cancellation: cancelling before start finishes should prevent pull() from being called 
</del><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamscanceldedicatedworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel.dedicatedworker-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel.dedicatedworker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel.dedicatedworker-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+
+PASS ReadableStream cancellation: integration test on an infinite stream derived from a random push source 
+PASS ReadableStream cancellation: cancel(reason) should pass through the given reason to the underlying source 
+PASS ReadableStream cancellation: cancel() on a locked stream should fail and not call the underlying source cancel 
+PASS ReadableStream cancellation: should fulfill promise when cancel callback went fine 
+PASS ReadableStream cancellation: returning a value from the underlying source's cancel should not affect the fulfillment value of the promise returned by the stream's cancel 
+PASS ReadableStream cancellation: should reject promise when cancel callback raises an exception 
+PASS ReadableStream cancellation: if the underlying source's cancel method returns a promise, the promise returned by the stream's cancel should fulfill when that one does (1) 
+PASS ReadableStream cancellation: if the underlying source's cancel method returns a promise, the promise returned by the stream's cancel should fulfill when that one does (2) 
+PASS ReadableStream cancellation: if the underlying source's cancel method returns a promise, the promise returned by the stream's cancel should reject when that one does 
+PASS ReadableStream cancellation: cancelling before start finishes should prevent pull() from being called 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamscanceldedicatedworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel.dedicatedworker.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel.dedicatedworker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel.dedicatedworker.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;cancel.js dedicated worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+fetch_tests_from_worker(new Worker('cancel.js'));
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamscancelhtmlfromrev212201trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamscancelhttpshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel.html (from rev 212201, trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel.https.html) (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;cancel.js browser context wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script src=&quot;../resources/test-utils.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../resources/rs-utils.js&quot;&gt;&lt;/script&gt;
+
+&lt;script src=&quot;cancel.js&quot;&gt;&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamscancelhttpsexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel.https-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel.https-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel.https-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,24 +0,0 @@
</span><del>-
-PASS ReadableStream cancellation: integration test on an infinite stream derived from a random push source 
-PASS ReadableStream cancellation: cancel(reason) should pass through the given reason to the underlying source 
-PASS ReadableStream cancellation: cancel() on a locked stream should fail and not call the underlying source cancel 
-PASS ReadableStream cancellation: should fulfill promise when cancel callback went fine 
-PASS ReadableStream cancellation: returning a value from the underlying source's cancel should not affect the fulfillment value of the promise returned by the stream's cancel 
-PASS ReadableStream cancellation: should reject promise when cancel callback raises an exception 
-PASS ReadableStream cancellation: if the underlying source's cancel method returns a promise, the promise returned by the stream's cancel should fulfill when that one does (1) 
-PASS ReadableStream cancellation: if the underlying source's cancel method returns a promise, the promise returned by the stream's cancel should fulfill when that one does (2) 
-PASS ReadableStream cancellation: if the underlying source's cancel method returns a promise, the promise returned by the stream's cancel should reject when that one does 
-PASS ReadableStream cancellation: cancelling before start finishes should prevent pull() from being called 
-FAIL Load cancel.js with SharedWorker assert_unreached: SharedWorker is unavailable Reached unreachable code
-FAIL Untitled undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')
-PASS ReadableStream cancellation: integration test on an infinite stream derived from a random push source 
-PASS ReadableStream cancellation: cancel(reason) should pass through the given reason to the underlying source 
-PASS ReadableStream cancellation: cancel() on a locked stream should fail and not call the underlying source cancel 
-PASS ReadableStream cancellation: should fulfill promise when cancel callback went fine 
-PASS ReadableStream cancellation: returning a value from the underlying source's cancel should not affect the fulfillment value of the promise returned by the stream's cancel 
-PASS ReadableStream cancellation: should reject promise when cancel callback raises an exception 
-PASS ReadableStream cancellation: if the underlying source's cancel method returns a promise, the promise returned by the stream's cancel should fulfill when that one does (1) 
-PASS ReadableStream cancellation: if the underlying source's cancel method returns a promise, the promise returned by the stream's cancel should fulfill when that one does (2) 
-PASS ReadableStream cancellation: if the underlying source's cancel method returns a promise, the promise returned by the stream's cancel should reject when that one does 
-PASS ReadableStream cancellation: cancelling before start finishes should prevent pull() from being called 
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamscancelhttpshtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel.https.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel.https.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel.https.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,14 +0,0 @@
</span><del>-&lt;!DOCTYPE html&gt;
-&lt;meta charset=&quot;utf-8&quot;&gt;
-&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;/service-workers/service-worker/resources/test-helpers.sub.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;../resources/test-initializer.js&quot;&gt;&lt;/script&gt;
-
-&lt;script src=&quot;../resources/test-utils.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;../resources/rs-utils.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;cancel.js&quot;&gt;&lt;/script&gt;
-&lt;script&gt;
-'use strict';
-worker_test('cancel.js');
-&lt;/script&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamscancelserviceworkerhttpsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel.serviceworker.https-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel.serviceworker.https-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel.serviceworker.https-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+FAIL Service worker test setup undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamscancelserviceworkerhttpshtmlfromrev212201trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadstrategieshttpshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel.serviceworker.https.html (from rev 212201, trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.https.html) (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel.serviceworker.https.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel.serviceworker.https.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;cancel.js service worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/service-workers/service-worker/resources/test-helpers.sub.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+service_worker_test('cancel.js', 'Service worker test setup');
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamscancelsharedworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel.sharedworker-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel.sharedworker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel.sharedworker-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+CONSOLE MESSAGE: line 10: ReferenceError: Can't find variable: SharedWorker
+
+Harness Error (FAIL), message = ReferenceError: Can't find variable: SharedWorker
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamscancelsharedworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel.sharedworker.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel.sharedworker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel.sharedworker.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;cancel.js shared worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+fetch_tests_from_worker(new SharedWorker('cancel.js'));
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamscountqueuingstrategyintegrationexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/count-queuing-strategy-integration-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/count-queuing-strategy-integration-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/count-queuing-strategy-integration-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -3,10 +3,4 @@
</span><span class="cx"> PASS Correctly governs a ReadableStreamController's desiredSize property (HWM = 0) 
</span><span class="cx"> PASS Correctly governs a ReadableStreamController's desiredSize property (HWM = 1) 
</span><span class="cx"> PASS Correctly governs a ReadableStreamController's desiredSize property (HWM = 4) 
</span><del>-FAIL Load count-queuing-strategy-integration.js with SharedWorker assert_unreached: SharedWorker is unavailable Reached unreachable code
-FAIL Untitled undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')
-PASS Can construct a readable stream with a valid CountQueuingStrategy 
-PASS Correctly governs a ReadableStreamController's desiredSize property (HWM = 0) 
-PASS Correctly governs a ReadableStreamController's desiredSize property (HWM = 1) 
-PASS Correctly governs a ReadableStreamController's desiredSize property (HWM = 4) 
</del><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamscountqueuingstrategyintegrationdedicatedworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.dedicatedworker-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.dedicatedworker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.dedicatedworker-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+
+PASS Can construct a readable stream with a valid CountQueuingStrategy 
+PASS Correctly governs a ReadableStreamController's desiredSize property (HWM = 0) 
+PASS Correctly governs a ReadableStreamController's desiredSize property (HWM = 1) 
+PASS Correctly governs a ReadableStreamController's desiredSize property (HWM = 4) 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamscountqueuingstrategyintegrationdedicatedworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.dedicatedworker.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.dedicatedworker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.dedicatedworker.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;count-queuing-strategy-integration.js dedicated worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+fetch_tests_from_worker(new Worker('count-queuing-strategy-integration.js'));
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamscountqueuingstrategyintegrationhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,10 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;count-queuing-strategy-integration.js browser context wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+
+
+&lt;script src=&quot;count-queuing-strategy-integration.js&quot;&gt;&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamscountqueuingstrategyintegrationhttpsexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.https-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.https-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.https-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,12 +0,0 @@
</span><del>-
-PASS Can construct a readable stream with a valid CountQueuingStrategy 
-PASS Correctly governs a ReadableStreamController's desiredSize property (HWM = 0) 
-PASS Correctly governs a ReadableStreamController's desiredSize property (HWM = 1) 
-PASS Correctly governs a ReadableStreamController's desiredSize property (HWM = 4) 
-FAIL Load count-queuing-strategy-integration.js with SharedWorker assert_unreached: SharedWorker is unavailable Reached unreachable code
-FAIL Untitled undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')
-PASS Can construct a readable stream with a valid CountQueuingStrategy 
-PASS Correctly governs a ReadableStreamController's desiredSize property (HWM = 0) 
-PASS Correctly governs a ReadableStreamController's desiredSize property (HWM = 1) 
-PASS Correctly governs a ReadableStreamController's desiredSize property (HWM = 4) 
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamscountqueuingstrategyintegrationhttpshtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.https.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.https.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.https.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,12 +0,0 @@
</span><del>-&lt;!DOCTYPE html&gt;
-&lt;meta charset=&quot;utf-8&quot;&gt;
-&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;/service-workers/service-worker/resources/test-helpers.sub.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;../resources/test-initializer.js&quot;&gt;&lt;/script&gt;
-
-&lt;script src=&quot;count-queuing-strategy-integration.js&quot;&gt;&lt;/script&gt;
-&lt;script&gt;
-'use strict';
-worker_test('count-queuing-strategy-integration.js');
-&lt;/script&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamscountqueuingstrategyintegrationserviceworkerhttpsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.serviceworker.https-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.serviceworker.https-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.serviceworker.https-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+FAIL Service worker test setup undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamscountqueuingstrategyintegrationserviceworkerhttpshtmlfromrev212201trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadstrategieshttpshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.serviceworker.https.html (from rev 212201, trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.https.html) (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.serviceworker.https.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.serviceworker.https.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;count-queuing-strategy-integration.js service worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/service-workers/service-worker/resources/test-helpers.sub.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+service_worker_test('count-queuing-strategy-integration.js', 'Service worker test setup');
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamscountqueuingstrategyintegrationsharedworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.sharedworker-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.sharedworker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.sharedworker-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+CONSOLE MESSAGE: line 10: ReferenceError: Can't find variable: SharedWorker
+
+Harness Error (FAIL), message = ReferenceError: Can't find variable: SharedWorker
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamscountqueuingstrategyintegrationsharedworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.sharedworker.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.sharedworker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.sharedworker.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;count-queuing-strategy-integration.js shared worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+fetch_tests_from_worker(new SharedWorker('count-queuing-strategy-integration.js'));
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsgarbagecollectionexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/garbage-collection-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/garbage-collection-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/garbage-collection-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,16 +1,6 @@
</span><del>-CONSOLE MESSAGE: line 37: Tests are running without the ability to do manual garbage collection. They will still work, but coverage will be suboptimal.
-CONSOLE MESSAGE: line 37: Tests are running without the ability to do manual garbage collection. They will still work, but coverage will be suboptimal.
-CONSOLE MESSAGE: line 37: Tests are running without the ability to do manual garbage collection. They will still work, but coverage will be suboptimal.
-CONSOLE MESSAGE: line 37: Tests are running without the ability to do manual garbage collection. They will still work, but coverage will be suboptimal.
</del><span class="cx"> 
</span><span class="cx"> PASS ReadableStreamController methods should continue working properly when scripts lose their reference to the readable stream 
</span><span class="cx"> PASS ReadableStream closed promise should fulfill even if the stream and reader JS references are lost 
</span><span class="cx"> PASS ReadableStream closed promise should reject even if stream and reader JS references are lost 
</span><span class="cx"> PASS Garbage-collecting a ReadableStreamReader should not unlock its stream 
</span><del>-FAIL Load garbage-collection.js with SharedWorker assert_unreached: SharedWorker is unavailable Reached unreachable code
-FAIL Untitled undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')
-PASS ReadableStreamController methods should continue working properly when scripts lose their reference to the readable stream 
-PASS ReadableStream closed promise should fulfill even if the stream and reader JS references are lost 
-PASS ReadableStream closed promise should reject even if stream and reader JS references are lost 
-PASS Garbage-collecting a ReadableStreamReader should not unlock its stream 
</del><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsgarbagecollectiondedicatedworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/garbage-collection.dedicatedworker-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/garbage-collection.dedicatedworker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/garbage-collection.dedicatedworker-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+
+PASS ReadableStreamController methods should continue working properly when scripts lose their reference to the readable stream 
+PASS ReadableStream closed promise should fulfill even if the stream and reader JS references are lost 
+PASS ReadableStream closed promise should reject even if stream and reader JS references are lost 
+PASS Garbage-collecting a ReadableStreamReader should not unlock its stream 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsgarbagecollectiondedicatedworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/garbage-collection.dedicatedworker.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/garbage-collection.dedicatedworker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/garbage-collection.dedicatedworker.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;garbage-collection.js dedicated worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+fetch_tests_from_worker(new Worker('garbage-collection.js'));
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsgarbagecollectionhtmlfromrev212201trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsgarbagecollectionhttpshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/garbage-collection.html (from rev 212201, trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/garbage-collection.https.html) (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/garbage-collection.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/garbage-collection.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,10 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;garbage-collection.js browser context wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script src=&quot;../resources/test-utils.js&quot;&gt;&lt;/script&gt;
+
+&lt;script src=&quot;garbage-collection.js&quot;&gt;&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsgarbagecollectionhttpsexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/garbage-collection.https-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/garbage-collection.https-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/garbage-collection.https-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,12 +0,0 @@
</span><del>-
-PASS ReadableStreamController methods should continue working properly when scripts lose their reference to the readable stream 
-PASS ReadableStream closed promise should fulfill even if the stream and reader JS references are lost 
-PASS ReadableStream closed promise should reject even if stream and reader JS references are lost 
-PASS Garbage-collecting a ReadableStreamReader should not unlock its stream 
-FAIL Load garbage-collection.js with SharedWorker assert_unreached: SharedWorker is unavailable Reached unreachable code
-FAIL Untitled undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')
-PASS ReadableStreamController methods should continue working properly when scripts lose their reference to the readable stream 
-PASS ReadableStream closed promise should fulfill even if the stream and reader JS references are lost 
-PASS ReadableStream closed promise should reject even if stream and reader JS references are lost 
-PASS Garbage-collecting a ReadableStreamReader should not unlock its stream 
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsgarbagecollectionhttpshtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/garbage-collection.https.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/garbage-collection.https.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/garbage-collection.https.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,13 +0,0 @@
</span><del>-&lt;!DOCTYPE html&gt;
-&lt;meta charset=&quot;utf-8&quot;&gt;
-&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;/service-workers/service-worker/resources/test-helpers.sub.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;../resources/test-initializer.js&quot;&gt;&lt;/script&gt;
-
-&lt;script src=&quot;../resources/test-utils.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;garbage-collection.js&quot;&gt;&lt;/script&gt;
-&lt;script&gt;
-'use strict';
-worker_test('garbage-collection.js');
-&lt;/script&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsgarbagecollectionserviceworkerhttpsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/garbage-collection.serviceworker.https-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/garbage-collection.serviceworker.https-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/garbage-collection.serviceworker.https-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+FAIL Service worker test setup undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsgarbagecollectionserviceworkerhttpshtmlfromrev212201trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadstrategieshttpshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/garbage-collection.serviceworker.https.html (from rev 212201, trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.https.html) (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/garbage-collection.serviceworker.https.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/garbage-collection.serviceworker.https.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;garbage-collection.js service worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/service-workers/service-worker/resources/test-helpers.sub.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+service_worker_test('garbage-collection.js', 'Service worker test setup');
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsgarbagecollectionsharedworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/garbage-collection.sharedworker-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/garbage-collection.sharedworker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/garbage-collection.sharedworker-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+CONSOLE MESSAGE: line 10: ReferenceError: Can't find variable: SharedWorker
+
+Harness Error (FAIL), message = ReferenceError: Can't find variable: SharedWorker
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsgarbagecollectionsharedworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/garbage-collection.sharedworker.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/garbage-collection.sharedworker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/garbage-collection.sharedworker.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;garbage-collection.js shared worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+fetch_tests_from_worker(new SharedWorker('garbage-collection.js'));
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsgeneralexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,11 +1,12 @@
</span><span class="cx"> 
</span><span class="cx"> PASS ReadableStream can be constructed with no errors 
</span><span class="cx"> PASS ReadableStream can't be constructed with garbage 
</span><del>-FAIL ReadableStream instances should have the correct list of properties assert_false: method should be non-enumerable expected false got true
</del><ins>+PASS ReadableStream can't be constructed with an invalid type 
+FAIL ReadableStream instances should have the correct list of properties assert_equals: getReader should have no parameters expected 0 but got 1
</ins><span class="cx"> PASS ReadableStream constructor should throw for non-function start arguments 
</span><span class="cx"> PASS ReadableStream constructor can get initial garbage as cancel argument 
</span><span class="cx"> PASS ReadableStream constructor can get initial garbage as pull argument 
</span><del>-FAIL ReadableStream start should be called with the proper parameters assert_false: close should be non-enumerable expected false got true
</del><ins>+PASS ReadableStream start should be called with the proper parameters 
</ins><span class="cx"> PASS ReadableStream start controller parameter should be extensible 
</span><span class="cx"> PASS ReadableStream should be able to call start method within prototype chain of its source 
</span><span class="cx"> PASS ReadableStream start should be able to return a promise 
</span><span class="lines">@@ -23,9 +24,10 @@
</span><span class="cx"> PASS ReadableStream: should not call pull after start if the stream is now closed 
</span><span class="cx"> PASS ReadableStream: should call pull after enqueueing from inside pull (with no read requests), if strategy allows 
</span><span class="cx"> PASS ReadableStream pull should be able to close a stream. 
</span><ins>+PASS ReadableStream pull should be able to error a stream. 
+PASS ReadableStream pull should be able to error a stream and throw. 
</ins><span class="cx"> PASS ReadableStream: enqueue should throw when the stream is readable but draining 
</span><span class="cx"> PASS ReadableStream: enqueue should throw when the stream is closed 
</span><del>-PASS ReadableStream: enqueue should throw the stored error when the stream is errored 
</del><span class="cx"> PASS ReadableStream: should call underlying source methods as methods 
</span><span class="cx"> PASS ReadableStream strategies: the default strategy should give desiredSize of 1 to start, decreasing by 1 per enqueue 
</span><span class="cx"> PASS ReadableStream strategies: the default strategy should continue giving desiredSize of 1 if the chunks are read immediately 
</span><span class="lines">@@ -32,39 +34,4 @@
</span><span class="cx"> PASS ReadableStream integration test: adapting a random push source 
</span><span class="cx"> PASS ReadableStream integration test: adapting a sync pull source 
</span><span class="cx"> PASS ReadableStream integration test: adapting an async pull source 
</span><del>-FAIL Load general.js with SharedWorker assert_unreached: SharedWorker is unavailable Reached unreachable code
-FAIL Untitled undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')
-PASS ReadableStream can be constructed with no errors 
-PASS ReadableStream can't be constructed with garbage 
-FAIL ReadableStream instances should have the correct list of properties assert_false: method should be non-enumerable expected false got true
-PASS ReadableStream constructor should throw for non-function start arguments 
-PASS ReadableStream constructor can get initial garbage as cancel argument 
-PASS ReadableStream constructor can get initial garbage as pull argument 
-FAIL ReadableStream start should be called with the proper parameters assert_false: close should be non-enumerable expected false got true
-PASS ReadableStream start controller parameter should be extensible 
-PASS ReadableStream should be able to call start method within prototype chain of its source 
-PASS ReadableStream start should be able to return a promise 
-PASS ReadableStream start should be able to return a promise and reject it 
-PASS ReadableStream should be able to enqueue different objects. 
-PASS ReadableStream: if pull rejects, it should error the stream 
-PASS ReadableStream: should only call pull once upon starting the stream 
-PASS ReadableStream: should call pull when trying to read from a started, empty stream 
-PASS ReadableStream: should only call pull once on a non-empty stream read from before start fulfills 
-PASS ReadableStream: should only call pull once on a non-empty stream read from after start fulfills 
-PASS ReadableStream: should call pull in reaction to read()ing the last chunk, if not draining 
-PASS ReadableStream: should not call pull() in reaction to read()ing the last chunk, if draining 
-PASS ReadableStream: should not call pull until the previous pull call's promise fulfills 
-PASS ReadableStream: should pull after start, and after every read 
-PASS ReadableStream: should not call pull after start if the stream is now closed 
-PASS ReadableStream: should call pull after enqueueing from inside pull (with no read requests), if strategy allows 
-PASS ReadableStream pull should be able to close a stream. 
-PASS ReadableStream: enqueue should throw when the stream is readable but draining 
-PASS ReadableStream: enqueue should throw when the stream is closed 
-PASS ReadableStream: enqueue should throw the stored error when the stream is errored 
-PASS ReadableStream: should call underlying source methods as methods 
-PASS ReadableStream strategies: the default strategy should give desiredSize of 1 to start, decreasing by 1 per enqueue 
-PASS ReadableStream strategies: the default strategy should continue giving desiredSize of 1 if the chunks are read immediately 
-PASS ReadableStream integration test: adapting a random push source 
-PASS ReadableStream integration test: adapting a sync pull source 
-PASS ReadableStream integration test: adapting an async pull source 
</del><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsgeneraldedicatedworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.dedicatedworker-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.dedicatedworker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.dedicatedworker-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,37 @@
</span><ins>+
+PASS ReadableStream can be constructed with no errors 
+PASS ReadableStream can't be constructed with garbage 
+PASS ReadableStream can't be constructed with an invalid type 
+FAIL ReadableStream instances should have the correct list of properties assert_equals: getReader should have no parameters expected 0 but got 1
+PASS ReadableStream constructor should throw for non-function start arguments 
+PASS ReadableStream constructor can get initial garbage as cancel argument 
+PASS ReadableStream constructor can get initial garbage as pull argument 
+PASS ReadableStream start should be called with the proper parameters 
+PASS ReadableStream start controller parameter should be extensible 
+PASS ReadableStream should be able to call start method within prototype chain of its source 
+PASS ReadableStream start should be able to return a promise 
+PASS ReadableStream start should be able to return a promise and reject it 
+PASS ReadableStream should be able to enqueue different objects. 
+PASS ReadableStream: if pull rejects, it should error the stream 
+PASS ReadableStream: should only call pull once upon starting the stream 
+PASS ReadableStream: should call pull when trying to read from a started, empty stream 
+PASS ReadableStream: should only call pull once on a non-empty stream read from before start fulfills 
+PASS ReadableStream: should only call pull once on a non-empty stream read from after start fulfills 
+PASS ReadableStream: should call pull in reaction to read()ing the last chunk, if not draining 
+PASS ReadableStream: should not call pull() in reaction to read()ing the last chunk, if draining 
+PASS ReadableStream: should not call pull until the previous pull call's promise fulfills 
+PASS ReadableStream: should pull after start, and after every read 
+PASS ReadableStream: should not call pull after start if the stream is now closed 
+PASS ReadableStream: should call pull after enqueueing from inside pull (with no read requests), if strategy allows 
+PASS ReadableStream pull should be able to close a stream. 
+PASS ReadableStream pull should be able to error a stream. 
+PASS ReadableStream pull should be able to error a stream and throw. 
+PASS ReadableStream: enqueue should throw when the stream is readable but draining 
+PASS ReadableStream: enqueue should throw when the stream is closed 
+PASS ReadableStream: should call underlying source methods as methods 
+PASS ReadableStream strategies: the default strategy should give desiredSize of 1 to start, decreasing by 1 per enqueue 
+PASS ReadableStream strategies: the default strategy should continue giving desiredSize of 1 if the chunks are read immediately 
+PASS ReadableStream integration test: adapting a random push source 
+PASS ReadableStream integration test: adapting a sync pull source 
+PASS ReadableStream integration test: adapting an async pull source 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsgeneraldedicatedworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.dedicatedworker.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.dedicatedworker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.dedicatedworker.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;general.js dedicated worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+fetch_tests_from_worker(new Worker('general.js'));
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsgeneralhtmlfromrev212201trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsgeneralhttpshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.html (from rev 212201, trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.https.html) (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;general.js browser context wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script src=&quot;../resources/test-utils.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../resources/rs-utils.js&quot;&gt;&lt;/script&gt;
+
+&lt;script src=&quot;general.js&quot;&gt;&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsgeneralhttpsexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.https-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.https-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.https-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,74 +0,0 @@
</span><del>-
-PASS ReadableStream can be constructed with no errors 
-PASS ReadableStream can't be constructed with garbage 
-PASS ReadableStream can't be constructed with an invalid type 
-FAIL ReadableStream instances should have the correct list of properties assert_equals: getReader should have no parameters expected 0 but got 1
-PASS ReadableStream constructor should throw for non-function start arguments 
-PASS ReadableStream constructor can get initial garbage as cancel argument 
-PASS ReadableStream constructor can get initial garbage as pull argument 
-PASS ReadableStream start should be called with the proper parameters 
-PASS ReadableStream start controller parameter should be extensible 
-PASS ReadableStream should be able to call start method within prototype chain of its source 
-PASS ReadableStream start should be able to return a promise 
-PASS ReadableStream start should be able to return a promise and reject it 
-PASS ReadableStream should be able to enqueue different objects. 
-PASS ReadableStream: if pull rejects, it should error the stream 
-PASS ReadableStream: should only call pull once upon starting the stream 
-PASS ReadableStream: should call pull when trying to read from a started, empty stream 
-PASS ReadableStream: should only call pull once on a non-empty stream read from before start fulfills 
-PASS ReadableStream: should only call pull once on a non-empty stream read from after start fulfills 
-PASS ReadableStream: should call pull in reaction to read()ing the last chunk, if not draining 
-PASS ReadableStream: should not call pull() in reaction to read()ing the last chunk, if draining 
-PASS ReadableStream: should not call pull until the previous pull call's promise fulfills 
-PASS ReadableStream: should pull after start, and after every read 
-PASS ReadableStream: should not call pull after start if the stream is now closed 
-PASS ReadableStream: should call pull after enqueueing from inside pull (with no read requests), if strategy allows 
-PASS ReadableStream pull should be able to close a stream. 
-PASS ReadableStream pull should be able to error a stream. 
-PASS ReadableStream pull should be able to error a stream and throw. 
-PASS ReadableStream: enqueue should throw when the stream is readable but draining 
-PASS ReadableStream: enqueue should throw when the stream is closed 
-PASS ReadableStream: should call underlying source methods as methods 
-PASS ReadableStream strategies: the default strategy should give desiredSize of 1 to start, decreasing by 1 per enqueue 
-PASS ReadableStream strategies: the default strategy should continue giving desiredSize of 1 if the chunks are read immediately 
-PASS ReadableStream integration test: adapting a random push source 
-PASS ReadableStream integration test: adapting a sync pull source 
-PASS ReadableStream integration test: adapting an async pull source 
-FAIL Load general.js with SharedWorker assert_unreached: SharedWorker is unavailable Reached unreachable code
-FAIL Untitled undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')
-PASS ReadableStream can be constructed with no errors 
-PASS ReadableStream can't be constructed with garbage 
-PASS ReadableStream can't be constructed with an invalid type 
-FAIL ReadableStream instances should have the correct list of properties assert_equals: getReader should have no parameters expected 0 but got 1
-PASS ReadableStream constructor should throw for non-function start arguments 
-PASS ReadableStream constructor can get initial garbage as cancel argument 
-PASS ReadableStream constructor can get initial garbage as pull argument 
-PASS ReadableStream start should be called with the proper parameters 
-PASS ReadableStream start controller parameter should be extensible 
-PASS ReadableStream should be able to call start method within prototype chain of its source 
-PASS ReadableStream start should be able to return a promise 
-PASS ReadableStream start should be able to return a promise and reject it 
-PASS ReadableStream should be able to enqueue different objects. 
-PASS ReadableStream: if pull rejects, it should error the stream 
-PASS ReadableStream: should only call pull once upon starting the stream 
-PASS ReadableStream: should call pull when trying to read from a started, empty stream 
-PASS ReadableStream: should only call pull once on a non-empty stream read from before start fulfills 
-PASS ReadableStream: should only call pull once on a non-empty stream read from after start fulfills 
-PASS ReadableStream: should call pull in reaction to read()ing the last chunk, if not draining 
-PASS ReadableStream: should not call pull() in reaction to read()ing the last chunk, if draining 
-PASS ReadableStream: should not call pull until the previous pull call's promise fulfills 
-PASS ReadableStream: should pull after start, and after every read 
-PASS ReadableStream: should not call pull after start if the stream is now closed 
-PASS ReadableStream: should call pull after enqueueing from inside pull (with no read requests), if strategy allows 
-PASS ReadableStream pull should be able to close a stream. 
-PASS ReadableStream pull should be able to error a stream. 
-PASS ReadableStream pull should be able to error a stream and throw. 
-PASS ReadableStream: enqueue should throw when the stream is readable but draining 
-PASS ReadableStream: enqueue should throw when the stream is closed 
-PASS ReadableStream: should call underlying source methods as methods 
-PASS ReadableStream strategies: the default strategy should give desiredSize of 1 to start, decreasing by 1 per enqueue 
-PASS ReadableStream strategies: the default strategy should continue giving desiredSize of 1 if the chunks are read immediately 
-PASS ReadableStream integration test: adapting a random push source 
-PASS ReadableStream integration test: adapting a sync pull source 
-PASS ReadableStream integration test: adapting an async pull source 
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsgeneralhttpshtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.https.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.https.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.https.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,14 +0,0 @@
</span><del>-&lt;!DOCTYPE html&gt;
-&lt;meta charset=&quot;utf-8&quot;&gt;
-&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;/service-workers/service-worker/resources/test-helpers.sub.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;../resources/test-initializer.js&quot;&gt;&lt;/script&gt;
-
-&lt;script src=&quot;../resources/test-utils.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;../resources/rs-utils.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;general.js&quot;&gt;&lt;/script&gt;
-&lt;script&gt;
-'use strict';
-worker_test('general.js');
-&lt;/script&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsgeneralserviceworkerhttpsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.serviceworker.https-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.serviceworker.https-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.serviceworker.https-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+FAIL Service worker test setup undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsgeneralserviceworkerhttpshtmlfromrev212201trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadstrategieshttpshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.serviceworker.https.html (from rev 212201, trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.https.html) (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.serviceworker.https.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.serviceworker.https.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;general.js service worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/service-workers/service-worker/resources/test-helpers.sub.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+service_worker_test('general.js', 'Service worker test setup');
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsgeneralsharedworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.sharedworker-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.sharedworker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.sharedworker-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+CONSOLE MESSAGE: line 10: ReferenceError: Can't find variable: SharedWorker
+
+Harness Error (FAIL), message = ReferenceError: Can't find variable: SharedWorker
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsgeneralsharedworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.sharedworker.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.sharedworker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.sharedworker.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;general.js shared worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+fetch_tests_from_worker(new SharedWorker('general.js'));
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamspipethroughexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/pipe-through-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/pipe-through-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/pipe-through-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -4,11 +4,4 @@
</span><span class="cx"> PASS ReadableStream.prototype.pipeThrough should throw when &quot;this&quot; has no pipeTo method 
</span><span class="cx"> PASS ReadableStream.prototype.pipeThrough should rethrow errors from accessing pipeTo, readable, or writable 
</span><span class="cx"> PASS ReadableStream.prototype.pipeThrough should work with missing readable, writable, or options 
</span><del>-FAIL Load pipe-through.js with SharedWorker assert_unreached: SharedWorker is unavailable Reached unreachable code
-FAIL Untitled undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')
-PASS ReadableStream.prototype.pipeThrough should work generically on its this and its arguments 
-PASS ReadableStream.prototype.pipeThrough should throw when its first argument is not convertible to an object 
-PASS ReadableStream.prototype.pipeThrough should throw when &quot;this&quot; has no pipeTo method 
-PASS ReadableStream.prototype.pipeThrough should rethrow errors from accessing pipeTo, readable, or writable 
-PASS ReadableStream.prototype.pipeThrough should work with missing readable, writable, or options 
</del><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamspipethroughdedicatedworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/pipe-through.dedicatedworker-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/pipe-through.dedicatedworker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/pipe-through.dedicatedworker-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+
+PASS ReadableStream.prototype.pipeThrough should work generically on its this and its arguments 
+PASS ReadableStream.prototype.pipeThrough should throw when its first argument is not convertible to an object 
+PASS ReadableStream.prototype.pipeThrough should throw when &quot;this&quot; has no pipeTo method 
+PASS ReadableStream.prototype.pipeThrough should rethrow errors from accessing pipeTo, readable, or writable 
+PASS ReadableStream.prototype.pipeThrough should work with missing readable, writable, or options 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamspipethroughdedicatedworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/pipe-through.dedicatedworker.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/pipe-through.dedicatedworker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/pipe-through.dedicatedworker.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;pipe-through.js dedicated worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+fetch_tests_from_worker(new Worker('pipe-through.js'));
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamspipethroughhtmlfromrev212201trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamspipethroughhttpshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/pipe-through.html (from rev 212201, trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/pipe-through.https.html) (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/pipe-through.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/pipe-through.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,10 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;pipe-through.js browser context wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script src=&quot;../resources/test-utils.js&quot;&gt;&lt;/script&gt;
+
+&lt;script src=&quot;pipe-through.js&quot;&gt;&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamspipethroughhttpsexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/pipe-through.https-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/pipe-through.https-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/pipe-through.https-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,14 +0,0 @@
</span><del>-
-PASS ReadableStream.prototype.pipeThrough should work generically on its this and its arguments 
-PASS ReadableStream.prototype.pipeThrough should throw when its first argument is not convertible to an object 
-PASS ReadableStream.prototype.pipeThrough should throw when &quot;this&quot; has no pipeTo method 
-PASS ReadableStream.prototype.pipeThrough should rethrow errors from accessing pipeTo, readable, or writable 
-PASS ReadableStream.prototype.pipeThrough should work with missing readable, writable, or options 
-FAIL Load pipe-through.js with SharedWorker assert_unreached: SharedWorker is unavailable Reached unreachable code
-FAIL Untitled undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')
-PASS ReadableStream.prototype.pipeThrough should work generically on its this and its arguments 
-PASS ReadableStream.prototype.pipeThrough should throw when its first argument is not convertible to an object 
-PASS ReadableStream.prototype.pipeThrough should throw when &quot;this&quot; has no pipeTo method 
-PASS ReadableStream.prototype.pipeThrough should rethrow errors from accessing pipeTo, readable, or writable 
-PASS ReadableStream.prototype.pipeThrough should work with missing readable, writable, or options 
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamspipethroughhttpshtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/pipe-through.https.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/pipe-through.https.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/pipe-through.https.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,13 +0,0 @@
</span><del>-&lt;!DOCTYPE html&gt;
-&lt;meta charset=&quot;utf-8&quot;&gt;
-&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;/service-workers/service-worker/resources/test-helpers.sub.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;../resources/test-initializer.js&quot;&gt;&lt;/script&gt;
-
-&lt;script src=&quot;../resources/test-utils.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;pipe-through.js&quot;&gt;&lt;/script&gt;
-&lt;script&gt;
-'use strict';
-worker_test('pipe-through.js');
-&lt;/script&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamspipethroughserviceworkerhttpsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/pipe-through.serviceworker.https-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/pipe-through.serviceworker.https-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/pipe-through.serviceworker.https-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+FAIL Service worker test setup undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamspipethroughserviceworkerhttpshtmlfromrev212201trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadstrategieshttpshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/pipe-through.serviceworker.https.html (from rev 212201, trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.https.html) (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/pipe-through.serviceworker.https.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/pipe-through.serviceworker.https.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;pipe-through.js service worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/service-workers/service-worker/resources/test-helpers.sub.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+service_worker_test('pipe-through.js', 'Service worker test setup');
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamspipethroughsharedworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/pipe-through.sharedworker-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/pipe-through.sharedworker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/pipe-through.sharedworker-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+CONSOLE MESSAGE: line 10: ReferenceError: Can't find variable: SharedWorker
+
+Harness Error (FAIL), message = ReferenceError: Can't find variable: SharedWorker
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamspipethroughsharedworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/pipe-through.sharedworker.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/pipe-through.sharedworker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/pipe-through.sharedworker.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;pipe-through.js shared worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+fetch_tests_from_worker(new SharedWorker('pipe-through.js'));
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsreadablestreamreaderexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,7 +1,7 @@
</span><span class="cx"> 
</span><span class="cx"> PASS Can get the ReadableStreamReader constructor indirectly 
</span><span class="cx"> PASS ReadableStreamReader constructor should get a ReadableStream object as argument 
</span><del>-FAIL ReadableStreamReader instances should have the correct list of properties assert_equals: method should be non-enumerable expected false but got true
</del><ins>+PASS ReadableStreamReader instances should have the correct list of properties 
</ins><span class="cx"> PASS ReadableStreamReader closed should always return the same promise object 
</span><span class="cx"> PASS Constructing a ReadableStreamReader directly should fail if the stream is already locked (via direct construction) 
</span><span class="cx"> PASS Getting a ReadableStreamReader via getReader should fail if the stream is already locked (via direct construction) 
</span><span class="lines">@@ -25,32 +25,4 @@
</span><span class="cx"> PASS Reading twice on a closed stream 
</span><span class="cx"> PASS Reading twice on an errored stream 
</span><span class="cx"> PASS Reading twice on a stream that gets errored 
</span><del>-FAIL Load readable-stream-reader.js with SharedWorker assert_unreached: SharedWorker is unavailable Reached unreachable code
-FAIL Untitled undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')
-PASS Can get the ReadableStreamReader constructor indirectly 
-PASS ReadableStreamReader constructor should get a ReadableStream object as argument 
-FAIL ReadableStreamReader instances should have the correct list of properties assert_equals: method should be non-enumerable expected false but got true
-PASS ReadableStreamReader closed should always return the same promise object 
-PASS Constructing a ReadableStreamReader directly should fail if the stream is already locked (via direct construction) 
-PASS Getting a ReadableStreamReader via getReader should fail if the stream is already locked (via direct construction) 
-PASS Constructing a ReadableStreamReader directly should fail if the stream is already locked (via getReader) 
-PASS Getting a ReadableStreamReader via getReader should fail if the stream is already locked (via getReader) 
-PASS Constructing a ReadableStreamReader directly should be OK if the stream is closed 
-PASS Constructing a ReadableStreamReader directly should be OK if the stream is errored 
-PASS Reading from a reader for an empty stream will wait until a chunk is available 
-PASS cancel() on a reader does not release the reader 
-PASS closed should be fulfilled after stream is closed (.closed access before acquiring) 
-PASS closed should be rejected after reader releases its lock (multiple stream locks) 
-PASS Multiple readers can access the stream in sequence 
-PASS Cannot use an already-released reader to unlock a stream again 
-PASS cancel() on a released reader is a no-op and does not pass through 
-PASS Getting a second reader after erroring the stream and releasing the reader should succeed 
-PASS ReadableStreamReader closed promise should be rejected with undefined if that is the error 
-PASS ReadableStreamReader: if start rejects with no parameter, it should error the stream with an undefined error 
-PASS Erroring a ReadableStream after checking closed should reject ReadableStreamReader closed promise 
-PASS Erroring a ReadableStream before checking closed should reject ReadableStreamReader closed promise 
-PASS Reading twice on a stream that gets closed 
-PASS Reading twice on a closed stream 
-PASS Reading twice on an errored stream 
-PASS Reading twice on a stream that gets errored 
</del><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsreadablestreamreaderdedicatedworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader.dedicatedworker-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader.dedicatedworker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader.dedicatedworker-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,28 @@
</span><ins>+
+PASS Can get the ReadableStreamReader constructor indirectly 
+PASS ReadableStreamReader constructor should get a ReadableStream object as argument 
+PASS ReadableStreamReader instances should have the correct list of properties 
+PASS ReadableStreamReader closed should always return the same promise object 
+PASS Constructing a ReadableStreamReader directly should fail if the stream is already locked (via direct construction) 
+PASS Getting a ReadableStreamReader via getReader should fail if the stream is already locked (via direct construction) 
+PASS Constructing a ReadableStreamReader directly should fail if the stream is already locked (via getReader) 
+PASS Getting a ReadableStreamReader via getReader should fail if the stream is already locked (via getReader) 
+PASS Constructing a ReadableStreamReader directly should be OK if the stream is closed 
+PASS Constructing a ReadableStreamReader directly should be OK if the stream is errored 
+PASS Reading from a reader for an empty stream will wait until a chunk is available 
+PASS cancel() on a reader does not release the reader 
+PASS closed should be fulfilled after stream is closed (.closed access before acquiring) 
+PASS closed should be rejected after reader releases its lock (multiple stream locks) 
+PASS Multiple readers can access the stream in sequence 
+PASS Cannot use an already-released reader to unlock a stream again 
+PASS cancel() on a released reader is a no-op and does not pass through 
+PASS Getting a second reader after erroring the stream and releasing the reader should succeed 
+PASS ReadableStreamReader closed promise should be rejected with undefined if that is the error 
+PASS ReadableStreamReader: if start rejects with no parameter, it should error the stream with an undefined error 
+PASS Erroring a ReadableStream after checking closed should reject ReadableStreamReader closed promise 
+PASS Erroring a ReadableStream before checking closed should reject ReadableStreamReader closed promise 
+PASS Reading twice on a stream that gets closed 
+PASS Reading twice on a closed stream 
+PASS Reading twice on an errored stream 
+PASS Reading twice on a stream that gets errored 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsreadablestreamreaderdedicatedworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader.dedicatedworker.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader.dedicatedworker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader.dedicatedworker.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;readable-stream-reader.js dedicated worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+fetch_tests_from_worker(new Worker('readable-stream-reader.js'));
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsreadablestreamreaderhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,10 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;readable-stream-reader.js browser context wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script src=&quot;../resources/rs-utils.js&quot;&gt;&lt;/script&gt;
+
+&lt;script src=&quot;readable-stream-reader.js&quot;&gt;&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsreadablestreamreaderhttpsexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader.https-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader.https-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader.https-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,56 +0,0 @@
</span><del>-
-PASS Can get the ReadableStreamReader constructor indirectly 
-PASS ReadableStreamReader constructor should get a ReadableStream object as argument 
-PASS ReadableStreamReader instances should have the correct list of properties 
-PASS ReadableStreamReader closed should always return the same promise object 
-PASS Constructing a ReadableStreamReader directly should fail if the stream is already locked (via direct construction) 
-PASS Getting a ReadableStreamReader via getReader should fail if the stream is already locked (via direct construction) 
-PASS Constructing a ReadableStreamReader directly should fail if the stream is already locked (via getReader) 
-PASS Getting a ReadableStreamReader via getReader should fail if the stream is already locked (via getReader) 
-PASS Constructing a ReadableStreamReader directly should be OK if the stream is closed 
-PASS Constructing a ReadableStreamReader directly should be OK if the stream is errored 
-PASS Reading from a reader for an empty stream will wait until a chunk is available 
-PASS cancel() on a reader does not release the reader 
-PASS closed should be fulfilled after stream is closed (.closed access before acquiring) 
-PASS closed should be rejected after reader releases its lock (multiple stream locks) 
-PASS Multiple readers can access the stream in sequence 
-PASS Cannot use an already-released reader to unlock a stream again 
-PASS cancel() on a released reader is a no-op and does not pass through 
-PASS Getting a second reader after erroring the stream and releasing the reader should succeed 
-PASS ReadableStreamReader closed promise should be rejected with undefined if that is the error 
-PASS ReadableStreamReader: if start rejects with no parameter, it should error the stream with an undefined error 
-PASS Erroring a ReadableStream after checking closed should reject ReadableStreamReader closed promise 
-PASS Erroring a ReadableStream before checking closed should reject ReadableStreamReader closed promise 
-PASS Reading twice on a stream that gets closed 
-PASS Reading twice on a closed stream 
-PASS Reading twice on an errored stream 
-PASS Reading twice on a stream that gets errored 
-FAIL Load readable-stream-reader.js with SharedWorker assert_unreached: SharedWorker is unavailable Reached unreachable code
-FAIL Untitled undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')
-PASS Can get the ReadableStreamReader constructor indirectly 
-PASS ReadableStreamReader constructor should get a ReadableStream object as argument 
-PASS ReadableStreamReader instances should have the correct list of properties 
-PASS ReadableStreamReader closed should always return the same promise object 
-PASS Constructing a ReadableStreamReader directly should fail if the stream is already locked (via direct construction) 
-PASS Getting a ReadableStreamReader via getReader should fail if the stream is already locked (via direct construction) 
-PASS Constructing a ReadableStreamReader directly should fail if the stream is already locked (via getReader) 
-PASS Getting a ReadableStreamReader via getReader should fail if the stream is already locked (via getReader) 
-PASS Constructing a ReadableStreamReader directly should be OK if the stream is closed 
-PASS Constructing a ReadableStreamReader directly should be OK if the stream is errored 
-PASS Reading from a reader for an empty stream will wait until a chunk is available 
-PASS cancel() on a reader does not release the reader 
-PASS closed should be fulfilled after stream is closed (.closed access before acquiring) 
-PASS closed should be rejected after reader releases its lock (multiple stream locks) 
-PASS Multiple readers can access the stream in sequence 
-PASS Cannot use an already-released reader to unlock a stream again 
-PASS cancel() on a released reader is a no-op and does not pass through 
-PASS Getting a second reader after erroring the stream and releasing the reader should succeed 
-PASS ReadableStreamReader closed promise should be rejected with undefined if that is the error 
-PASS ReadableStreamReader: if start rejects with no parameter, it should error the stream with an undefined error 
-PASS Erroring a ReadableStream after checking closed should reject ReadableStreamReader closed promise 
-PASS Erroring a ReadableStream before checking closed should reject ReadableStreamReader closed promise 
-PASS Reading twice on a stream that gets closed 
-PASS Reading twice on a closed stream 
-PASS Reading twice on an errored stream 
-PASS Reading twice on a stream that gets errored 
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsreadablestreamreaderhttpshtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader.https.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader.https.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader.https.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,12 +0,0 @@
</span><del>-&lt;!DOCTYPE html&gt;
-&lt;meta charset=&quot;utf-8&quot;&gt;
-&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;/service-workers/service-worker/resources/test-helpers.sub.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;../resources/test-initializer.js&quot;&gt;&lt;/script&gt;
-
-&lt;script src=&quot;readable-stream-reader.js&quot;&gt;&lt;/script&gt;
-&lt;script&gt;
-'use strict';
-worker_test('readable-stream-reader.js');
-&lt;/script&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsreadablestreamreaderserviceworkerhttpsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader.serviceworker.https-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader.serviceworker.https-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader.serviceworker.https-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+FAIL Service worker test setup undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsreadablestreamreaderserviceworkerhttpshtmlfromrev212201trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadunderlyingsourceshttpshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader.serviceworker.https.html (from rev 212201, trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.https.html) (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader.serviceworker.https.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader.serviceworker.https.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;readable-stream-reader.js service worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/service-workers/service-worker/resources/test-helpers.sub.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+service_worker_test('readable-stream-reader.js', 'Service worker test setup');
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsreadablestreamreadersharedworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader.sharedworker-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader.sharedworker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader.sharedworker-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+CONSOLE MESSAGE: line 10: ReferenceError: Can't find variable: SharedWorker
+
+Harness Error (FAIL), message = ReferenceError: Can't find variable: SharedWorker
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsreadablestreamreadersharedworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader.sharedworker.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader.sharedworker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader.sharedworker.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;readable-stream-reader.js shared worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+fetch_tests_from_worker(new SharedWorker('readable-stream-reader.js'));
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsteeexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/tee-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/tee-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/tee-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -9,16 +9,4 @@
</span><span class="cx"> PASS ReadableStream teeing: failing to cancel the original stream should cause cancel() to reject on branches 
</span><span class="cx"> PASS ReadableStream teeing: closing the original should immediately close the branches 
</span><span class="cx"> PASS ReadableStream teeing: erroring the original should immediately error the branches 
</span><del>-FAIL Load tee.js with SharedWorker assert_unreached: SharedWorker is unavailable Reached unreachable code
-FAIL Untitled undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')
-PASS ReadableStream teeing: rs.tee() returns an array of two ReadableStreams 
-PASS ReadableStream teeing: should be able to read one branch to the end without affecting the other 
-PASS ReadableStream teeing: values should be equal across each branch 
-PASS ReadableStream teeing: errors in the source should propagate to both branches 
-PASS ReadableStream teeing: canceling branch1 should not impact branch2 
-PASS ReadableStream teeing: canceling branch2 should not impact branch2 
-PASS ReadableStream teeing: canceling both branches should aggregate the cancel reasons into an array 
-PASS ReadableStream teeing: failing to cancel the original stream should cause cancel() to reject on branches 
-PASS ReadableStream teeing: closing the original should immediately close the branches 
-PASS ReadableStream teeing: erroring the original should immediately error the branches 
</del><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsteededicatedworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/tee.dedicatedworker-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/tee.dedicatedworker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/tee.dedicatedworker-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+
+PASS ReadableStream teeing: rs.tee() returns an array of two ReadableStreams 
+PASS ReadableStream teeing: should be able to read one branch to the end without affecting the other 
+PASS ReadableStream teeing: values should be equal across each branch 
+PASS ReadableStream teeing: errors in the source should propagate to both branches 
+PASS ReadableStream teeing: canceling branch1 should not impact branch2 
+PASS ReadableStream teeing: canceling branch2 should not impact branch2 
+PASS ReadableStream teeing: canceling both branches should aggregate the cancel reasons into an array 
+PASS ReadableStream teeing: failing to cancel the original stream should cause cancel() to reject on branches 
+PASS ReadableStream teeing: closing the original should immediately close the branches 
+PASS ReadableStream teeing: erroring the original should immediately error the branches 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsteededicatedworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/tee.dedicatedworker.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/tee.dedicatedworker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/tee.dedicatedworker.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;tee.js dedicated worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+fetch_tests_from_worker(new Worker('tee.js'));
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsteehtmlfromrev212201trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsteehttpshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/tee.html (from rev 212201, trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/tee.https.html) (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/tee.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/tee.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,10 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;tee.js browser context wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script src=&quot;../resources/rs-utils.js&quot;&gt;&lt;/script&gt;
+
+&lt;script src=&quot;tee.js&quot;&gt;&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsteehttpsexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/tee.https-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/tee.https-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/tee.https-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,24 +0,0 @@
</span><del>-
-PASS ReadableStream teeing: rs.tee() returns an array of two ReadableStreams 
-PASS ReadableStream teeing: should be able to read one branch to the end without affecting the other 
-PASS ReadableStream teeing: values should be equal across each branch 
-PASS ReadableStream teeing: errors in the source should propagate to both branches 
-PASS ReadableStream teeing: canceling branch1 should not impact branch2 
-PASS ReadableStream teeing: canceling branch2 should not impact branch2 
-PASS ReadableStream teeing: canceling both branches should aggregate the cancel reasons into an array 
-PASS ReadableStream teeing: failing to cancel the original stream should cause cancel() to reject on branches 
-PASS ReadableStream teeing: closing the original should immediately close the branches 
-PASS ReadableStream teeing: erroring the original should immediately error the branches 
-FAIL Load tee.js with SharedWorker assert_unreached: SharedWorker is unavailable Reached unreachable code
-FAIL Untitled undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')
-PASS ReadableStream teeing: rs.tee() returns an array of two ReadableStreams 
-PASS ReadableStream teeing: should be able to read one branch to the end without affecting the other 
-PASS ReadableStream teeing: values should be equal across each branch 
-PASS ReadableStream teeing: errors in the source should propagate to both branches 
-PASS ReadableStream teeing: canceling branch1 should not impact branch2 
-PASS ReadableStream teeing: canceling branch2 should not impact branch2 
-PASS ReadableStream teeing: canceling both branches should aggregate the cancel reasons into an array 
-PASS ReadableStream teeing: failing to cancel the original stream should cause cancel() to reject on branches 
-PASS ReadableStream teeing: closing the original should immediately close the branches 
-PASS ReadableStream teeing: erroring the original should immediately error the branches 
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsteehttpshtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/tee.https.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/tee.https.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/tee.https.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,13 +0,0 @@
</span><del>-&lt;!DOCTYPE html&gt;
-&lt;meta charset=&quot;utf-8&quot;&gt;
-&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;/service-workers/service-worker/resources/test-helpers.sub.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;../resources/test-initializer.js&quot;&gt;&lt;/script&gt;
-
-&lt;script src=&quot;../resources/rs-utils.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;tee.js&quot;&gt;&lt;/script&gt;
-&lt;script&gt;
-'use strict';
-worker_test('tee.js');
-&lt;/script&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsteeserviceworkerhttpsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/tee.serviceworker.https-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/tee.serviceworker.https-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/tee.serviceworker.https-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+FAIL Service worker test setup undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsteeserviceworkerhttpshtmlfromrev212201trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsbadstrategieshttpshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/tee.serviceworker.https.html (from rev 212201, trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.https.html) (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/tee.serviceworker.https.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/tee.serviceworker.https.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;tee.js service worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/service-workers/service-worker/resources/test-helpers.sub.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+service_worker_test('tee.js', 'Service worker test setup');
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsteesharedworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/tee.sharedworker-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/tee.sharedworker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/tee.sharedworker-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+CONSOLE MESSAGE: line 10: ReferenceError: Can't find variable: SharedWorker
+
+Harness Error (FAIL), message = ReferenceError: Can't find variable: SharedWorker
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsteesharedworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/tee.sharedworker.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/tee.sharedworker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/tee.sharedworker.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;tee.js shared worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+fetch_tests_from_worker(new SharedWorker('tee.js'));
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamstemplatedexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/templated-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/templated-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/templated-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,174 +1,88 @@
</span><span class="cx"> 
</span><span class="cx"> PASS Running templatedRSEmpty with ReadableStream (empty) 
</span><del>-PASS instances have the correct methods and properties 
</del><ins>+PASS ReadableStream (empty): instances have the correct methods and properties 
+PASS ReadableStream (empty): calling getReader with invalid arguments should throw appropriate errors 
</ins><span class="cx"> PASS Running templatedRSEmptyReader with ReadableStream (empty) reader 
</span><del>-PASS instances have the correct methods and properties 
-PASS locked should be true 
-PASS read() should never settle 
-PASS two read()s should both never settle 
-PASS read() should return distinct promises each time 
-PASS getReader() again on the stream should fail 
-PASS releasing the lock with pending read requests should throw but the read requests should stay pending 
-PASS releasing the lock should cause further read() calls to reject with a TypeError 
-PASS releasing the lock should cause closed calls to reject with a TypeError 
-PASS releasing the lock should cause locked to become false 
-PASS canceling via the reader should cause the reader to act closed 
-PASS canceling via the stream should fail 
</del><ins>+PASS ReadableStream (empty) reader: instances have the correct methods and properties 
+PASS ReadableStream (empty) reader: locked should be true 
+PASS ReadableStream (empty) reader: read() should never settle 
+PASS ReadableStream (empty) reader: two read()s should both never settle 
+PASS ReadableStream (empty) reader: read() should return distinct promises each time 
+PASS ReadableStream (empty) reader: getReader() again on the stream should fail 
+PASS ReadableStream (empty) reader: releasing the lock with pending read requests should throw but the read requests should stay pending 
+PASS ReadableStream (empty) reader: releasing the lock should cause further read() calls to reject with a TypeError 
+PASS ReadableStream (empty) reader: releasing the lock should cause closed calls to reject with a TypeError 
+PASS ReadableStream (empty) reader: releasing the lock should cause locked to become false 
+PASS ReadableStream (empty) reader: canceling via the reader should cause the reader to act closed 
+PASS ReadableStream (empty) reader: canceling via the stream should fail 
</ins><span class="cx"> PASS Running templatedRSClosed with ReadableStream (closed via call in start) 
</span><del>-PASS cancel() should return a distinct fulfilled promise each time 
-PASS locked should be false 
-PASS getReader() should be OK 
-PASS should be able to acquire multiple readers if they are released in succession 
-PASS should not be able to acquire a second reader if we don't release the first one 
</del><ins>+PASS ReadableStream (closed via call in start): cancel() should return a distinct fulfilled promise each time 
+PASS ReadableStream (closed via call in start): locked should be false 
+PASS ReadableStream (closed via call in start): getReader() should be OK 
+PASS ReadableStream (closed via call in start): should be able to acquire multiple readers if they are released in succession 
+PASS ReadableStream (closed via call in start): should not be able to acquire a second reader if we don't release the first one 
</ins><span class="cx"> PASS Running templatedRSClosedReader with ReadableStream reader (closed before getting reader) 
</span><del>-PASS read() should fulfill with { value: undefined, done: true } 
-PASS read() multiple times should fulfill with { value: undefined, done: true } 
-PASS read() should work when used within another read() fulfill callback 
-PASS closed should fulfill with undefined 
-PASS releasing the lock should cause closed to reject and change identity 
-PASS cancel() should return a distinct fulfilled promise each time 
</del><ins>+PASS ReadableStream reader (closed before getting reader): read() should fulfill with { value: undefined, done: true } 
+PASS ReadableStream reader (closed before getting reader): read() multiple times should fulfill with { value: undefined, done: true } 
+PASS ReadableStream reader (closed before getting reader): read() should work when used within another read() fulfill callback 
+PASS ReadableStream reader (closed before getting reader): closed should fulfill with undefined 
+PASS ReadableStream reader (closed before getting reader): releasing the lock should cause closed to reject and change identity 
+PASS ReadableStream reader (closed before getting reader): cancel() should return a distinct fulfilled promise each time 
</ins><span class="cx"> PASS Running templatedRSClosedReader with ReadableStream reader (closed after getting reader) 
</span><del>-PASS read() should fulfill with { value: undefined, done: true } 
-PASS read() multiple times should fulfill with { value: undefined, done: true } 
-PASS read() should work when used within another read() fulfill callback 
-PASS closed should fulfill with undefined 
-PASS releasing the lock should cause closed to reject and change identity 
-PASS cancel() should return a distinct fulfilled promise each time 
</del><ins>+PASS ReadableStream reader (closed after getting reader): read() should fulfill with { value: undefined, done: true } 
+PASS ReadableStream reader (closed after getting reader): read() multiple times should fulfill with { value: undefined, done: true } 
+PASS ReadableStream reader (closed after getting reader): read() should work when used within another read() fulfill callback 
+PASS ReadableStream reader (closed after getting reader): closed should fulfill with undefined 
+PASS ReadableStream reader (closed after getting reader): releasing the lock should cause closed to reject and change identity 
+PASS ReadableStream reader (closed after getting reader): cancel() should return a distinct fulfilled promise each time 
</ins><span class="cx"> PASS Running templatedRSClosed with ReadableStream (closed via cancel) 
</span><del>-PASS cancel() should return a distinct fulfilled promise each time 
-PASS locked should be false 
-PASS getReader() should be OK 
-PASS should be able to acquire multiple readers if they are released in succession 
-PASS should not be able to acquire a second reader if we don't release the first one 
</del><ins>+PASS ReadableStream (closed via cancel): cancel() should return a distinct fulfilled promise each time 
+PASS ReadableStream (closed via cancel): locked should be false 
+PASS ReadableStream (closed via cancel): getReader() should be OK 
+PASS ReadableStream (closed via cancel): should be able to acquire multiple readers if they are released in succession 
+PASS ReadableStream (closed via cancel): should not be able to acquire a second reader if we don't release the first one 
</ins><span class="cx"> PASS Running templatedRSClosedReader with ReadableStream reader (closed via cancel after getting reader) 
</span><del>-PASS read() should fulfill with { value: undefined, done: true } 
-PASS read() multiple times should fulfill with { value: undefined, done: true } 
-PASS read() should work when used within another read() fulfill callback 
-PASS closed should fulfill with undefined 
-PASS releasing the lock should cause closed to reject and change identity 
-PASS cancel() should return a distinct fulfilled promise each time 
</del><ins>+PASS ReadableStream reader (closed via cancel after getting reader): read() should fulfill with { value: undefined, done: true } 
+PASS ReadableStream reader (closed via cancel after getting reader): read() multiple times should fulfill with { value: undefined, done: true } 
+PASS ReadableStream reader (closed via cancel after getting reader): read() should work when used within another read() fulfill callback 
+PASS ReadableStream reader (closed via cancel after getting reader): closed should fulfill with undefined 
+PASS ReadableStream reader (closed via cancel after getting reader): releasing the lock should cause closed to reject and change identity 
+PASS ReadableStream reader (closed via cancel after getting reader): cancel() should return a distinct fulfilled promise each time 
</ins><span class="cx"> PASS Running templatedRSErrored with ReadableStream (errored via call in start) 
</span><del>-PASS getReader() should return a reader that acts errored 
-PASS read() twice should give the error each time 
-PASS locked should be false 
</del><ins>+PASS ReadableStream (errored via call in start): getReader() should return a reader that acts errored 
+PASS ReadableStream (errored via call in start): read() twice should give the error each time 
+PASS ReadableStream (errored via call in start): locked should be false 
</ins><span class="cx"> PASS Running templatedRSErroredSyncOnly with ReadableStream (errored via call in start) 
</span><del>-PASS should be able to obtain a second reader, with the correct closed promise 
-PASS should not be able to obtain additional readers if we don't release the first lock 
-PASS cancel() should return a distinct rejected promise each time 
-PASS reader cancel() should return a distinct rejected promise each time 
</del><ins>+PASS ReadableStream (errored via call in start): should be able to obtain a second reader, with the correct closed promise 
+PASS ReadableStream (errored via call in start): should not be able to obtain additional readers if we don't release the first lock 
+PASS ReadableStream (errored via call in start): cancel() should return a distinct rejected promise each time 
+PASS ReadableStream (errored via call in start): reader cancel() should return a distinct rejected promise each time 
</ins><span class="cx"> PASS Running templatedRSErrored with ReadableStream (errored via returning a rejected promise in start) 
</span><del>-PASS getReader() should return a reader that acts errored 
-PASS read() twice should give the error each time 
-PASS locked should be false 
</del><ins>+PASS ReadableStream (errored via returning a rejected promise in start): getReader() should return a reader that acts errored 
+PASS ReadableStream (errored via returning a rejected promise in start): read() twice should give the error each time 
+PASS ReadableStream (errored via returning a rejected promise in start): locked should be false 
</ins><span class="cx"> PASS Running templatedRSErroredReader with ReadableStream (errored via returning a rejected promise in start) reader 
</span><del>-PASS closed should reject with the error 
-PASS releasing the lock should cause closed to reject and change identity 
-PASS read() should reject with the error 
</del><ins>+PASS ReadableStream (errored via returning a rejected promise in start) reader: closed should reject with the error 
+PASS ReadableStream (errored via returning a rejected promise in start) reader: releasing the lock should cause closed to reject and change identity 
+PASS ReadableStream (errored via returning a rejected promise in start) reader: read() should reject with the error 
</ins><span class="cx"> PASS Running templatedRSErroredReader with ReadableStream reader (errored before getting reader) 
</span><del>-PASS closed should reject with the error 
-PASS releasing the lock should cause closed to reject and change identity 
-PASS read() should reject with the error 
</del><ins>+PASS ReadableStream reader (errored before getting reader): closed should reject with the error 
+PASS ReadableStream reader (errored before getting reader): releasing the lock should cause closed to reject and change identity 
+PASS ReadableStream reader (errored before getting reader): read() should reject with the error 
</ins><span class="cx"> PASS Running templatedRSErroredReader with ReadableStream reader (errored after getting reader) 
</span><del>-PASS closed should reject with the error 
-PASS releasing the lock should cause closed to reject and change identity 
-PASS read() should reject with the error 
</del><ins>+PASS ReadableStream reader (errored after getting reader): closed should reject with the error 
+PASS ReadableStream reader (errored after getting reader): releasing the lock should cause closed to reject and change identity 
+PASS ReadableStream reader (errored after getting reader): read() should reject with the error 
</ins><span class="cx"> PASS Running templatedRSTwoChunksOpenReader with ReadableStream (two chunks enqueued, still open) reader 
</span><del>-PASS calling read() twice without waiting will eventually give both chunks (sequential) 
-PASS calling read() twice without waiting will eventually give both chunks (nested) 
-PASS read() should return distinct promises each time 
-PASS cancel() after a read() should still give that single read result 
</del><ins>+PASS ReadableStream (two chunks enqueued, still open) reader: calling read() twice without waiting will eventually give both chunks (sequential) 
+PASS ReadableStream (two chunks enqueued, still open) reader: calling read() twice without waiting will eventually give both chunks (nested) 
+PASS ReadableStream (two chunks enqueued, still open) reader: read() should return distinct promises each time 
+PASS ReadableStream (two chunks enqueued, still open) reader: cancel() after a read() should still give that single read result 
</ins><span class="cx"> PASS Running templatedRSTwoChunksClosedReader with ReadableStream (two chunks enqueued, then closed) reader 
</span><del>-PASS third read(), without waiting, should give { value: undefined, done: true } (sequential) 
-PASS third read(), without waiting, should give { value: undefined, done: true } (nested) 
-PASS draining the stream via read() should cause the reader closed promise to fulfill, but locked stays true 
-PASS releasing the lock after the stream is closed should cause locked to become false 
-PASS releasing the lock should cause further read() calls to reject with a TypeError 
-PASS reader's closed property always returns the same promise 
-FAIL Load templated.js with SharedWorker assert_unreached: SharedWorker is unavailable Reached unreachable code
-FAIL Untitled undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')
-PASS Running templatedRSEmpty with ReadableStream (empty) 
-PASS instances have the correct methods and properties 
-PASS Running templatedRSEmptyReader with ReadableStream (empty) reader 
-PASS instances have the correct methods and properties 
-PASS locked should be true 
-PASS read() should never settle 
-PASS two read()s should both never settle 
-PASS read() should return distinct promises each time 
-PASS getReader() again on the stream should fail 
-PASS releasing the lock with pending read requests should throw but the read requests should stay pending 
-PASS releasing the lock should cause further read() calls to reject with a TypeError 
-PASS releasing the lock should cause closed calls to reject with a TypeError 
-PASS releasing the lock should cause locked to become false 
-PASS canceling via the reader should cause the reader to act closed 
-PASS canceling via the stream should fail 
-PASS Running templatedRSClosed with ReadableStream (closed via call in start) 
-PASS cancel() should return a distinct fulfilled promise each time 
-PASS locked should be false 
-PASS getReader() should be OK 
-PASS should be able to acquire multiple readers if they are released in succession 
-PASS should not be able to acquire a second reader if we don't release the first one 
-PASS Running templatedRSClosedReader with ReadableStream reader (closed before getting reader) 
-PASS read() should fulfill with { value: undefined, done: true } 
-PASS read() multiple times should fulfill with { value: undefined, done: true } 
-PASS read() should work when used within another read() fulfill callback 
-PASS closed should fulfill with undefined 
-PASS releasing the lock should cause closed to reject and change identity 
-PASS cancel() should return a distinct fulfilled promise each time 
-PASS Running templatedRSClosedReader with ReadableStream reader (closed after getting reader) 
-PASS read() should fulfill with { value: undefined, done: true } 
-PASS read() multiple times should fulfill with { value: undefined, done: true } 
-PASS read() should work when used within another read() fulfill callback 
-PASS closed should fulfill with undefined 
-PASS releasing the lock should cause closed to reject and change identity 
-PASS cancel() should return a distinct fulfilled promise each time 
-PASS Running templatedRSClosed with ReadableStream (closed via cancel) 
-PASS cancel() should return a distinct fulfilled promise each time 
-PASS locked should be false 
-PASS getReader() should be OK 
-PASS should be able to acquire multiple readers if they are released in succession 
-PASS should not be able to acquire a second reader if we don't release the first one 
-PASS Running templatedRSClosedReader with ReadableStream reader (closed via cancel after getting reader) 
-PASS read() should fulfill with { value: undefined, done: true } 
-PASS read() multiple times should fulfill with { value: undefined, done: true } 
-PASS read() should work when used within another read() fulfill callback 
-PASS closed should fulfill with undefined 
-PASS releasing the lock should cause closed to reject and change identity 
-PASS cancel() should return a distinct fulfilled promise each time 
-PASS Running templatedRSErrored with ReadableStream (errored via call in start) 
-PASS getReader() should return a reader that acts errored 
-PASS read() twice should give the error each time 
-PASS locked should be false 
-PASS Running templatedRSErroredSyncOnly with ReadableStream (errored via call in start) 
-PASS should be able to obtain a second reader, with the correct closed promise 
-PASS should not be able to obtain additional readers if we don't release the first lock 
-PASS cancel() should return a distinct rejected promise each time 
-PASS reader cancel() should return a distinct rejected promise each time 
-PASS Running templatedRSErrored with ReadableStream (errored via returning a rejected promise in start) 
-PASS getReader() should return a reader that acts errored 
-PASS read() twice should give the error each time 
-PASS locked should be false 
-PASS Running templatedRSErroredReader with ReadableStream (errored via returning a rejected promise in start) reader 
-PASS closed should reject with the error 
-PASS releasing the lock should cause closed to reject and change identity 
-PASS read() should reject with the error 
-PASS Running templatedRSErroredReader with ReadableStream reader (errored before getting reader) 
-PASS closed should reject with the error 
-PASS releasing the lock should cause closed to reject and change identity 
-PASS read() should reject with the error 
-PASS Running templatedRSErroredReader with ReadableStream reader (errored after getting reader) 
-PASS closed should reject with the error 
-PASS releasing the lock should cause closed to reject and change identity 
-PASS read() should reject with the error 
-PASS Running templatedRSTwoChunksOpenReader with ReadableStream (two chunks enqueued, still open) reader 
-PASS calling read() twice without waiting will eventually give both chunks (sequential) 
-PASS calling read() twice without waiting will eventually give both chunks (nested) 
-PASS read() should return distinct promises each time 
-PASS cancel() after a read() should still give that single read result 
-PASS Running templatedRSTwoChunksClosedReader with ReadableStream (two chunks enqueued, then closed) reader 
-PASS third read(), without waiting, should give { value: undefined, done: true } (sequential) 
-PASS third read(), without waiting, should give { value: undefined, done: true } (nested) 
-PASS draining the stream via read() should cause the reader closed promise to fulfill, but locked stays true 
-PASS releasing the lock after the stream is closed should cause locked to become false 
-PASS releasing the lock should cause further read() calls to reject with a TypeError 
-PASS reader's closed property always returns the same promise 
</del><ins>+PASS ReadableStream (two chunks enqueued, then closed) reader: third read(), without waiting, should give { value: undefined, done: true } (sequential) 
+PASS ReadableStream (two chunks enqueued, then closed) reader: third read(), without waiting, should give { value: undefined, done: true } (nested) 
+PASS ReadableStream (two chunks enqueued, then closed) reader: draining the stream via read() should cause the reader closed promise to fulfill, but locked stays true 
+PASS ReadableStream (two chunks enqueued, then closed) reader: releasing the lock after the stream is closed should cause locked to become false 
+PASS ReadableStream (two chunks enqueued, then closed) reader: releasing the lock should cause further read() calls to reject with a TypeError 
+PASS ReadableStream (two chunks enqueued, then closed) reader: reader's closed property always returns the same promise 
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamstemplateddedicatedworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/templated.dedicatedworker-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/templated.dedicatedworker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/templated.dedicatedworker-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,88 @@
</span><ins>+
+PASS Running templatedRSEmpty with ReadableStream (empty) 
+PASS ReadableStream (empty): instances have the correct methods and properties 
+PASS ReadableStream (empty): calling getReader with invalid arguments should throw appropriate errors 
+PASS Running templatedRSEmptyReader with ReadableStream (empty) reader 
+PASS ReadableStream (empty) reader: instances have the correct methods and properties 
+PASS ReadableStream (empty) reader: locked should be true 
+PASS ReadableStream (empty) reader: read() should never settle 
+PASS ReadableStream (empty) reader: two read()s should both never settle 
+PASS ReadableStream (empty) reader: read() should return distinct promises each time 
+PASS ReadableStream (empty) reader: getReader() again on the stream should fail 
+PASS ReadableStream (empty) reader: releasing the lock with pending read requests should throw but the read requests should stay pending 
+PASS ReadableStream (empty) reader: releasing the lock should cause further read() calls to reject with a TypeError 
+PASS ReadableStream (empty) reader: releasing the lock should cause closed calls to reject with a TypeError 
+PASS ReadableStream (empty) reader: releasing the lock should cause locked to become false 
+PASS ReadableStream (empty) reader: canceling via the reader should cause the reader to act closed 
+PASS ReadableStream (empty) reader: canceling via the stream should fail 
+PASS Running templatedRSClosed with ReadableStream (closed via call in start) 
+PASS ReadableStream (closed via call in start): cancel() should return a distinct fulfilled promise each time 
+PASS ReadableStream (closed via call in start): locked should be false 
+PASS ReadableStream (closed via call in start): getReader() should be OK 
+PASS ReadableStream (closed via call in start): should be able to acquire multiple readers if they are released in succession 
+PASS ReadableStream (closed via call in start): should not be able to acquire a second reader if we don't release the first one 
+PASS Running templatedRSClosedReader with ReadableStream reader (closed before getting reader) 
+PASS ReadableStream reader (closed before getting reader): read() should fulfill with { value: undefined, done: true } 
+PASS ReadableStream reader (closed before getting reader): read() multiple times should fulfill with { value: undefined, done: true } 
+PASS ReadableStream reader (closed before getting reader): read() should work when used within another read() fulfill callback 
+PASS ReadableStream reader (closed before getting reader): closed should fulfill with undefined 
+PASS ReadableStream reader (closed before getting reader): releasing the lock should cause closed to reject and change identity 
+PASS ReadableStream reader (closed before getting reader): cancel() should return a distinct fulfilled promise each time 
+PASS Running templatedRSClosedReader with ReadableStream reader (closed after getting reader) 
+PASS ReadableStream reader (closed after getting reader): read() should fulfill with { value: undefined, done: true } 
+PASS ReadableStream reader (closed after getting reader): read() multiple times should fulfill with { value: undefined, done: true } 
+PASS ReadableStream reader (closed after getting reader): read() should work when used within another read() fulfill callback 
+PASS ReadableStream reader (closed after getting reader): closed should fulfill with undefined 
+PASS ReadableStream reader (closed after getting reader): releasing the lock should cause closed to reject and change identity 
+PASS ReadableStream reader (closed after getting reader): cancel() should return a distinct fulfilled promise each time 
+PASS Running templatedRSClosed with ReadableStream (closed via cancel) 
+PASS ReadableStream (closed via cancel): cancel() should return a distinct fulfilled promise each time 
+PASS ReadableStream (closed via cancel): locked should be false 
+PASS ReadableStream (closed via cancel): getReader() should be OK 
+PASS ReadableStream (closed via cancel): should be able to acquire multiple readers if they are released in succession 
+PASS ReadableStream (closed via cancel): should not be able to acquire a second reader if we don't release the first one 
+PASS Running templatedRSClosedReader with ReadableStream reader (closed via cancel after getting reader) 
+PASS ReadableStream reader (closed via cancel after getting reader): read() should fulfill with { value: undefined, done: true } 
+PASS ReadableStream reader (closed via cancel after getting reader): read() multiple times should fulfill with { value: undefined, done: true } 
+PASS ReadableStream reader (closed via cancel after getting reader): read() should work when used within another read() fulfill callback 
+PASS ReadableStream reader (closed via cancel after getting reader): closed should fulfill with undefined 
+PASS ReadableStream reader (closed via cancel after getting reader): releasing the lock should cause closed to reject and change identity 
+PASS ReadableStream reader (closed via cancel after getting reader): cancel() should return a distinct fulfilled promise each time 
+PASS Running templatedRSErrored with ReadableStream (errored via call in start) 
+PASS ReadableStream (errored via call in start): getReader() should return a reader that acts errored 
+PASS ReadableStream (errored via call in start): read() twice should give the error each time 
+PASS ReadableStream (errored via call in start): locked should be false 
+PASS Running templatedRSErroredSyncOnly with ReadableStream (errored via call in start) 
+PASS ReadableStream (errored via call in start): should be able to obtain a second reader, with the correct closed promise 
+PASS ReadableStream (errored via call in start): should not be able to obtain additional readers if we don't release the first lock 
+PASS ReadableStream (errored via call in start): cancel() should return a distinct rejected promise each time 
+PASS ReadableStream (errored via call in start): reader cancel() should return a distinct rejected promise each time 
+PASS Running templatedRSErrored with ReadableStream (errored via returning a rejected promise in start) 
+PASS ReadableStream (errored via returning a rejected promise in start): getReader() should return a reader that acts errored 
+PASS ReadableStream (errored via returning a rejected promise in start): read() twice should give the error each time 
+PASS ReadableStream (errored via returning a rejected promise in start): locked should be false 
+PASS Running templatedRSErroredReader with ReadableStream (errored via returning a rejected promise in start) reader 
+PASS ReadableStream (errored via returning a rejected promise in start) reader: closed should reject with the error 
+PASS ReadableStream (errored via returning a rejected promise in start) reader: releasing the lock should cause closed to reject and change identity 
+PASS ReadableStream (errored via returning a rejected promise in start) reader: read() should reject with the error 
+PASS Running templatedRSErroredReader with ReadableStream reader (errored before getting reader) 
+PASS ReadableStream reader (errored before getting reader): closed should reject with the error 
+PASS ReadableStream reader (errored before getting reader): releasing the lock should cause closed to reject and change identity 
+PASS ReadableStream reader (errored before getting reader): read() should reject with the error 
+PASS Running templatedRSErroredReader with ReadableStream reader (errored after getting reader) 
+PASS ReadableStream reader (errored after getting reader): closed should reject with the error 
+PASS ReadableStream reader (errored after getting reader): releasing the lock should cause closed to reject and change identity 
+PASS ReadableStream reader (errored after getting reader): read() should reject with the error 
+PASS Running templatedRSTwoChunksOpenReader with ReadableStream (two chunks enqueued, still open) reader 
+PASS ReadableStream (two chunks enqueued, still open) reader: calling read() twice without waiting will eventually give both chunks (sequential) 
+PASS ReadableStream (two chunks enqueued, still open) reader: calling read() twice without waiting will eventually give both chunks (nested) 
+PASS ReadableStream (two chunks enqueued, still open) reader: read() should return distinct promises each time 
+PASS ReadableStream (two chunks enqueued, still open) reader: cancel() after a read() should still give that single read result 
+PASS Running templatedRSTwoChunksClosedReader with ReadableStream (two chunks enqueued, then closed) reader 
+PASS ReadableStream (two chunks enqueued, then closed) reader: third read(), without waiting, should give { value: undefined, done: true } (sequential) 
+PASS ReadableStream (two chunks enqueued, then closed) reader: third read(), without waiting, should give { value: undefined, done: true } (nested) 
+PASS ReadableStream (two chunks enqueued, then closed) reader: draining the stream via read() should cause the reader closed promise to fulfill, but locked stays true 
+PASS ReadableStream (two chunks enqueued, then closed) reader: releasing the lock after the stream is closed should cause locked to become false 
+PASS ReadableStream (two chunks enqueued, then closed) reader: releasing the lock should cause further read() calls to reject with a TypeError 
+PASS ReadableStream (two chunks enqueued, then closed) reader: reader's closed property always returns the same promise 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamstemplateddedicatedworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/templated.dedicatedworker.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/templated.dedicatedworker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/templated.dedicatedworker.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;templated.js dedicated worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+fetch_tests_from_worker(new Worker('templated.js'));
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamstemplatedhtmlfromrev212201trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamstemplatedhttpshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/templated.html (from rev 212201, trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/templated.https.html) (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/templated.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/templated.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;templated.js browser context wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script src=&quot;../resources/test-utils.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../resources/rs-test-templates.js&quot;&gt;&lt;/script&gt;
+
+&lt;script src=&quot;templated.js&quot;&gt;&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamstemplatedhttpsexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/templated.https-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/templated.https-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/templated.https-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,176 +0,0 @@
</span><del>-
-PASS Running templatedRSEmpty with ReadableStream (empty) 
-PASS instances have the correct methods and properties 
-PASS calling getReader with invalid arguments should throw appropriate errors 
-PASS Running templatedRSEmptyReader with ReadableStream (empty) reader 
-PASS instances have the correct methods and properties 
-PASS locked should be true 
-PASS read() should never settle 
-PASS two read()s should both never settle 
-PASS read() should return distinct promises each time 
-PASS getReader() again on the stream should fail 
-PASS releasing the lock with pending read requests should throw but the read requests should stay pending 
-PASS releasing the lock should cause further read() calls to reject with a TypeError 
-PASS releasing the lock should cause closed calls to reject with a TypeError 
-PASS releasing the lock should cause locked to become false 
-PASS canceling via the reader should cause the reader to act closed 
-PASS canceling via the stream should fail 
-PASS Running templatedRSClosed with ReadableStream (closed via call in start) 
-PASS cancel() should return a distinct fulfilled promise each time 
-PASS locked should be false 
-PASS getReader() should be OK 
-PASS should be able to acquire multiple readers if they are released in succession 
-PASS should not be able to acquire a second reader if we don't release the first one 
-PASS Running templatedRSClosedReader with ReadableStream reader (closed before getting reader) 
-PASS read() should fulfill with { value: undefined, done: true } 
-PASS read() multiple times should fulfill with { value: undefined, done: true } 
-PASS read() should work when used within another read() fulfill callback 
-PASS closed should fulfill with undefined 
-PASS releasing the lock should cause closed to reject and change identity 
-PASS cancel() should return a distinct fulfilled promise each time 
-PASS Running templatedRSClosedReader with ReadableStream reader (closed after getting reader) 
-PASS read() should fulfill with { value: undefined, done: true } 
-PASS read() multiple times should fulfill with { value: undefined, done: true } 
-PASS read() should work when used within another read() fulfill callback 
-PASS closed should fulfill with undefined 
-PASS releasing the lock should cause closed to reject and change identity 
-PASS cancel() should return a distinct fulfilled promise each time 
-PASS Running templatedRSClosed with ReadableStream (closed via cancel) 
-PASS cancel() should return a distinct fulfilled promise each time 
-PASS locked should be false 
-PASS getReader() should be OK 
-PASS should be able to acquire multiple readers if they are released in succession 
-PASS should not be able to acquire a second reader if we don't release the first one 
-PASS Running templatedRSClosedReader with ReadableStream reader (closed via cancel after getting reader) 
-PASS read() should fulfill with { value: undefined, done: true } 
-PASS read() multiple times should fulfill with { value: undefined, done: true } 
-PASS read() should work when used within another read() fulfill callback 
-PASS closed should fulfill with undefined 
-PASS releasing the lock should cause closed to reject and change identity 
-PASS cancel() should return a distinct fulfilled promise each time 
-PASS Running templatedRSErrored with ReadableStream (errored via call in start) 
-PASS getReader() should return a reader that acts errored 
-PASS read() twice should give the error each time 
-PASS locked should be false 
-PASS Running templatedRSErroredSyncOnly with ReadableStream (errored via call in start) 
-PASS should be able to obtain a second reader, with the correct closed promise 
-PASS should not be able to obtain additional readers if we don't release the first lock 
-PASS cancel() should return a distinct rejected promise each time 
-PASS reader cancel() should return a distinct rejected promise each time 
-PASS Running templatedRSErrored with ReadableStream (errored via returning a rejected promise in start) 
-PASS getReader() should return a reader that acts errored 
-PASS read() twice should give the error each time 
-PASS locked should be false 
-PASS Running templatedRSErroredReader with ReadableStream (errored via returning a rejected promise in start) reader 
-PASS closed should reject with the error 
-PASS releasing the lock should cause closed to reject and change identity 
-PASS read() should reject with the error 
-PASS Running templatedRSErroredReader with ReadableStream reader (errored before getting reader) 
-PASS closed should reject with the error 
-PASS releasing the lock should cause closed to reject and change identity 
-PASS read() should reject with the error 
-PASS Running templatedRSErroredReader with ReadableStream reader (errored after getting reader) 
-PASS closed should reject with the error 
-PASS releasing the lock should cause closed to reject and change identity 
-PASS read() should reject with the error 
-PASS Running templatedRSTwoChunksOpenReader with ReadableStream (two chunks enqueued, still open) reader 
-PASS calling read() twice without waiting will eventually give both chunks (sequential) 
-PASS calling read() twice without waiting will eventually give both chunks (nested) 
-PASS read() should return distinct promises each time 
-PASS cancel() after a read() should still give that single read result 
-PASS Running templatedRSTwoChunksClosedReader with ReadableStream (two chunks enqueued, then closed) reader 
-PASS third read(), without waiting, should give { value: undefined, done: true } (sequential) 
-PASS third read(), without waiting, should give { value: undefined, done: true } (nested) 
-PASS draining the stream via read() should cause the reader closed promise to fulfill, but locked stays true 
-PASS releasing the lock after the stream is closed should cause locked to become false 
-PASS releasing the lock should cause further read() calls to reject with a TypeError 
-PASS reader's closed property always returns the same promise 
-FAIL Load templated.js with SharedWorker assert_unreached: SharedWorker is unavailable Reached unreachable code
-FAIL Untitled undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')
-PASS Running templatedRSEmpty with ReadableStream (empty) 
-PASS instances have the correct methods and properties 
-PASS calling getReader with invalid arguments should throw appropriate errors 
-PASS Running templatedRSEmptyReader with ReadableStream (empty) reader 
-PASS instances have the correct methods and properties 
-PASS locked should be true 
-PASS read() should never settle 
-PASS two read()s should both never settle 
-PASS read() should return distinct promises each time 
-PASS getReader() again on the stream should fail 
-PASS releasing the lock with pending read requests should throw but the read requests should stay pending 
-PASS releasing the lock should cause further read() calls to reject with a TypeError 
-PASS releasing the lock should cause closed calls to reject with a TypeError 
-PASS releasing the lock should cause locked to become false 
-PASS canceling via the reader should cause the reader to act closed 
-PASS canceling via the stream should fail 
-PASS Running templatedRSClosed with ReadableStream (closed via call in start) 
-PASS cancel() should return a distinct fulfilled promise each time 
-PASS locked should be false 
-PASS getReader() should be OK 
-PASS should be able to acquire multiple readers if they are released in succession 
-PASS should not be able to acquire a second reader if we don't release the first one 
-PASS Running templatedRSClosedReader with ReadableStream reader (closed before getting reader) 
-PASS read() should fulfill with { value: undefined, done: true } 
-PASS read() multiple times should fulfill with { value: undefined, done: true } 
-PASS read() should work when used within another read() fulfill callback 
-PASS closed should fulfill with undefined 
-PASS releasing the lock should cause closed to reject and change identity 
-PASS cancel() should return a distinct fulfilled promise each time 
-PASS Running templatedRSClosedReader with ReadableStream reader (closed after getting reader) 
-PASS read() should fulfill with { value: undefined, done: true } 
-PASS read() multiple times should fulfill with { value: undefined, done: true } 
-PASS read() should work when used within another read() fulfill callback 
-PASS closed should fulfill with undefined 
-PASS releasing the lock should cause closed to reject and change identity 
-PASS cancel() should return a distinct fulfilled promise each time 
-PASS Running templatedRSClosed with ReadableStream (closed via cancel) 
-PASS cancel() should return a distinct fulfilled promise each time 
-PASS locked should be false 
-PASS getReader() should be OK 
-PASS should be able to acquire multiple readers if they are released in succession 
-PASS should not be able to acquire a second reader if we don't release the first one 
-PASS Running templatedRSClosedReader with ReadableStream reader (closed via cancel after getting reader) 
-PASS read() should fulfill with { value: undefined, done: true } 
-PASS read() multiple times should fulfill with { value: undefined, done: true } 
-PASS read() should work when used within another read() fulfill callback 
-PASS closed should fulfill with undefined 
-PASS releasing the lock should cause closed to reject and change identity 
-PASS cancel() should return a distinct fulfilled promise each time 
-PASS Running templatedRSErrored with ReadableStream (errored via call in start) 
-PASS getReader() should return a reader that acts errored 
-PASS read() twice should give the error each time 
-PASS locked should be false 
-PASS Running templatedRSErroredSyncOnly with ReadableStream (errored via call in start) 
-PASS should be able to obtain a second reader, with the correct closed promise 
-PASS should not be able to obtain additional readers if we don't release the first lock 
-PASS cancel() should return a distinct rejected promise each time 
-PASS reader cancel() should return a distinct rejected promise each time 
-PASS Running templatedRSErrored with ReadableStream (errored via returning a rejected promise in start) 
-PASS getReader() should return a reader that acts errored 
-PASS read() twice should give the error each time 
-PASS locked should be false 
-PASS Running templatedRSErroredReader with ReadableStream (errored via returning a rejected promise in start) reader 
-PASS closed should reject with the error 
-PASS releasing the lock should cause closed to reject and change identity 
-PASS read() should reject with the error 
-PASS Running templatedRSErroredReader with ReadableStream reader (errored before getting reader) 
-PASS closed should reject with the error 
-PASS releasing the lock should cause closed to reject and change identity 
-PASS read() should reject with the error 
-PASS Running templatedRSErroredReader with ReadableStream reader (errored after getting reader) 
-PASS closed should reject with the error 
-PASS releasing the lock should cause closed to reject and change identity 
-PASS read() should reject with the error 
-PASS Running templatedRSTwoChunksOpenReader with ReadableStream (two chunks enqueued, still open) reader 
-PASS calling read() twice without waiting will eventually give both chunks (sequential) 
-PASS calling read() twice without waiting will eventually give both chunks (nested) 
-PASS read() should return distinct promises each time 
-PASS cancel() after a read() should still give that single read result 
-PASS Running templatedRSTwoChunksClosedReader with ReadableStream (two chunks enqueued, then closed) reader 
-PASS third read(), without waiting, should give { value: undefined, done: true } (sequential) 
-PASS third read(), without waiting, should give { value: undefined, done: true } (nested) 
-PASS draining the stream via read() should cause the reader closed promise to fulfill, but locked stays true 
-PASS releasing the lock after the stream is closed should cause locked to become false 
-PASS releasing the lock should cause further read() calls to reject with a TypeError 
-PASS reader's closed property always returns the same promise 
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamstemplatedhttpshtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/templated.https.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/templated.https.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/templated.https.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,14 +0,0 @@
</span><del>-&lt;!DOCTYPE html&gt;
-&lt;meta charset=&quot;utf-8&quot;&gt;
-&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;/service-workers/service-worker/resources/test-helpers.sub.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;../resources/test-initializer.js&quot;&gt;&lt;/script&gt;
-
-&lt;script src=&quot;../resources/test-utils.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;../resources/rs-test-templates.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;templated.js&quot;&gt;&lt;/script&gt;
-&lt;script&gt;
-'use strict';
-worker_test('templated.js');
-&lt;/script&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamstemplatedserviceworkerhttpsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/templated.serviceworker.https-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/templated.serviceworker.https-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/templated.serviceworker.https-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+FAIL Service worker test setup undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamstemplatedserviceworkerhttpshtmlfromrev212201trunkLayoutTestsimportedw3cwebplatformtestsstreamscountqueuingstrategyhttpshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/templated.serviceworker.https.html (from rev 212201, trunk/LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.https.html) (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/templated.serviceworker.https.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/templated.serviceworker.https.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;templated.js service worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/service-workers/service-worker/resources/test-helpers.sub.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+service_worker_test('templated.js', 'Service worker test setup');
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamstemplatedsharedworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/templated.sharedworker-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/templated.sharedworker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/templated.sharedworker-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+CONSOLE MESSAGE: line 10: ReferenceError: Can't find variable: SharedWorker
+
+Harness Error (FAIL), message = ReferenceError: Can't find variable: SharedWorker
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamstemplatedsharedworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/templated.sharedworker.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/templated.sharedworker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/templated.sharedworker.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;templated.js shared worker wrapper file&lt;/title&gt;
+
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+
+&lt;script&gt;
+'use strict';
+fetch_tests_from_worker(new SharedWorker('templated.js'));
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/w3c-import.log (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/w3c-import.log        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/w3c-import.log        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -15,25 +15,58 @@
</span><span class="cx"> None
</span><span class="cx"> ------------------------------------------------------------------------
</span><span class="cx"> List of files:
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.https.html
</del><ins>+/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.dedicatedworker.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.html
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.js
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.https.html
</del><ins>+/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.serviceworker.https.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.sharedworker.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.dedicatedworker.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.html
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.js
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/brand-checks.https.html
</del><ins>+/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.serviceworker.https.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.sharedworker.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/brand-checks.dedicatedworker.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/brand-checks.html
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/brand-checks.js
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel.https.html
</del><ins>+/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/brand-checks.serviceworker.https.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/brand-checks.sharedworker.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel.dedicatedworker.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel.html
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel.js
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.https.html
</del><ins>+/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel.serviceworker.https.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel.sharedworker.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.dedicatedworker.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.html
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.js
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/garbage-collection.https.html
</del><ins>+/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.serviceworker.https.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.sharedworker.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/garbage-collection.dedicatedworker.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/garbage-collection.html
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/garbage-collection.js
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.https.html
</del><ins>+/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/garbage-collection.serviceworker.https.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/garbage-collection.sharedworker.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.dedicatedworker.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.html
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.js
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/pipe-through.https.html
</del><ins>+/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.serviceworker.https.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.sharedworker.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/pipe-through.dedicatedworker.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/pipe-through.html
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/pipe-through.js
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader.https.html
</del><ins>+/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/pipe-through.serviceworker.https.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/pipe-through.sharedworker.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader.dedicatedworker.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader.html
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader.js
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/tee.https.html
</del><ins>+/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader.serviceworker.https.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader.sharedworker.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/tee.dedicatedworker.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/tee.html
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/tee.js
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/templated.https.html
</del><ins>+/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/tee.serviceworker.https.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/tee.sharedworker.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/templated.dedicatedworker.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/templated.html
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/templated.js
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/templated.serviceworker.https.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/templated.sharedworker.html
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsresourcesrecordingstreamsjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/resources/recording-streams.js (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/resources/recording-streams.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/resources/recording-streams.js        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,90 @@
</span><ins>+'use strict';
+
+self.recordingReadableStream = (extras = {}, strategy) =&gt; {
+  let controllerToCopyOver;
+  const stream = new ReadableStream({
+    start(controller) {
+      controllerToCopyOver = controller;
+
+      if (extras.start) {
+        return extras.start(controller);
+      }
+
+      return undefined;
+    },
+    pull(controller) {
+      stream.events.push('pull');
+
+      if (extras.pull) {
+        return extras.pull(controller);
+      }
+
+      return undefined;
+    },
+    cancel(reason) {
+      stream.events.push('cancel', reason);
+      stream.eventsWithoutPulls.push('cancel', reason);
+
+      if (extras.cancel) {
+        return extras.cancel(reason);
+      }
+
+      return undefined;
+    }
+  }, strategy);
+
+  stream.controller = controllerToCopyOver;
+  stream.events = [];
+  stream.eventsWithoutPulls = [];
+
+  return stream;
+};
+
+self.recordingWritableStream = (extras = {}, strategy) =&gt; {
+  let controllerToCopyOver;
+  const stream = new WritableStream({
+    start(controller) {
+      controllerToCopyOver = controller;
+
+      if (extras.start) {
+        return extras.start(controller);
+      }
+
+      return undefined;
+    },
+    write(chunk) {
+      stream.events.push('write', chunk);
+
+      if (extras.write) {
+        return extras.write(chunk);
+      }
+
+      return undefined;
+    },
+    close(...args) {
+      assert_array_equals(args, [controllerToCopyOver], 'close must always be called with the controller');
+
+      stream.events.push('close');
+
+      if (extras.close) {
+        return extras.close();
+      }
+
+      return undefined;
+    },
+    abort(e) {
+      stream.events.push('abort', e);
+
+      if (extras.abort) {
+        return extras.abort(e);
+      }
+
+      return undefined;
+    }
+  }, strategy);
+
+  stream.controller = controllerToCopyOver;
+  stream.events = [];
+
+  return stream;
+};
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsresourcesrstesttemplatesjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/resources/rs-test-templates.js (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/resources/rs-test-templates.js        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/resources/rs-test-templates.js        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -18,7 +18,7 @@
</span><span class="cx">     assert_equals(typeof rs.pipeTo, 'function', 'has a pipeTo method');
</span><span class="cx">     assert_equals(typeof rs.tee, 'function', 'has a tee method');
</span><span class="cx"> 
</span><del>-  }, 'instances have the correct methods and properties');
</del><ins>+  }, label + ': instances have the correct methods and properties');
</ins><span class="cx"> 
</span><span class="cx">   test(() =&gt; {
</span><span class="cx">     const rs = factory();
</span><span class="lines">@@ -28,7 +28,7 @@
</span><span class="cx">     assert_throws(new RangeError(), () =&gt; rs.getReader({ mode: 'asdf' }), 'asdf mode should throw');
</span><span class="cx">     assert_throws(new TypeError(), () =&gt; rs.getReader(null), 'null should throw');
</span><span class="cx"> 
</span><del>-  }, 'calling getReader with invalid arguments should throw appropriate errors');
</del><ins>+  }, label + ': calling getReader with invalid arguments should throw appropriate errors');
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> self.templatedRSClosed = (label, factory) =&gt; {
</span><span class="lines">@@ -47,7 +47,7 @@
</span><span class="cx">       cancelPromise2.then(v =&gt; assert_equals(v, undefined, 'second cancel() call should fulfill with undefined'))
</span><span class="cx">     ]);
</span><span class="cx"> 
</span><del>-  }, 'cancel() should return a distinct fulfilled promise each time');
</del><ins>+  }, label + ': cancel() should return a distinct fulfilled promise each time');
</ins><span class="cx"> 
</span><span class="cx">   test(() =&gt; {
</span><span class="cx"> 
</span><span class="lines">@@ -54,7 +54,7 @@
</span><span class="cx">     const rs = factory();
</span><span class="cx">     assert_false(rs.locked, 'locked getter should return false');
</span><span class="cx"> 
</span><del>-  }, 'locked should be false');
</del><ins>+  }, label + ': locked should be false');
</ins><span class="cx"> 
</span><span class="cx">   test(() =&gt; {
</span><span class="cx"> 
</span><span class="lines">@@ -61,7 +61,7 @@
</span><span class="cx">     const rs = factory();
</span><span class="cx">     rs.getReader(); // getReader() should not throw.
</span><span class="cx"> 
</span><del>-  }, 'getReader() should be OK');
</del><ins>+  }, label + ': getReader() should be OK');
</ins><span class="cx"> 
</span><span class="cx">   test(() =&gt; {
</span><span class="cx"> 
</span><span class="lines">@@ -75,7 +75,7 @@
</span><span class="cx"> 
</span><span class="cx">     rs.getReader(); // Getting a third reader should not throw.
</span><span class="cx"> 
</span><del>-  }, 'should be able to acquire multiple readers if they are released in succession');
</del><ins>+  }, label + ': should be able to acquire multiple readers if they are released in succession');
</ins><span class="cx"> 
</span><span class="cx">   test(() =&gt; {
</span><span class="cx"> 
</span><span class="lines">@@ -86,7 +86,7 @@
</span><span class="cx">     assert_throws(new TypeError(), () =&gt; rs.getReader(), 'getting a second reader should throw');
</span><span class="cx">     assert_throws(new TypeError(), () =&gt; rs.getReader(), 'getting a third reader should throw');
</span><span class="cx"> 
</span><del>-  }, 'should not be able to acquire a second reader if we don\'t release the first one');
</del><ins>+  }, label + ': should not be able to acquire a second reader if we don\'t release the first one');
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> self.templatedRSErrored = (label, factory, error) =&gt; {
</span><span class="lines">@@ -102,7 +102,7 @@
</span><span class="cx">       promise_rejects(t, error, reader.read())
</span><span class="cx">     ]);
</span><span class="cx"> 
</span><del>-  }, 'getReader() should return a reader that acts errored');
</del><ins>+  }, label + ': getReader() should return a reader that acts errored');
</ins><span class="cx"> 
</span><span class="cx">   promise_test(t =&gt; {
</span><span class="cx"> 
</span><span class="lines">@@ -115,13 +115,13 @@
</span><span class="cx">       promise_rejects(t, error, reader.closed)
</span><span class="cx">     ]);
</span><span class="cx"> 
</span><del>-  }, 'read() twice should give the error each time');
</del><ins>+  }, label + ': read() twice should give the error each time');
</ins><span class="cx"> 
</span><span class="cx">   test(() =&gt; {
</span><span class="cx">     const rs = factory();
</span><span class="cx"> 
</span><span class="cx">     assert_false(rs.locked, 'locked getter should return false');
</span><del>-  }, 'locked should be false');
</del><ins>+  }, label + ': locked should be false');
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> self.templatedRSErroredSyncOnly = (label, factory, error) =&gt; {
</span><span class="lines">@@ -135,7 +135,7 @@
</span><span class="cx"> 
</span><span class="cx">     return promise_rejects(t, error, reader.closed);
</span><span class="cx"> 
</span><del>-  }, 'should be able to obtain a second reader, with the correct closed promise');
</del><ins>+  }, label + ': should be able to obtain a second reader, with the correct closed promise');
</ins><span class="cx"> 
</span><span class="cx">   test(() =&gt; {
</span><span class="cx"> 
</span><span class="lines">@@ -145,7 +145,7 @@
</span><span class="cx">     assert_throws(new TypeError(), () =&gt; rs.getReader(), 'getting a second reader should throw a TypeError');
</span><span class="cx">     assert_throws(new TypeError(), () =&gt; rs.getReader(), 'getting a third reader should throw a TypeError');
</span><span class="cx"> 
</span><del>-  }, 'should not be able to obtain additional readers if we don\'t release the first lock');
</del><ins>+  }, label + ': should not be able to obtain additional readers if we don\'t release the first lock');
</ins><span class="cx"> 
</span><span class="cx">   promise_test(t =&gt; {
</span><span class="cx"> 
</span><span class="lines">@@ -160,7 +160,7 @@
</span><span class="cx">       promise_rejects(t, error, cancelPromise2)
</span><span class="cx">     ]);
</span><span class="cx"> 
</span><del>-  }, 'cancel() should return a distinct rejected promise each time');
</del><ins>+  }, label + ': cancel() should return a distinct rejected promise each time');
</ins><span class="cx"> 
</span><span class="cx">   promise_test(t =&gt; {
</span><span class="cx"> 
</span><span class="lines">@@ -176,7 +176,7 @@
</span><span class="cx">       promise_rejects(t, error, cancelPromise2)
</span><span class="cx">     ]);
</span><span class="cx"> 
</span><del>-  }, 'reader cancel() should return a distinct rejected promise each time');
</del><ins>+  }, label + ': reader cancel() should return a distinct rejected promise each time');
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> self.templatedRSEmptyReader = (label, factory) =&gt; {
</span><span class="lines">@@ -193,7 +193,7 @@
</span><span class="cx">     assert_equals(typeof reader.read, 'function', 'has a read method');
</span><span class="cx">     assert_equals(typeof reader.releaseLock, 'function', 'has a releaseLock method');
</span><span class="cx"> 
</span><del>-  }, 'instances have the correct methods and properties');
</del><ins>+  }, label + ': instances have the correct methods and properties');
</ins><span class="cx"> 
</span><span class="cx">   test(() =&gt; {
</span><span class="cx"> 
</span><span class="lines">@@ -201,7 +201,7 @@
</span><span class="cx"> 
</span><span class="cx">     assert_true(stream.locked, 'locked getter should return true');
</span><span class="cx"> 
</span><del>-  }, 'locked should be true');
</del><ins>+  }, label + ': locked should be true');
</ins><span class="cx"> 
</span><span class="cx">   promise_test(t =&gt; {
</span><span class="cx"> 
</span><span class="lines">@@ -214,7 +214,7 @@
</span><span class="cx"> 
</span><span class="cx">     return delay(500);
</span><span class="cx"> 
</span><del>-  }, 'read() should never settle');
</del><ins>+  }, label + ': read() should never settle');
</ins><span class="cx"> 
</span><span class="cx">   promise_test(t =&gt; {
</span><span class="cx"> 
</span><span class="lines">@@ -232,7 +232,7 @@
</span><span class="cx"> 
</span><span class="cx">     return delay(500);
</span><span class="cx"> 
</span><del>-  }, 'two read()s should both never settle');
</del><ins>+  }, label + ': two read()s should both never settle');
</ins><span class="cx"> 
</span><span class="cx">   test(() =&gt; {
</span><span class="cx"> 
</span><span class="lines">@@ -239,7 +239,7 @@
</span><span class="cx">     const reader = factory().reader;
</span><span class="cx">     assert_not_equals(reader.read(), reader.read(), 'the promises returned should be distinct');
</span><span class="cx"> 
</span><del>-  }, 'read() should return distinct promises each time');
</del><ins>+  }, label + ': read() should return distinct promises each time');
</ins><span class="cx"> 
</span><span class="cx">   test(() =&gt; {
</span><span class="cx"> 
</span><span class="lines">@@ -246,7 +246,7 @@
</span><span class="cx">     const stream = factory().stream;
</span><span class="cx">     assert_throws(new TypeError(), () =&gt; stream.getReader(), 'stream.getReader() should throw a TypeError');
</span><span class="cx"> 
</span><del>-  }, 'getReader() again on the stream should fail');
</del><ins>+  }, label + ': getReader() again on the stream should fail');
</ins><span class="cx"> 
</span><span class="cx">   promise_test(t =&gt; {
</span><span class="cx"> 
</span><span class="lines">@@ -275,7 +275,7 @@
</span><span class="cx"> 
</span><span class="cx">     return delay(500);
</span><span class="cx"> 
</span><del>-  }, 'releasing the lock with pending read requests should throw but the read requests should stay pending');
</del><ins>+  }, label + ': releasing the lock with pending read requests should throw but the read requests should stay pending');
</ins><span class="cx"> 
</span><span class="cx">   promise_test(t =&gt; {
</span><span class="cx"> 
</span><span class="lines">@@ -287,7 +287,7 @@
</span><span class="cx">       promise_rejects(t, new TypeError(), reader.read())
</span><span class="cx">     ]);
</span><span class="cx"> 
</span><del>-  }, 'releasing the lock should cause further read() calls to reject with a TypeError');
</del><ins>+  }, label + ': releasing the lock should cause further read() calls to reject with a TypeError');
</ins><span class="cx"> 
</span><span class="cx">   promise_test(t =&gt; {
</span><span class="cx"> 
</span><span class="lines">@@ -301,7 +301,7 @@
</span><span class="cx"> 
</span><span class="cx">     return promise_rejects(t, new TypeError(), closedBefore);
</span><span class="cx"> 
</span><del>-  }, 'releasing the lock should cause closed calls to reject with a TypeError');
</del><ins>+  }, label + ': releasing the lock should cause closed calls to reject with a TypeError');
</ins><span class="cx"> 
</span><span class="cx">   test(() =&gt; {
</span><span class="cx"> 
</span><span class="lines">@@ -312,7 +312,7 @@
</span><span class="cx">     reader.releaseLock();
</span><span class="cx">     assert_false(stream.locked, 'locked getter should return false');
</span><span class="cx"> 
</span><del>-  }, 'releasing the lock should cause locked to become false');
</del><ins>+  }, label + ': releasing the lock should cause locked to become false');
</ins><span class="cx"> 
</span><span class="cx">   promise_test(() =&gt; {
</span><span class="cx"> 
</span><span class="lines">@@ -323,7 +323,7 @@
</span><span class="cx">       assert_object_equals(r, { value: undefined, done: true }, 'read()ing from the reader should give a done result');
</span><span class="cx">     });
</span><span class="cx"> 
</span><del>-  }, 'canceling via the reader should cause the reader to act closed');
</del><ins>+  }, label + ': canceling via the reader should cause the reader to act closed');
</ins><span class="cx"> 
</span><span class="cx">   promise_test(t =&gt; {
</span><span class="cx"> 
</span><span class="lines">@@ -330,7 +330,7 @@
</span><span class="cx">     const stream = factory().stream;
</span><span class="cx">     return promise_rejects(t, new TypeError(), stream.cancel());
</span><span class="cx"> 
</span><del>-  }, 'canceling via the stream should fail');
</del><ins>+  }, label + ': canceling via the stream should fail');
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> self.templatedRSClosedReader = (label, factory) =&gt; {
</span><span class="lines">@@ -344,7 +344,7 @@
</span><span class="cx">       assert_object_equals(v, { value: undefined, done: true }, 'read() should fulfill correctly');
</span><span class="cx">     });
</span><span class="cx"> 
</span><del>-  }, 'read() should fulfill with { value: undefined, done: true }');
</del><ins>+  }, label + ': read() should fulfill with { value: undefined, done: true }');
</ins><span class="cx"> 
</span><span class="cx">   promise_test(() =&gt; {
</span><span class="cx"> 
</span><span class="lines">@@ -359,7 +359,7 @@
</span><span class="cx">       })
</span><span class="cx">     ]);
</span><span class="cx"> 
</span><del>-  }, 'read() multiple times should fulfill with { value: undefined, done: true }');
</del><ins>+  }, label + ': read() multiple times should fulfill with { value: undefined, done: true }');
</ins><span class="cx"> 
</span><span class="cx">   promise_test(() =&gt; {
</span><span class="cx"> 
</span><span class="lines">@@ -369,7 +369,7 @@
</span><span class="cx">       assert_object_equals(v, { value: undefined, done: true }, 'read() should fulfill correctly');
</span><span class="cx">     });
</span><span class="cx"> 
</span><del>-  }, 'read() should work when used within another read() fulfill callback');
</del><ins>+  }, label + ': read() should work when used within another read() fulfill callback');
</ins><span class="cx"> 
</span><span class="cx">   promise_test(() =&gt; {
</span><span class="cx"> 
</span><span class="lines">@@ -377,7 +377,7 @@
</span><span class="cx"> 
</span><span class="cx">     return reader.closed.then(v =&gt; assert_equals(v, undefined, 'reader closed should fulfill with undefined'));
</span><span class="cx"> 
</span><del>-  }, 'closed should fulfill with undefined');
</del><ins>+  }, label + ': closed should fulfill with undefined');
</ins><span class="cx"> 
</span><span class="cx">   promise_test(t =&gt; {
</span><span class="cx"> 
</span><span class="lines">@@ -394,7 +394,7 @@
</span><span class="cx">       promise_rejects(t, new TypeError(), closedAfter)
</span><span class="cx">     ]);
</span><span class="cx"> 
</span><del>-  }, 'releasing the lock should cause closed to reject and change identity');
</del><ins>+  }, label + ': releasing the lock should cause closed to reject and change identity');
</ins><span class="cx"> 
</span><span class="cx">   promise_test(() =&gt; {
</span><span class="cx"> 
</span><span class="lines">@@ -412,7 +412,7 @@
</span><span class="cx">       cancelPromise2.then(v =&gt; assert_equals(v, undefined, 'second cancel() should fulfill with undefined'))
</span><span class="cx">     ]);
</span><span class="cx"> 
</span><del>-  }, 'cancel() should return a distinct fulfilled promise each time');
</del><ins>+  }, label + ': cancel() should return a distinct fulfilled promise each time');
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> self.templatedRSErroredReader = (label, factory, error) =&gt; {
</span><span class="lines">@@ -423,7 +423,7 @@
</span><span class="cx">     const reader = factory().reader;
</span><span class="cx">     return promise_rejects(t, error, reader.closed);
</span><span class="cx"> 
</span><del>-  }, 'closed should reject with the error');
</del><ins>+  }, label + ': closed should reject with the error');
</ins><span class="cx"> 
</span><span class="cx">   promise_test(t =&gt; {
</span><span class="cx"> 
</span><span class="lines">@@ -439,7 +439,7 @@
</span><span class="cx">       return promise_rejects(t, new TypeError(), closedAfter);
</span><span class="cx">     });
</span><span class="cx"> 
</span><del>-  }, 'releasing the lock should cause closed to reject and change identity');
</del><ins>+  }, label + ': releasing the lock should cause closed to reject and change identity');
</ins><span class="cx"> 
</span><span class="cx">   promise_test(t =&gt; {
</span><span class="cx"> 
</span><span class="lines">@@ -446,7 +446,7 @@
</span><span class="cx">     const reader = factory().reader;
</span><span class="cx">     return promise_rejects(t, error, reader.read());
</span><span class="cx"> 
</span><del>-  }, 'read() should reject with the error');
</del><ins>+  }, label + ': read() should reject with the error');
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> self.templatedRSTwoChunksOpenReader = (label, factory, chunks) =&gt; {
</span><span class="lines">@@ -465,7 +465,7 @@
</span><span class="cx">       })
</span><span class="cx">     ]);
</span><span class="cx"> 
</span><del>-  }, 'calling read() twice without waiting will eventually give both chunks (sequential)');
</del><ins>+  }, label + ': calling read() twice without waiting will eventually give both chunks (sequential)');
</ins><span class="cx"> 
</span><span class="cx">   promise_test(() =&gt; {
</span><span class="cx"> 
</span><span class="lines">@@ -479,7 +479,7 @@
</span><span class="cx">       });
</span><span class="cx">     });
</span><span class="cx"> 
</span><del>-  }, 'calling read() twice without waiting will eventually give both chunks (nested)');
</del><ins>+  }, label + ': calling read() twice without waiting will eventually give both chunks (nested)');
</ins><span class="cx"> 
</span><span class="cx">   test(() =&gt; {
</span><span class="cx"> 
</span><span class="lines">@@ -486,7 +486,7 @@
</span><span class="cx">     const reader = factory().reader;
</span><span class="cx">     assert_not_equals(reader.read(), reader.read(), 'the promises returned should be distinct');
</span><span class="cx"> 
</span><del>-  }, 'read() should return distinct promises each time');
</del><ins>+  }, label + ': read() should return distinct promises each time');
</ins><span class="cx"> 
</span><span class="cx">   promise_test(() =&gt; {
</span><span class="cx"> 
</span><span class="lines">@@ -510,7 +510,7 @@
</span><span class="cx"> 
</span><span class="cx">     return Promise.all([promise1, promise2, promise3]);
</span><span class="cx"> 
</span><del>-  }, 'cancel() after a read() should still give that single read result');
</del><ins>+  }, label + ': cancel() after a read() should still give that single read result');
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> self.templatedRSTwoChunksClosedReader = function (label, factory, chunks) {
</span><span class="lines">@@ -532,7 +532,7 @@
</span><span class="cx">       })
</span><span class="cx">     ]);
</span><span class="cx"> 
</span><del>-  }, 'third read(), without waiting, should give { value: undefined, done: true } (sequential)');
</del><ins>+  }, label + ': third read(), without waiting, should give { value: undefined, done: true } (sequential)');
</ins><span class="cx"> 
</span><span class="cx">   promise_test(() =&gt; {
</span><span class="cx"> 
</span><span class="lines">@@ -550,7 +550,7 @@
</span><span class="cx">       });
</span><span class="cx">     });
</span><span class="cx"> 
</span><del>-  }, 'third read(), without waiting, should give { value: undefined, done: true } (nested)');
</del><ins>+  }, label + ': third read(), without waiting, should give { value: undefined, done: true } (nested)');
</ins><span class="cx"> 
</span><span class="cx">   promise_test(() =&gt; {
</span><span class="cx"> 
</span><span class="lines">@@ -570,7 +570,8 @@
</span><span class="cx"> 
</span><span class="cx">     return promise;
</span><span class="cx"> 
</span><del>-  }, 'draining the stream via read() should cause the reader closed promise to fulfill, but locked stays true');
</del><ins>+  }, label +
+     ': draining the stream via read() should cause the reader closed promise to fulfill, but locked stays true');
</ins><span class="cx"> 
</span><span class="cx">   promise_test(() =&gt; {
</span><span class="cx"> 
</span><span class="lines">@@ -589,7 +590,7 @@
</span><span class="cx"> 
</span><span class="cx">     return promise;
</span><span class="cx"> 
</span><del>-  }, 'releasing the lock after the stream is closed should cause locked to become false');
</del><ins>+  }, label + ': releasing the lock after the stream is closed should cause locked to become false');
</ins><span class="cx"> 
</span><span class="cx">   promise_test(t =&gt; {
</span><span class="cx"> 
</span><span class="lines">@@ -603,7 +604,7 @@
</span><span class="cx">       promise_rejects(t, new TypeError(), reader.read())
</span><span class="cx">     ]);
</span><span class="cx"> 
</span><del>-  }, 'releasing the lock should cause further read() calls to reject with a TypeError');
</del><ins>+  }, label + ': releasing the lock should cause further read() calls to reject with a TypeError');
</ins><span class="cx"> 
</span><span class="cx">   promise_test(() =&gt; {
</span><span class="cx"> 
</span><span class="lines">@@ -630,5 +631,5 @@
</span><span class="cx"> 
</span><span class="cx">     return promise;
</span><span class="cx"> 
</span><del>-  }, 'reader\'s closed property always returns the same promise');
</del><ins>+  }, label + ': reader\'s closed property always returns the same promise');
</ins><span class="cx"> };
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsresourcestestinitializerjs"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/resources/test-initializer.js (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/resources/test-initializer.js        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/resources/test-initializer.js        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1,14 +0,0 @@
</span><del>-'use strict';
-
-function worker_test(file) {
-  fetch_tests_from_worker(new Worker(file));
-  if (typeof SharedWorker === 'function') {
-    fetch_tests_from_worker(new SharedWorker(file));
-  } else {
-    test(() =&gt; {
-      assert_unreached('SharedWorker is unavailable');
-    }, 'Load ' + file + ' with SharedWorker');
-  }
-  service_worker_test(file);
-}
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsresourcestestutilsjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/resources/test-utils.js (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/resources/test-utils.js        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/resources/test-utils.js        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -6,10 +6,10 @@
</span><span class="cx">   return promise_rejects(t, new TypeError(), getter.call(target));
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-self.methodRejects = (t, obj, methodName, target) =&gt; {
</del><ins>+self.methodRejects = (t, obj, methodName, target, args) =&gt; {
</ins><span class="cx">   const method = obj[methodName];
</span><span class="cx"> 
</span><del>-  return promise_rejects(t, new TypeError(), method.call(target));
</del><ins>+  return promise_rejects(t, new TypeError(), method.apply(target, args));
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> self.getterThrows = (obj, getterName, target) =&gt; {
</span><span class="lines">@@ -41,3 +41,10 @@
</span><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> self.delay = ms =&gt; new Promise(resolve =&gt; step_timeout(resolve, ms));
</span><ins>+
+// For tests which verify that the implementation doesn't do something it shouldn't, it's better not to use a
+// timeout. Instead, assume that any reasonable implementation is going to finish work after 2 times around the event
+// loop, and use flushAsyncEvents().then(() =&gt; assert_array_equals(...));
+// Some tests include promise resolutions which may mean the test code takes a couple of event loop visits itself. So go
+// around an extra 2 times to avoid complicating those tests.
+self.flushAsyncEvents = () =&gt; delay(0).then(() =&gt; delay(0)).then(() =&gt; delay(0)).then(() =&gt; delay(0));
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsresourcesw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/resources/w3c-import.log (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/resources/w3c-import.log        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/resources/w3c-import.log        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -15,7 +15,7 @@
</span><span class="cx"> None
</span><span class="cx"> ------------------------------------------------------------------------
</span><span class="cx"> List of files:
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/streams/resources/recording-streams.js
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/streams/resources/rs-test-templates.js
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/streams/resources/rs-utils.js
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/streams/resources/test-initializer.js
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/streams/resources/test-utils.js
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/w3c-import.log (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/w3c-import.log        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/w3c-import.log        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -16,7 +16,15 @@
</span><span class="cx"> ------------------------------------------------------------------------
</span><span class="cx"> List of files:
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/streams/OWNERS
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/streams/byte-length-queuing-strategy.https.html
</del><ins>+/LayoutTests/imported/w3c/web-platform-tests/streams/README.md
+/LayoutTests/imported/w3c/web-platform-tests/streams/byte-length-queuing-strategy.dedicatedworker.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/byte-length-queuing-strategy.html
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/streams/byte-length-queuing-strategy.js
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.https.html
</del><ins>+/LayoutTests/imported/w3c/web-platform-tests/streams/byte-length-queuing-strategy.serviceworker.https.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/byte-length-queuing-strategy.sharedworker.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.dedicatedworker.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.html
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.js
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.serviceworker.https.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.sharedworker.html
+/LayoutTests/imported/w3c/web-platform-tests/streams/generate-test-wrappers.js
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformteststest_keys_wdspechtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/test_keys_wdspec.html (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/test_keys_wdspec.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/test_keys_wdspec.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,69 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;head&gt;
+    &lt;title&gt;Test Keys&lt;/title&gt;
+    &lt;script&gt;
+        var allEvents = {events: []};
+        function displayMessage(message) {
+            document.getElementById(&quot;events&quot;).innerHTML = &quot;&lt;p&gt;&quot; + message + &quot;&lt;/p&gt;&quot;;
+        }
+
+        function appendMessage(message) {
+            document.getElementById(&quot;events&quot;).innerHTML += &quot;&lt;p&gt;&quot; + message + &quot;&lt;/p&gt;&quot;;
+        }
+
+        /**
+         * Escape |key| if it's in a surrogate-half character range.
+         *
+         * Example: given &quot;\ud83d&quot; return &quot;U+d83d&quot;.
+         *
+         * Otherwise JSON.stringify will convert it to U+FFFD (REPLACEMENT CHARACTER)
+         * when returning a value from executeScript, for example.
+         */
+        function escapeSurrogateHalf(key) {
+          if (typeof key !== &quot;undefined&quot; &amp;&amp; key.length === 1) {
+            var charCode = key.charCodeAt(0);
+            var highSurrogate = charCode &gt;= 0xD800 &amp;&amp; charCode &lt;= 0xDBFF;
+            var surrogate = highSurrogate || (charCode &gt;= 0xDC00 &amp;&amp; charCode &lt;= 0xDFFF);
+            if (surrogate) {
+              key = &quot;U+&quot; + charCode.toString(16);
+            }
+          }
+          return key;
+        }
+
+        function recordEvent(event) {
+          var key = escapeSurrogateHalf(event.key);
+          allEvents.events.push({
+            &quot;code&quot;: event.code,
+            &quot;key&quot;: key,
+            &quot;which&quot;: event.which,
+            &quot;location&quot;: event.location,
+            &quot;ctrl&quot;: event.ctrlKey,
+            &quot;meta&quot;: event.metaKey,
+            &quot;shift&quot;: event.shiftKey,
+            &quot;repeat&quot;: event.repeat,
+            &quot;type&quot;: event.type
+          });
+          appendMessage(`${event.type}(code:${event.code}, key:${key}, which:${event.which})`);
+        }
+
+        function resetEvents() {
+            allEvents.events.length = 0;
+            displayMessage(&quot;&quot;);
+        }
+    &lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+  &lt;div&gt;
+    &lt;h2&gt;KeyReporter&lt;/h2&gt;
+    &lt;input type=&quot;text&quot; id=&quot;keys&quot; size=&quot;80&quot;
+           onkeyup=&quot;recordEvent(event)&quot;
+           onkeypress=&quot;recordEvent(event)&quot;
+           onkeydown=&quot;recordEvent(event)&quot;&gt;
+  &lt;/div&gt;
+  &lt;div id=&quot;resultContainer&quot; style=&quot;width:300;height:60&quot;&gt;
+    &lt;h2&gt;Events&lt;/h2&gt;
+    &lt;div id=&quot;events&quot;&gt;&lt;/div&gt;
+  &lt;/div&gt;
+&lt;/body&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsurlaelementexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -77,6 +77,10 @@
</span><span class="cx"> PASS Parsing: &lt;https:/example.com/&gt; against &lt;http://example.org/foo/bar&gt; 
</span><span class="cx"> PASS Parsing: &lt;madeupscheme:/example.com/&gt; against &lt;http://example.org/foo/bar&gt; 
</span><span class="cx"> PASS Parsing: &lt;file:/example.com/&gt; against &lt;http://example.org/foo/bar&gt; 
</span><ins>+FAIL Parsing: &lt;file://example:1/&gt; against &lt;about:blank&gt; assert_unreached: Expected URL to fail parsing Reached unreachable code
+PASS Parsing: &lt;file://example:test/&gt; against &lt;about:blank&gt; 
+PASS Parsing: &lt;file://example%/&gt; against &lt;about:blank&gt; 
+PASS Parsing: &lt;file://[example]/&gt; against &lt;about:blank&gt; 
</ins><span class="cx"> PASS Parsing: &lt;ftps:/example.com/&gt; against &lt;http://example.org/foo/bar&gt; 
</span><span class="cx"> PASS Parsing: &lt;gopher:/example.com/&gt; against &lt;http://example.org/foo/bar&gt; 
</span><span class="cx"> PASS Parsing: &lt;ws:/example.com/&gt; against &lt;http://example.org/foo/bar&gt; 
</span><span class="lines">@@ -329,7 +333,7 @@
</span><span class="cx"> PASS Parsing: &lt;sc://!&quot;$&amp;'()*+,-.;&lt;=&gt;^_`{|}~/&gt; against &lt;about:blank&gt; 
</span><span class="cx"> PASS Parsing: &lt;sc://\0/&gt; against &lt;about:blank&gt; 
</span><span class="cx"> PASS Parsing: &lt;sc:// /&gt; against &lt;about:blank&gt; 
</span><del>-PASS Parsing: &lt;sc://%/&gt; against &lt;about:blank&gt; 
</del><ins>+FAIL Parsing: &lt;sc://%/&gt; against &lt;about:blank&gt; assert_equals: protocol expected &quot;sc:&quot; but got &quot;:&quot;
</ins><span class="cx"> PASS Parsing: &lt;sc://@/&gt; against &lt;about:blank&gt; 
</span><span class="cx"> PASS Parsing: &lt;sc://te@s:t@/&gt; against &lt;about:blank&gt; 
</span><span class="cx"> PASS Parsing: &lt;sc://:/&gt; against &lt;about:blank&gt; 
</span><span class="lines">@@ -386,6 +390,9 @@
</span><span class="cx"> FAIL Parsing: &lt;//d:/..&gt; against &lt;file:///C:/a/b&gt; assert_equals: href expected &quot;file:///d:/&quot; but got &quot;file:///&quot;
</span><span class="cx"> PASS Parsing: &lt;..&gt; against &lt;file:///ab:/&gt; 
</span><span class="cx"> PASS Parsing: &lt;..&gt; against &lt;file:///1:/&gt; 
</span><ins>+PASS Parsing: &lt;file:&gt; against &lt;about:blank&gt; 
+PASS Parsing: &lt;file:?q=v&gt; against &lt;about:blank&gt; 
+PASS Parsing: &lt;file:#frag&gt; against &lt;about:blank&gt; 
</ins><span class="cx"> PASS Parsing: &lt;http://[1:0::]&gt; against &lt;http://example.net/&gt; 
</span><span class="cx"> FAIL Parsing: &lt;http://?&gt; against &lt;about:blank&gt; assert_unreached: Expected URL to fail parsing Reached unreachable code
</span><span class="cx"> FAIL Parsing: &lt;http://#&gt; against &lt;about:blank&gt; assert_unreached: Expected URL to fail parsing Reached unreachable code
</span><span class="lines">@@ -411,4 +418,10 @@
</span><span class="cx"> PASS Parsing: &lt;git+https://github.com/foo/bar&gt; against &lt;about:blank&gt; 
</span><span class="cx"> PASS Parsing: &lt;urn:ietf:rfc:2648&gt; against &lt;about:blank&gt; 
</span><span class="cx"> PASS Parsing: &lt;tag:joe@example.org,2001:foo/bar&gt; against &lt;about:blank&gt; 
</span><ins>+FAIL Parsing: &lt;non-special://%E2%80%A0/&gt; against &lt;about:blank&gt; assert_equals: protocol expected &quot;non-special:&quot; but got &quot;:&quot;
+FAIL Parsing: &lt;non-special://H%4fSt/path&gt; against &lt;about:blank&gt; assert_equals: protocol expected &quot;non-special:&quot; but got &quot;:&quot;
+PASS Parsing: &lt;non-special://[1:2:0:0:5:0:0:0]/&gt; against &lt;about:blank&gt; 
+PASS Parsing: &lt;non-special://[1:2:0:0:0:0:0:3]/&gt; against &lt;about:blank&gt; 
+PASS Parsing: &lt;non-special://[1:2::3]:80/&gt; against &lt;about:blank&gt; 
+PASS Parsing: &lt;non-special://[:80/&gt; against &lt;about:blank&gt; 
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsurlaelementoriginxhtmlxhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-origin-xhtml.xhtml (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-origin-xhtml.xhtml        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-origin-xhtml.xhtml        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -12,4 +12,4 @@
</span><span class="cx">     &lt;script src=&quot;a-element-origin.js&quot;&gt;&lt;/script&gt;
</span><span class="cx">   &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span><del>-&lt;!-- Other dependencies: urltestdata.json --&gt;
</del><ins>+&lt;!--  Other dependencies: urltestdata.json  --&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsurlaelementoriginhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-origin.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-origin.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-origin.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -5,4 +5,4 @@
</span><span class="cx"> &lt;base id=base&gt;
</span><span class="cx"> &lt;div id=log&gt;&lt;/div&gt;
</span><span class="cx"> &lt;script src=a-element-origin.js&gt;&lt;/script&gt;
</span><del>-&lt;!-- Other dependencies: urltestdata.json --&gt;
</del><ins>+&lt;!--  Other dependencies: urltestdata.json  --&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsurlaelementxhtmlexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-xhtml-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-xhtml-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-xhtml-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -77,6 +77,10 @@
</span><span class="cx"> PASS Parsing: &lt;https:/example.com/&gt; against &lt;http://example.org/foo/bar&gt; 
</span><span class="cx"> PASS Parsing: &lt;madeupscheme:/example.com/&gt; against &lt;http://example.org/foo/bar&gt; 
</span><span class="cx"> PASS Parsing: &lt;file:/example.com/&gt; against &lt;http://example.org/foo/bar&gt; 
</span><ins>+FAIL Parsing: &lt;file://example:1/&gt; against &lt;about:blank&gt; assert_unreached: Expected URL to fail parsing Reached unreachable code
+PASS Parsing: &lt;file://example:test/&gt; against &lt;about:blank&gt; 
+PASS Parsing: &lt;file://example%/&gt; against &lt;about:blank&gt; 
+PASS Parsing: &lt;file://[example]/&gt; against &lt;about:blank&gt; 
</ins><span class="cx"> PASS Parsing: &lt;ftps:/example.com/&gt; against &lt;http://example.org/foo/bar&gt; 
</span><span class="cx"> PASS Parsing: &lt;gopher:/example.com/&gt; against &lt;http://example.org/foo/bar&gt; 
</span><span class="cx"> PASS Parsing: &lt;ws:/example.com/&gt; against &lt;http://example.org/foo/bar&gt; 
</span><span class="lines">@@ -329,7 +333,7 @@
</span><span class="cx"> PASS Parsing: &lt;sc://!&quot;$&amp;'()*+,-.;&lt;=&gt;^_`{|}~/&gt; against &lt;about:blank&gt; 
</span><span class="cx"> PASS Parsing: &lt;sc://\0/&gt; against &lt;about:blank&gt; 
</span><span class="cx"> PASS Parsing: &lt;sc:// /&gt; against &lt;about:blank&gt; 
</span><del>-PASS Parsing: &lt;sc://%/&gt; against &lt;about:blank&gt; 
</del><ins>+FAIL Parsing: &lt;sc://%/&gt; against &lt;about:blank&gt; assert_equals: protocol expected &quot;sc:&quot; but got &quot;:&quot;
</ins><span class="cx"> PASS Parsing: &lt;sc://@/&gt; against &lt;about:blank&gt; 
</span><span class="cx"> PASS Parsing: &lt;sc://te@s:t@/&gt; against &lt;about:blank&gt; 
</span><span class="cx"> PASS Parsing: &lt;sc://:/&gt; against &lt;about:blank&gt; 
</span><span class="lines">@@ -386,6 +390,9 @@
</span><span class="cx"> FAIL Parsing: &lt;//d:/..&gt; against &lt;file:///C:/a/b&gt; assert_equals: href expected &quot;file:///d:/&quot; but got &quot;file:///&quot;
</span><span class="cx"> PASS Parsing: &lt;..&gt; against &lt;file:///ab:/&gt; 
</span><span class="cx"> PASS Parsing: &lt;..&gt; against &lt;file:///1:/&gt; 
</span><ins>+PASS Parsing: &lt;file:&gt; against &lt;about:blank&gt; 
+PASS Parsing: &lt;file:?q=v&gt; against &lt;about:blank&gt; 
+PASS Parsing: &lt;file:#frag&gt; against &lt;about:blank&gt; 
</ins><span class="cx"> PASS Parsing: &lt;http://[1:0::]&gt; against &lt;http://example.net/&gt; 
</span><span class="cx"> FAIL Parsing: &lt;http://?&gt; against &lt;about:blank&gt; assert_unreached: Expected URL to fail parsing Reached unreachable code
</span><span class="cx"> FAIL Parsing: &lt;http://#&gt; against &lt;about:blank&gt; assert_unreached: Expected URL to fail parsing Reached unreachable code
</span><span class="lines">@@ -411,4 +418,10 @@
</span><span class="cx"> PASS Parsing: &lt;git+https://github.com/foo/bar&gt; against &lt;about:blank&gt; 
</span><span class="cx"> PASS Parsing: &lt;urn:ietf:rfc:2648&gt; against &lt;about:blank&gt; 
</span><span class="cx"> PASS Parsing: &lt;tag:joe@example.org,2001:foo/bar&gt; against &lt;about:blank&gt; 
</span><ins>+FAIL Parsing: &lt;non-special://%E2%80%A0/&gt; against &lt;about:blank&gt; assert_equals: protocol expected &quot;non-special:&quot; but got &quot;:&quot;
+FAIL Parsing: &lt;non-special://H%4fSt/path&gt; against &lt;about:blank&gt; assert_equals: protocol expected &quot;non-special:&quot; but got &quot;:&quot;
+PASS Parsing: &lt;non-special://[1:2:0:0:5:0:0:0]/&gt; against &lt;about:blank&gt; 
+PASS Parsing: &lt;non-special://[1:2:0:0:0:0:0:3]/&gt; against &lt;about:blank&gt; 
+PASS Parsing: &lt;non-special://[1:2::3]:80/&gt; against &lt;about:blank&gt; 
+PASS Parsing: &lt;non-special://[:80/&gt; against &lt;about:blank&gt; 
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsurlaelementxhtmlxhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-xhtml.xhtml (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-xhtml.xhtml        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-xhtml.xhtml        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -12,4 +12,4 @@
</span><span class="cx">     &lt;script src=&quot;a-element.js&quot;&gt;&lt;/script&gt;
</span><span class="cx">   &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span><del>-&lt;!-- Other dependencies: urltestdata.json --&gt;
</del><ins>+&lt;!--  Other dependencies: urltestdata.json  --&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsurlaelementhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -5,4 +5,4 @@
</span><span class="cx"> &lt;base id=base&gt;
</span><span class="cx"> &lt;div id=log&gt;&lt;/div&gt;
</span><span class="cx"> &lt;script src=a-element.js&gt;&lt;/script&gt;
</span><del>-&lt;!-- Other dependencies: urltestdata.json --&gt;
</del><ins>+&lt;!--  Other dependencies: urltestdata.json  --&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsurlsetters_testsjson"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/url/setters_tests.json (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/url/setters_tests.json        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/url/setters_tests.json        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -264,6 +264,22 @@
</span><span class="cx">                 &quot;href&quot;: &quot;http://%c3%89t%C3%A9@example.net/&quot;,
</span><span class="cx">                 &quot;username&quot;: &quot;%c3%89t%C3%A9&quot;
</span><span class="cx">             }
</span><ins>+        },
+        {
+            &quot;href&quot;: &quot;sc:///&quot;,
+            &quot;new_value&quot;: &quot;x&quot;,
+            &quot;expected&quot;: {
+                &quot;href&quot;: &quot;sc:///&quot;,
+                &quot;username&quot;: &quot;&quot;
+            }
+        },
+        {
+            &quot;href&quot;: &quot;file://test/&quot;,
+            &quot;new_value&quot;: &quot;test&quot;,
+            &quot;expected&quot;: {
+                &quot;href&quot;: &quot;file://test/&quot;,
+                &quot;username&quot;: &quot;&quot;
+            }
</ins><span class="cx">         }
</span><span class="cx">     ],
</span><span class="cx">     &quot;password&quot;: [
</span><span class="lines">@@ -343,6 +359,22 @@
</span><span class="cx">                 &quot;href&quot;: &quot;http://:%c3%89t%C3%A9@example.net/&quot;,
</span><span class="cx">                 &quot;password&quot;: &quot;%c3%89t%C3%A9&quot;
</span><span class="cx">             }
</span><ins>+        },
+        {
+            &quot;href&quot;: &quot;sc:///&quot;,
+            &quot;new_value&quot;: &quot;x&quot;,
+            &quot;expected&quot;: {
+                &quot;href&quot;: &quot;sc:///&quot;,
+                &quot;password&quot;: &quot;&quot;
+            }
+        },
+        {
+            &quot;href&quot;: &quot;file://test/&quot;,
+            &quot;new_value&quot;: &quot;test&quot;,
+            &quot;expected&quot;: {
+                &quot;href&quot;: &quot;file://test/&quot;,
+                &quot;password&quot;: &quot;&quot;
+            }
</ins><span class="cx">         }
</span><span class="cx">     ],
</span><span class="cx">     &quot;host&quot;: [
</span><span class="lines">@@ -759,6 +791,46 @@
</span><span class="cx">                 &quot;host&quot;: &quot;example.net&quot;,
</span><span class="cx">                 &quot;hostname&quot;: &quot;example.net&quot;
</span><span class="cx">             }
</span><ins>+        },
+        {
+            &quot;href&quot;: &quot;file://y/&quot;,
+            &quot;new_value&quot;: &quot;x:123&quot;,
+            &quot;expected&quot;: {
+                &quot;href&quot;: &quot;file://y/&quot;,
+                &quot;host&quot;: &quot;y&quot;,
+                &quot;hostname&quot;: &quot;y&quot;,
+                &quot;port&quot;: &quot;&quot;
+            }
+        },
+        {
+            &quot;href&quot;: &quot;file://y/&quot;,
+            &quot;new_value&quot;: &quot;loc%41lhost&quot;,
+            &quot;expected&quot;: {
+                &quot;href&quot;: &quot;file:///&quot;,
+                &quot;host&quot;: &quot;&quot;,
+                &quot;hostname&quot;: &quot;&quot;,
+                &quot;port&quot;: &quot;&quot;
+            }
+        },
+        {
+            &quot;href&quot;: &quot;sc://test@test/&quot;,
+            &quot;new_value&quot;: &quot;&quot;,
+            &quot;expected&quot;: {
+                &quot;href&quot;: &quot;sc://test@test/&quot;,
+                &quot;host&quot;: &quot;test&quot;,
+                &quot;hostname&quot;: &quot;test&quot;,
+                &quot;username&quot;: &quot;test&quot;
+            }
+        },
+        {
+            &quot;href&quot;: &quot;sc://test:12/&quot;,
+            &quot;new_value&quot;: &quot;&quot;,
+            &quot;expected&quot;: {
+                &quot;href&quot;: &quot;sc://test:12/&quot;,
+                &quot;host&quot;: &quot;test:12&quot;,
+                &quot;hostname&quot;: &quot;test&quot;,
+                &quot;port&quot;: &quot;12&quot;
+            }
</ins><span class="cx">         }
</span><span class="cx">     ],
</span><span class="cx">     &quot;hostname&quot;: [
</span><span class="lines">@@ -1043,6 +1115,46 @@
</span><span class="cx">                 &quot;host&quot;: &quot;example.net&quot;,
</span><span class="cx">                 &quot;hostname&quot;: &quot;example.net&quot;
</span><span class="cx">             }
</span><ins>+        },
+        {
+            &quot;href&quot;: &quot;file://y/&quot;,
+            &quot;new_value&quot;: &quot;x:123&quot;,
+            &quot;expected&quot;: {
+                &quot;href&quot;: &quot;file://y/&quot;,
+                &quot;host&quot;: &quot;y&quot;,
+                &quot;hostname&quot;: &quot;y&quot;,
+                &quot;port&quot;: &quot;&quot;
+            }
+        },
+        {
+            &quot;href&quot;: &quot;file://y/&quot;,
+            &quot;new_value&quot;: &quot;loc%41lhost&quot;,
+            &quot;expected&quot;: {
+                &quot;href&quot;: &quot;file:///&quot;,
+                &quot;host&quot;: &quot;&quot;,
+                &quot;hostname&quot;: &quot;&quot;,
+                &quot;port&quot;: &quot;&quot;
+            }
+        },
+        {
+            &quot;href&quot;: &quot;sc://test@test/&quot;,
+            &quot;new_value&quot;: &quot;&quot;,
+            &quot;expected&quot;: {
+                &quot;href&quot;: &quot;sc://test@test/&quot;,
+                &quot;host&quot;: &quot;test&quot;,
+                &quot;hostname&quot;: &quot;test&quot;,
+                &quot;username&quot;: &quot;test&quot;
+            }
+        },
+        {
+            &quot;href&quot;: &quot;sc://test:12/&quot;,
+            &quot;new_value&quot;: &quot;&quot;,
+            &quot;expected&quot;: {
+                &quot;href&quot;: &quot;sc://test:12/&quot;,
+                &quot;host&quot;: &quot;test:12&quot;,
+                &quot;hostname&quot;: &quot;test&quot;,
+                &quot;port&quot;: &quot;12&quot;
+            }
</ins><span class="cx">         }
</span><span class="cx">     ],
</span><span class="cx">     &quot;port&quot;: [
</span><span class="lines">@@ -1198,6 +1310,46 @@
</span><span class="cx">                 &quot;hostname&quot;: &quot;example.net&quot;,
</span><span class="cx">                 &quot;port&quot;: &quot;8080&quot;
</span><span class="cx">             }
</span><ins>+        },
+        {
+            &quot;href&quot;: &quot;file://test/&quot;,
+            &quot;new_value&quot;: &quot;12&quot;,
+            &quot;expected&quot;: {
+                &quot;href&quot;: &quot;file://test/&quot;,
+                &quot;port&quot;: &quot;&quot;
+            }
+        },
+        {
+            &quot;href&quot;: &quot;file://localhost/&quot;,
+            &quot;new_value&quot;: &quot;12&quot;,
+            &quot;expected&quot;: {
+                &quot;href&quot;: &quot;file:///&quot;,
+                &quot;port&quot;: &quot;&quot;
+            }
+        },
+        {
+            &quot;href&quot;: &quot;non-base:value&quot;,
+            &quot;new_value&quot;: &quot;12&quot;,
+            &quot;expected&quot;: {
+                &quot;href&quot;: &quot;non-base:value&quot;,
+                &quot;port&quot;: &quot;&quot;
+            }
+        },
+        {
+            &quot;href&quot;: &quot;sc:///&quot;,
+            &quot;new_value&quot;: &quot;12&quot;,
+            &quot;expected&quot;: {
+                &quot;href&quot;: &quot;sc:///&quot;,
+                &quot;port&quot;: &quot;&quot;
+            }
+        },
+        {
+            &quot;href&quot;: &quot;sc://x/&quot;,
+            &quot;new_value&quot;: &quot;12&quot;,
+            &quot;expected&quot;: {
+                &quot;href&quot;: &quot;sc://x:12/&quot;,
+                &quot;port&quot;: &quot;12&quot;
+            }
</ins><span class="cx">         }
</span><span class="cx">     ],
</span><span class="cx">     &quot;pathname&quot;: [
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsurlurlconstructorexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/url/url-constructor-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/url/url-constructor-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/url/url-constructor-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -81,6 +81,12 @@
</span><span class="cx"> PASS Parsing: &lt;https:/example.com/&gt; against &lt;http://example.org/foo/bar&gt; 
</span><span class="cx"> PASS Parsing: &lt;madeupscheme:/example.com/&gt; against &lt;http://example.org/foo/bar&gt; 
</span><span class="cx"> PASS Parsing: &lt;file:/example.com/&gt; against &lt;http://example.org/foo/bar&gt; 
</span><ins>+FAIL Parsing: &lt;file://example:1/&gt; against &lt;about:blank&gt; assert_throws: function &quot;function () {
+          bURL(expected.input, expected.base)
+        }&quot; did not throw
+PASS Parsing: &lt;file://example:test/&gt; against &lt;about:blank&gt; 
+PASS Parsing: &lt;file://example%/&gt; against &lt;about:blank&gt; 
+PASS Parsing: &lt;file://[example]/&gt; against &lt;about:blank&gt; 
</ins><span class="cx"> PASS Parsing: &lt;ftps:/example.com/&gt; against &lt;http://example.org/foo/bar&gt; 
</span><span class="cx"> PASS Parsing: &lt;gopher:/example.com/&gt; against &lt;http://example.org/foo/bar&gt; 
</span><span class="cx"> PASS Parsing: &lt;ws:/example.com/&gt; against &lt;http://example.org/foo/bar&gt; 
</span><span class="lines">@@ -335,7 +341,7 @@
</span><span class="cx"> PASS Parsing: &lt;sc://!&quot;$&amp;'()*+,-.;&lt;=&gt;^_`{|}~/&gt; against &lt;about:blank&gt; 
</span><span class="cx"> PASS Parsing: &lt;sc://\0/&gt; against &lt;about:blank&gt; 
</span><span class="cx"> PASS Parsing: &lt;sc:// /&gt; against &lt;about:blank&gt; 
</span><del>-PASS Parsing: &lt;sc://%/&gt; against &lt;about:blank&gt; 
</del><ins>+FAIL Parsing: &lt;sc://%/&gt; against &lt;about:blank&gt; Type error
</ins><span class="cx"> PASS Parsing: &lt;sc://@/&gt; against &lt;about:blank&gt; 
</span><span class="cx"> PASS Parsing: &lt;sc://te@s:t@/&gt; against &lt;about:blank&gt; 
</span><span class="cx"> PASS Parsing: &lt;sc://:/&gt; against &lt;about:blank&gt; 
</span><span class="lines">@@ -369,7 +375,7 @@
</span><span class="cx">           bURL(expected.input, expected.base)
</span><span class="cx">         }&quot; did not throw
</span><span class="cx"> PASS Parsing: &lt;sc:&gt; against &lt;https://example.org/foo/bar&gt; 
</span><del>-FAIL Parsing: &lt;http://foo.bar/baz?qux#foobar&gt; against &lt;about:blank&gt; assert_equals: searchParams expected &quot;&quot; but got &quot;qux=&quot;
</del><ins>+PASS Parsing: &lt;http://foo.bar/baz?qux#foobar&gt; against &lt;about:blank&gt; 
</ins><span class="cx"> PASS Parsing: &lt;http://192.168.257&gt; against &lt;http://other.com/&gt; 
</span><span class="cx"> PASS Parsing: &lt;http://192.168.257.com&gt; against &lt;http://other.com/&gt; 
</span><span class="cx"> PASS Parsing: &lt;http://256&gt; against &lt;http://other.com/&gt; 
</span><span class="lines">@@ -402,6 +408,9 @@
</span><span class="cx"> FAIL Parsing: &lt;//d:/..&gt; against &lt;file:///C:/a/b&gt; assert_equals: href expected &quot;file:///d:/&quot; but got &quot;file:///&quot;
</span><span class="cx"> PASS Parsing: &lt;..&gt; against &lt;file:///ab:/&gt; 
</span><span class="cx"> PASS Parsing: &lt;..&gt; against &lt;file:///1:/&gt; 
</span><ins>+PASS Parsing: &lt;file:&gt; against &lt;about:blank&gt; 
+PASS Parsing: &lt;file:?q=v&gt; against &lt;about:blank&gt; 
+PASS Parsing: &lt;file:#frag&gt; against &lt;about:blank&gt; 
</ins><span class="cx"> PASS Parsing: &lt;http://[1:0::]&gt; against &lt;http://example.net/&gt; 
</span><span class="cx"> FAIL Parsing: &lt;http://?&gt; against &lt;about:blank&gt; assert_throws: function &quot;function () {
</span><span class="cx">           bURL(expected.input, expected.base)
</span><span class="lines">@@ -431,4 +440,10 @@
</span><span class="cx"> PASS Parsing: &lt;git+https://github.com/foo/bar&gt; against &lt;about:blank&gt; 
</span><span class="cx"> PASS Parsing: &lt;urn:ietf:rfc:2648&gt; against &lt;about:blank&gt; 
</span><span class="cx"> PASS Parsing: &lt;tag:joe@example.org,2001:foo/bar&gt; against &lt;about:blank&gt; 
</span><ins>+FAIL Parsing: &lt;non-special://%E2%80%A0/&gt; against &lt;about:blank&gt; Type error
+FAIL Parsing: &lt;non-special://H%4fSt/path&gt; against &lt;about:blank&gt; Type error
+PASS Parsing: &lt;non-special://[1:2:0:0:5:0:0:0]/&gt; against &lt;about:blank&gt; 
+PASS Parsing: &lt;non-special://[1:2:0:0:0:0:0:3]/&gt; against &lt;about:blank&gt; 
+PASS Parsing: &lt;non-special://[1:2::3]:80/&gt; against &lt;about:blank&gt; 
+PASS Parsing: &lt;non-special://[:80/&gt; against &lt;about:blank&gt; 
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsurlurlsettersexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/url/url-setters-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/url/url-setters-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/url/url-setters-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -87,6 +87,12 @@
</span><span class="cx"> PASS URL: Setting &lt;http://example.net&gt;.username = '%c3%89té' Bytes already percent-encoded are left as-is. 
</span><span class="cx"> PASS &lt;a&gt;: Setting &lt;http://example.net&gt;.username = '%c3%89té' Bytes already percent-encoded are left as-is. 
</span><span class="cx"> PASS &lt;area&gt;: Setting &lt;http://example.net&gt;.username = '%c3%89té' Bytes already percent-encoded are left as-is. 
</span><ins>+PASS URL: Setting &lt;sc:///&gt;.username = 'x' 
+FAIL &lt;a&gt;: Setting &lt;sc:///&gt;.username = 'x' assert_equals: expected &quot;sc:///&quot; but got &quot;sc://x@/&quot;
+FAIL &lt;area&gt;: Setting &lt;sc:///&gt;.username = 'x' assert_equals: expected &quot;sc:///&quot; but got &quot;sc://x@/&quot;
+PASS URL: Setting &lt;file://test/&gt;.username = 'test' 
+FAIL &lt;a&gt;: Setting &lt;file://test/&gt;.username = 'test' assert_equals: expected &quot;file://test/&quot; but got &quot;file://test@test/&quot;
+FAIL &lt;area&gt;: Setting &lt;file://test/&gt;.username = 'test' assert_equals: expected &quot;file://test/&quot; but got &quot;file://test@test/&quot;
</ins><span class="cx"> PASS URL: Setting &lt;file:///home/me/index.html&gt;.password = 'secret' No host means no password 
</span><span class="cx"> FAIL &lt;a&gt;: Setting &lt;file:///home/me/index.html&gt;.password = 'secret' No host means no password assert_equals: expected &quot;file:///home/me/index.html&quot; but got &quot;file://:secret@/home/me/index.html&quot;
</span><span class="cx"> FAIL &lt;area&gt;: Setting &lt;file:///home/me/index.html&gt;.password = 'secret' No host means no password assert_equals: expected &quot;file:///home/me/index.html&quot; but got &quot;file://:secret@/home/me/index.html&quot;
</span><span class="lines">@@ -117,6 +123,12 @@
</span><span class="cx"> PASS URL: Setting &lt;http://example.net&gt;.password = '%c3%89té' Bytes already percent-encoded are left as-is. 
</span><span class="cx"> PASS &lt;a&gt;: Setting &lt;http://example.net&gt;.password = '%c3%89té' Bytes already percent-encoded are left as-is. 
</span><span class="cx"> PASS &lt;area&gt;: Setting &lt;http://example.net&gt;.password = '%c3%89té' Bytes already percent-encoded are left as-is. 
</span><ins>+PASS URL: Setting &lt;sc:///&gt;.password = 'x' 
+FAIL &lt;a&gt;: Setting &lt;sc:///&gt;.password = 'x' assert_equals: expected &quot;sc:///&quot; but got &quot;sc://:x@/&quot;
+FAIL &lt;area&gt;: Setting &lt;sc:///&gt;.password = 'x' assert_equals: expected &quot;sc:///&quot; but got &quot;sc://:x@/&quot;
+PASS URL: Setting &lt;file://test/&gt;.password = 'test' 
+FAIL &lt;a&gt;: Setting &lt;file://test/&gt;.password = 'test' assert_equals: expected &quot;file://test/&quot; but got &quot;file://:test@test/&quot;
+FAIL &lt;area&gt;: Setting &lt;file://test/&gt;.password = 'test' assert_equals: expected &quot;file://test/&quot; but got &quot;file://:test@test/&quot;
</ins><span class="cx"> PASS URL: Setting &lt;sc://x/&gt;.host = '\0' Non-special scheme 
</span><span class="cx"> FAIL &lt;a&gt;: Setting &lt;sc://x/&gt;.host = '\0' Non-special scheme assert_equals: expected &quot;sc://x/&quot; but got &quot;sc://\0/&quot;
</span><span class="cx"> FAIL &lt;area&gt;: Setting &lt;sc://x/&gt;.host = '\0' Non-special scheme assert_equals: expected &quot;sc://x/&quot; but got &quot;sc://\0/&quot;
</span><span class="lines">@@ -243,6 +255,18 @@
</span><span class="cx"> PASS URL: Setting &lt;http://example.net/&gt;.host = '[::1.]' 
</span><span class="cx"> FAIL &lt;a&gt;: Setting &lt;http://example.net/&gt;.host = '[::1.]' assert_equals: expected &quot;http://example.net/&quot; but got &quot;http://[:0/&quot;
</span><span class="cx"> FAIL &lt;area&gt;: Setting &lt;http://example.net/&gt;.host = '[::1.]' assert_equals: expected &quot;http://example.net/&quot; but got &quot;http://[:0/&quot;
</span><ins>+FAIL URL: Setting &lt;file://y/&gt;.host = 'x:123' assert_equals: expected &quot;file://y/&quot; but got &quot;file://x:123/&quot;
+FAIL &lt;a&gt;: Setting &lt;file://y/&gt;.host = 'x:123' assert_equals: expected &quot;file://y/&quot; but got &quot;file://x:123/&quot;
+FAIL &lt;area&gt;: Setting &lt;file://y/&gt;.host = 'x:123' assert_equals: expected &quot;file://y/&quot; but got &quot;file://x:123/&quot;
+PASS URL: Setting &lt;file://y/&gt;.host = 'loc%41lhost' 
+PASS &lt;a&gt;: Setting &lt;file://y/&gt;.host = 'loc%41lhost' 
+PASS &lt;area&gt;: Setting &lt;file://y/&gt;.host = 'loc%41lhost' 
+PASS URL: Setting &lt;sc://test@test/&gt;.host = '' 
+PASS &lt;a&gt;: Setting &lt;sc://test@test/&gt;.host = '' 
+PASS &lt;area&gt;: Setting &lt;sc://test@test/&gt;.host = '' 
+PASS URL: Setting &lt;sc://test:12/&gt;.host = '' 
+PASS &lt;a&gt;: Setting &lt;sc://test:12/&gt;.host = '' 
+PASS &lt;area&gt;: Setting &lt;sc://test:12/&gt;.host = '' 
</ins><span class="cx"> PASS URL: Setting &lt;sc://x/&gt;.hostname = '\0' Non-special scheme 
</span><span class="cx"> FAIL &lt;a&gt;: Setting &lt;sc://x/&gt;.hostname = '\0' Non-special scheme assert_equals: expected &quot;sc://x/&quot; but got &quot;sc://\0/&quot;
</span><span class="cx"> FAIL &lt;area&gt;: Setting &lt;sc://x/&gt;.hostname = '\0' Non-special scheme assert_equals: expected &quot;sc://x/&quot; but got &quot;sc://\0/&quot;
</span><span class="lines">@@ -333,6 +357,18 @@
</span><span class="cx"> PASS URL: Setting &lt;http://example.net/&gt;.hostname = '[::1.]' 
</span><span class="cx"> PASS &lt;a&gt;: Setting &lt;http://example.net/&gt;.hostname = '[::1.]' 
</span><span class="cx"> PASS &lt;area&gt;: Setting &lt;http://example.net/&gt;.hostname = '[::1.]' 
</span><ins>+PASS URL: Setting &lt;file://y/&gt;.hostname = 'x:123' 
+PASS &lt;a&gt;: Setting &lt;file://y/&gt;.hostname = 'x:123' 
+PASS &lt;area&gt;: Setting &lt;file://y/&gt;.hostname = 'x:123' 
+PASS URL: Setting &lt;file://y/&gt;.hostname = 'loc%41lhost' 
+PASS &lt;a&gt;: Setting &lt;file://y/&gt;.hostname = 'loc%41lhost' 
+PASS &lt;area&gt;: Setting &lt;file://y/&gt;.hostname = 'loc%41lhost' 
+PASS URL: Setting &lt;sc://test@test/&gt;.hostname = '' 
+PASS &lt;a&gt;: Setting &lt;sc://test@test/&gt;.hostname = '' 
+PASS &lt;area&gt;: Setting &lt;sc://test@test/&gt;.hostname = '' 
+PASS URL: Setting &lt;sc://test:12/&gt;.hostname = '' 
+PASS &lt;a&gt;: Setting &lt;sc://test:12/&gt;.hostname = '' 
+PASS &lt;area&gt;: Setting &lt;sc://test:12/&gt;.hostname = '' 
</ins><span class="cx"> PASS URL: Setting &lt;http://example.net&gt;.port = '8080' 
</span><span class="cx"> PASS &lt;a&gt;: Setting &lt;http://example.net&gt;.port = '8080' 
</span><span class="cx"> PASS &lt;area&gt;: Setting &lt;http://example.net&gt;.port = '8080' 
</span><span class="lines">@@ -375,6 +411,21 @@
</span><span class="cx"> FAIL URL: Setting &lt;http://example.net:8080/path&gt;.port = '65536' Port numbers are 16 bit integers, overflowing is an error assert_equals: expected &quot;http://example.net:8080/path&quot; but got &quot;http://example.net:0/path&quot;
</span><span class="cx"> FAIL &lt;a&gt;: Setting &lt;http://example.net:8080/path&gt;.port = '65536' Port numbers are 16 bit integers, overflowing is an error assert_equals: expected &quot;http://example.net:8080/path&quot; but got &quot;http://example.net:0/path&quot;
</span><span class="cx"> FAIL &lt;area&gt;: Setting &lt;http://example.net:8080/path&gt;.port = '65536' Port numbers are 16 bit integers, overflowing is an error assert_equals: expected &quot;http://example.net:8080/path&quot; but got &quot;http://example.net:0/path&quot;
</span><ins>+PASS URL: Setting &lt;file://test/&gt;.port = '12' 
+PASS &lt;a&gt;: Setting &lt;file://test/&gt;.port = '12' 
+PASS &lt;area&gt;: Setting &lt;file://test/&gt;.port = '12' 
+PASS URL: Setting &lt;file://localhost/&gt;.port = '12' 
+PASS &lt;a&gt;: Setting &lt;file://localhost/&gt;.port = '12' 
+PASS &lt;area&gt;: Setting &lt;file://localhost/&gt;.port = '12' 
+PASS URL: Setting &lt;non-base:value&gt;.port = '12' 
+PASS &lt;a&gt;: Setting &lt;non-base:value&gt;.port = '12' 
+PASS &lt;area&gt;: Setting &lt;non-base:value&gt;.port = '12' 
+PASS URL: Setting &lt;sc:///&gt;.port = '12' 
+FAIL &lt;a&gt;: Setting &lt;sc:///&gt;.port = '12' assert_equals: expected &quot;sc:///&quot; but got &quot;sc://:12/&quot;
+FAIL &lt;area&gt;: Setting &lt;sc:///&gt;.port = '12' assert_equals: expected &quot;sc:///&quot; but got &quot;sc://:12/&quot;
+PASS URL: Setting &lt;sc://x/&gt;.port = '12' 
+PASS &lt;a&gt;: Setting &lt;sc://x/&gt;.port = '12' 
+PASS &lt;area&gt;: Setting &lt;sc://x/&gt;.port = '12' 
</ins><span class="cx"> PASS URL: Setting &lt;mailto:me@example.net&gt;.pathname = '/foo' Cannot-be-a-base don’t have a path 
</span><span class="cx"> PASS &lt;a&gt;: Setting &lt;mailto:me@example.net&gt;.pathname = '/foo' Cannot-be-a-base don’t have a path 
</span><span class="cx"> PASS &lt;area&gt;: Setting &lt;mailto:me@example.net&gt;.pathname = '/foo' Cannot-be-a-base don’t have a path 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsurlurltestdatajson"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/url/urltestdata.json (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/url/urltestdata.json        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/url/urltestdata.json        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -1020,6 +1020,26 @@
</span><span class="cx">     &quot;hash&quot;: &quot;&quot;
</span><span class="cx">   },
</span><span class="cx">   {
</span><ins>+    &quot;input&quot;: &quot;file://example:1/&quot;,
+    &quot;base&quot;: &quot;about:blank&quot;,
+    &quot;failure&quot;: true
+  },
+  {
+    &quot;input&quot;: &quot;file://example:test/&quot;,
+    &quot;base&quot;: &quot;about:blank&quot;,
+    &quot;failure&quot;: true
+  },
+  {
+    &quot;input&quot;: &quot;file://example%/&quot;,
+    &quot;base&quot;: &quot;about:blank&quot;,
+    &quot;failure&quot;: true
+  },
+  {
+    &quot;input&quot;: &quot;file://[example]/&quot;,
+    &quot;base&quot;: &quot;about:blank&quot;,
+    &quot;failure&quot;: true
+  },
+  {
</ins><span class="cx">     &quot;input&quot;: &quot;ftps:/example.com/&quot;,
</span><span class="cx">     &quot;base&quot;: &quot;http://example.org/foo/bar&quot;,
</span><span class="cx">     &quot;href&quot;: &quot;ftps:/example.com/&quot;,
</span><span class="lines">@@ -4311,7 +4331,16 @@
</span><span class="cx">   {
</span><span class="cx">     &quot;input&quot;: &quot;sc://%/&quot;,
</span><span class="cx">     &quot;base&quot;: &quot;about:blank&quot;,
</span><del>-    &quot;failure&quot;: true
</del><ins>+    &quot;href&quot;: &quot;sc://%/&quot;,
+    &quot;protocol&quot;: &quot;sc:&quot;,
+    &quot;username&quot;: &quot;&quot;,
+    &quot;password&quot;: &quot;&quot;,
+    &quot;host&quot;: &quot;%&quot;,
+    &quot;hostname&quot;: &quot;%&quot;,
+    &quot;port&quot;: &quot;&quot;,
+    &quot;pathname&quot;: &quot;/&quot;,
+    &quot;search&quot;: &quot;&quot;,
+    &quot;hash&quot;: &quot;&quot;
</ins><span class="cx">   },
</span><span class="cx">   {
</span><span class="cx">     &quot;input&quot;: &quot;sc://@/&quot;,
</span><span class="lines">@@ -4593,7 +4622,7 @@
</span><span class="cx">     &quot;port&quot;: &quot;&quot;,
</span><span class="cx">     &quot;pathname&quot;: &quot;/baz&quot;,
</span><span class="cx">     &quot;search&quot;: &quot;?qux&quot;,
</span><del>-    &quot;searchParams&quot;: &quot;&quot;,
</del><ins>+    &quot;searchParams&quot;: &quot;qux=&quot;,
</ins><span class="cx">     &quot;hash&quot;: &quot;#foo%08bar&quot;
</span><span class="cx">   },
</span><span class="cx">   &quot;# IPv4 parsing (via https://github.com/nodejs/node/pull/10317)&quot;,
</span><span class="lines">@@ -4910,6 +4939,49 @@
</span><span class="cx">     &quot;search&quot;: &quot;&quot;,
</span><span class="cx">     &quot;hash&quot;: &quot;&quot;
</span><span class="cx">   },
</span><ins>+  &quot;# file URLs without base URL by Rimas Misevičius&quot;,
+  {
+    &quot;input&quot;: &quot;file:&quot;,
+    &quot;base&quot;: &quot;about:blank&quot;,
+    &quot;href&quot;: &quot;file:///&quot;,
+    &quot;protocol&quot;: &quot;file:&quot;,
+    &quot;username&quot;: &quot;&quot;,
+    &quot;password&quot;: &quot;&quot;,
+    &quot;host&quot;: &quot;&quot;,
+    &quot;hostname&quot;: &quot;&quot;,
+    &quot;port&quot;: &quot;&quot;,
+    &quot;pathname&quot;: &quot;/&quot;,
+    &quot;search&quot;: &quot;&quot;,
+    &quot;hash&quot;: &quot;&quot;
+  },
+  {
+    &quot;input&quot;: &quot;file:?q=v&quot;,
+    &quot;base&quot;: &quot;about:blank&quot;,
+    &quot;href&quot;: &quot;file:///?q=v&quot;,
+    &quot;protocol&quot;: &quot;file:&quot;,
+    &quot;username&quot;: &quot;&quot;,
+    &quot;password&quot;: &quot;&quot;,
+    &quot;host&quot;: &quot;&quot;,
+    &quot;hostname&quot;: &quot;&quot;,
+    &quot;port&quot;: &quot;&quot;,
+    &quot;pathname&quot;: &quot;/&quot;,
+    &quot;search&quot;: &quot;?q=v&quot;,
+    &quot;hash&quot;: &quot;&quot;
+  },
+  {
+    &quot;input&quot;: &quot;file:#frag&quot;,
+    &quot;base&quot;: &quot;about:blank&quot;,
+    &quot;href&quot;: &quot;file:///#frag&quot;,
+    &quot;protocol&quot;: &quot;file:&quot;,
+    &quot;username&quot;: &quot;&quot;,
+    &quot;password&quot;: &quot;&quot;,
+    &quot;host&quot;: &quot;&quot;,
+    &quot;hostname&quot;: &quot;&quot;,
+    &quot;port&quot;: &quot;&quot;,
+    &quot;pathname&quot;: &quot;/&quot;,
+    &quot;search&quot;: &quot;&quot;,
+    &quot;hash&quot;: &quot;#frag&quot;
+  },
</ins><span class="cx">   &quot;# IPv6 trailing zeros test&quot;,
</span><span class="cx">   {
</span><span class="cx">     &quot;input&quot;: &quot;http://[1:0::]&quot;,
</span><span class="lines">@@ -5262,5 +5334,82 @@
</span><span class="cx">     &quot;pathname&quot;: &quot;joe@example.org,2001:foo/bar&quot;,
</span><span class="cx">     &quot;search&quot;: &quot;&quot;,
</span><span class="cx">     &quot;hash&quot;: &quot;&quot;
</span><ins>+  },
+  &quot;# percent encoded hosts in non-special-URLs&quot;,
+  {
+    &quot;input&quot;: &quot;non-special://%E2%80%A0/&quot;,
+    &quot;base&quot;: &quot;about:blank&quot;,
+    &quot;href&quot;: &quot;non-special://%E2%80%A0/&quot;,
+    &quot;protocol&quot;: &quot;non-special:&quot;,
+    &quot;username&quot;: &quot;&quot;,
+    &quot;password&quot;: &quot;&quot;,
+    &quot;host&quot;: &quot;%E2%80%A0&quot;,
+    &quot;hostname&quot;: &quot;%E2%80%A0&quot;,
+    &quot;port&quot;: &quot;&quot;,
+    &quot;pathname&quot;: &quot;/&quot;,
+    &quot;search&quot;: &quot;&quot;,
+    &quot;hash&quot;: &quot;&quot;
+  },
+  {
+    &quot;input&quot;: &quot;non-special://H%4fSt/path&quot;,
+    &quot;base&quot;: &quot;about:blank&quot;,
+    &quot;href&quot;: &quot;non-special://H%4fSt/path&quot;,
+    &quot;protocol&quot;: &quot;non-special:&quot;,
+    &quot;username&quot;: &quot;&quot;,
+    &quot;password&quot;: &quot;&quot;,
+    &quot;host&quot;: &quot;H%4fSt&quot;,
+    &quot;hostname&quot;: &quot;H%4fSt&quot;,
+    &quot;port&quot;: &quot;&quot;,
+    &quot;pathname&quot;: &quot;/path&quot;,
+    &quot;search&quot;: &quot;&quot;,
+    &quot;hash&quot;: &quot;&quot;
+  },
+  &quot;# IPv6 in non-special-URLs&quot;,
+  {
+    &quot;input&quot;: &quot;non-special://[1:2:0:0:5:0:0:0]/&quot;,
+    &quot;base&quot;: &quot;about:blank&quot;,
+    &quot;href&quot;: &quot;non-special://[1:2:0:0:5::]/&quot;,
+    &quot;protocol&quot;: &quot;non-special:&quot;,
+    &quot;username&quot;: &quot;&quot;,
+    &quot;password&quot;: &quot;&quot;,
+    &quot;host&quot;: &quot;[1:2:0:0:5::]&quot;,
+    &quot;hostname&quot;: &quot;[1:2:0:0:5::]&quot;,
+    &quot;port&quot;: &quot;&quot;,
+    &quot;pathname&quot;: &quot;/&quot;,
+    &quot;search&quot;: &quot;&quot;,
+    &quot;hash&quot;: &quot;&quot;
+  },
+  {
+    &quot;input&quot;: &quot;non-special://[1:2:0:0:0:0:0:3]/&quot;,
+    &quot;base&quot;: &quot;about:blank&quot;,
+    &quot;href&quot;: &quot;non-special://[1:2::3]/&quot;,
+    &quot;protocol&quot;: &quot;non-special:&quot;,
+    &quot;username&quot;: &quot;&quot;,
+    &quot;password&quot;: &quot;&quot;,
+    &quot;host&quot;: &quot;[1:2::3]&quot;,
+    &quot;hostname&quot;: &quot;[1:2::3]&quot;,
+    &quot;port&quot;: &quot;&quot;,
+    &quot;pathname&quot;: &quot;/&quot;,
+    &quot;search&quot;: &quot;&quot;,
+    &quot;hash&quot;: &quot;&quot;
+  },
+  {
+    &quot;input&quot;: &quot;non-special://[1:2::3]:80/&quot;,
+    &quot;base&quot;: &quot;about:blank&quot;,
+    &quot;href&quot;: &quot;non-special://[1:2::3]:80/&quot;,
+    &quot;protocol&quot;: &quot;non-special:&quot;,
+    &quot;username&quot;: &quot;&quot;,
+    &quot;password&quot;: &quot;&quot;,
+    &quot;host&quot;: &quot;[1:2::3]:80&quot;,
+    &quot;hostname&quot;: &quot;[1:2::3]&quot;,
+    &quot;port&quot;: &quot;80&quot;,
+    &quot;pathname&quot;: &quot;/&quot;,
+    &quot;search&quot;: &quot;&quot;,
+    &quot;hash&quot;: &quot;&quot;
+  },
+  {
+    &quot;input&quot;: &quot;non-special://[:80/&quot;,
+    &quot;base&quot;: &quot;about:blank&quot;,
+    &quot;failure&quot;: true
</ins><span class="cx">   }
</span><span class="cx"> ]
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsurlw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/url/w3c-import.log (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/url/w3c-import.log        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/url/w3c-import.log        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -30,7 +30,8 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/url/url-constructor.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/url/url-origin.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/url/url-setters.html
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/url/url-tojson.html 
</del><ins>+/LayoutTests/imported/w3c/web-platform-tests/url/url-tojson.html
+/LayoutTests/imported/w3c/web-platform-tests/url/urlencoded-parser.html
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/url/urlsearchparams-append.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/url/urlsearchparams-constructor.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/url/urlsearchparams-delete.html
</span><span class="lines">@@ -39,5 +40,6 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/url/urlsearchparams-getall.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/url/urlsearchparams-has.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/url/urlsearchparams-set.html
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/url/urlsearchparams-sort.html
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/url/urlsearchparams-stringifier.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/url/urltestdata.json
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingresourceswebperftestharnessjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/resources/webperftestharness.js (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/resources/webperftestharness.js        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/resources/webperftestharness.js        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -38,6 +38,21 @@
</span><span class="cx"> 
</span><span class="cx"> var namespace_check = false;
</span><span class="cx"> 
</span><ins>+function has_required_interfaces()
+{
+    if (window.performance.mark == undefined ||
+        window.performance.clearMarks == undefined ||
+        window.performance.measure == undefined ||
+        window.performance.clearMeasures == undefined ||
+        window.performance.getEntriesByName == undefined ||
+        window.performance.getEntriesByType == undefined ||
+        window.performance.getEntries == undefined) {
+        return false;
+    }
+
+    return true;
+}
+
</ins><span class="cx"> //
</span><span class="cx"> // All test() functions in the WebPerf test suite should use wp_test() instead.
</span><span class="cx"> //
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingtest_user_timing_clear_markshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/test_user_timing_clear_marks.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/test_user_timing_clear_marks.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/test_user_timing_clear_marks.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -25,13 +25,7 @@
</span><span class="cx">         function onload_test()
</span><span class="cx">         {
</span><span class="cx">             // test for existance of User Timing and Performance Timeline interface
</span><del>-            if (window.performance.mark == undefined ||
-                window.performance.clearMarks == undefined ||
-                window.performance.measure == undefined ||
-                window.performance.clearMeasures == undefined ||
-                window.performance.getEntriesByName == undefined ||
-                window.performance.getEntriesByType == undefined ||
-                window.performance.getEntries == undefined)
</del><ins>+            if (!has_required_interfaces())
</ins><span class="cx">             {
</span><span class="cx">                 test_true(false,
</span><span class="cx">                           &quot;The User Timing and Performance Timeline interfaces, which are required for this test, &quot; +
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingtest_user_timing_clear_measureshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/test_user_timing_clear_measures.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/test_user_timing_clear_measures.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/test_user_timing_clear_measures.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -25,13 +25,7 @@
</span><span class="cx">         function onload_test()
</span><span class="cx">         {
</span><span class="cx">             // test for existance of User Timing and Performance Timeline interface
</span><del>-            if (window.performance.mark == undefined ||
-                window.performance.clearMarks == undefined ||
-                window.performance.measure == undefined ||
-                window.performance.clearMeasures == undefined ||
-                window.performance.getEntriesByName == undefined ||
-                window.performance.getEntriesByType == undefined ||
-                window.performance.getEntries == undefined)
</del><ins>+            if (!has_required_interfaces())
</ins><span class="cx">             {
</span><span class="cx">                 test_true(false,
</span><span class="cx">                           &quot;The User Timing and Performance Timeline interfaces, which are required for this test, &quot; +
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingtest_user_timing_markhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/test_user_timing_mark.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/test_user_timing_mark.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/test_user_timing_mark.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -36,13 +36,7 @@
</span><span class="cx">         function onload_test()
</span><span class="cx">         {
</span><span class="cx">             // test for existance of User Timing and Performance Timeline interface
</span><del>-            if (window.performance.mark == undefined ||
-                window.performance.clearMarks == undefined ||
-                window.performance.measure == undefined ||
-                window.performance.clearMeasures == undefined ||
-                window.performance.getEntriesByName == undefined ||
-                window.performance.getEntriesByType == undefined ||
-                window.performance.getEntries == undefined)
</del><ins>+            if (!has_required_interfaces())
</ins><span class="cx">             {
</span><span class="cx">                 test_true(false,
</span><span class="cx">                           &quot;The User Timing and Performance Timeline interfaces, which are required for this test, &quot; +
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingtest_user_timing_mark_exceptionshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/test_user_timing_mark_exceptions.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/test_user_timing_mark_exceptions.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/test_user_timing_mark_exceptions.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -10,30 +10,6 @@
</span><span class="cx">         &lt;script src=&quot;resources/webperftestharness.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;script type=&quot;text/javascript&quot;&gt;
</span><del>-        // navigation timing attributes
-        var timingAttributes = [
-            'connectEnd',
-            'connectStart',
-            'domComplete',
-            'domContentLoadedEventEnd',
-            'domContentLoadedEventStart',
-            'domInteractive',
-            'domLoading',
-            'domainLookupEnd',
-            'domainLookupStart',
-            'fetchStart',
-            'loadEventEnd',
-            'loadEventStart',
-            'navigationStart',
-            'redirectEnd',
-            'redirectStart',
-            'requestStart',
-            'responseEnd',
-            'responseStart',
-            'unloadEventEnd',
-            'unloadEventStart'
-        ];
-
</del><span class="cx">         // test data
</span><span class="cx">         var markExceptionThrown = false;
</span><span class="cx"> 
</span><span class="lines">@@ -44,13 +20,7 @@
</span><span class="cx">         function onload_test()
</span><span class="cx">         {
</span><span class="cx">             // test for existance of User Timing and Performance Timeline interface
</span><del>-            if (window.performance.mark == undefined ||
-                window.performance.clearMarks == undefined ||
-                window.performance.measure == undefined ||
-                window.performance.clearMeasures == undefined ||
-                window.performance.getEntriesByName == undefined ||
-                window.performance.getEntriesByType == undefined ||
-                window.performance.getEntries == undefined)
</del><ins>+            if (!has_required_interfaces())
</ins><span class="cx">             {
</span><span class="cx">                 test_true(false,
</span><span class="cx">                           &quot;The User Timing and Performance Timeline interfaces, which are required for this test, &quot; +
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingtest_user_timing_measurehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/test_user_timing_measure.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/test_user_timing_measure.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/test_user_timing_measure.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -75,13 +75,7 @@
</span><span class="cx">         function onload_test()
</span><span class="cx">         {
</span><span class="cx">             // test for existance of User Timing and Performance Timeline interface
</span><del>-            if (window.performance.mark == undefined ||
-                window.performance.clearMarks == undefined ||
-                window.performance.measure == undefined ||
-                window.performance.clearMeasures == undefined ||
-                window.performance.getEntriesByName == undefined ||
-                window.performance.getEntriesByType == undefined ||
-                window.performance.getEntries == undefined)
</del><ins>+            if (!has_required_interfaces())
</ins><span class="cx">             {
</span><span class="cx">                 test_true(false,
</span><span class="cx">                           &quot;The User Timing and Performance Timeline interfaces, which are required for this test, &quot; +
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingtest_user_timing_measure_exceptionshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/test_user_timing_measure_exceptions.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/test_user_timing_measure_exceptions.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/test_user_timing_measure_exceptions.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -10,30 +10,6 @@
</span><span class="cx">         &lt;script src=&quot;resources/webperftestharness.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;script type=&quot;text/javascript&quot;&gt;
</span><del>-        // navigation timing attributes
-        var timingAttributes = [
-            'connectEnd',
-            'connectStart',
-            'domComplete',
-            'domContentLoadedEventEnd',
-            'domContentLoadedEventStart',
-            'domInteractive',
-            'domLoading',
-            'domainLookupEnd',
-            'domainLookupStart',
-            'fetchStart',
-            'loadEventEnd',
-            'loadEventStart',
-            'navigationStart',
-            'redirectEnd',
-            'redirectStart',
-            'requestStart',
-            'responseEnd',
-            'responseStart',
-            'unloadEventEnd',
-            'unloadEventStart'
-        ];
-
</del><span class="cx">         // test data
</span><span class="cx">         var zeroedNavTimingAtt = undefined;
</span><span class="cx"> 
</span><span class="lines">@@ -44,13 +20,7 @@
</span><span class="cx">         function onload_test()
</span><span class="cx">         {
</span><span class="cx">             // test for existance of User Timing and Performance Timeline interface
</span><del>-            if (window.performance.mark == undefined ||
-                window.performance.clearMarks == undefined ||
-                window.performance.measure == undefined ||
-                window.performance.clearMeasures == undefined ||
-                window.performance.getEntriesByName == undefined ||
-                window.performance.getEntriesByType == undefined ||
-                window.performance.getEntries == undefined)
</del><ins>+            if (!has_required_interfaces())
</ins><span class="cx">             {
</span><span class="cx">                 test_true(false,
</span><span class="cx">                           &quot;The User Timing and Performance Timeline interfaces, which are required for this test, &quot; +
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingtest_user_timing_measure_navigation_timingexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/test_user_timing_measure_navigation_timing-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/test_user_timing_measure_navigation_timing-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/test_user_timing_measure_navigation_timing-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -12,17 +12,17 @@
</span><span class="cx"> PASS window.performance.getEntriesByName(&quot;measure_nav_start_no_end&quot;)[0].name == &quot;measure_nav_start_no_end&quot; 
</span><span class="cx"> PASS window.performance.getEntriesByName(&quot;measure_nav_start_no_end&quot;)[0].startTime is correct 
</span><span class="cx"> PASS window.performance.getEntriesByName(&quot;measure_nav_start_no_end&quot;)[0].entryType == &quot;measure&quot; 
</span><del>-PASS window.performance.getEntriesByName(&quot;measure_nav_start_no_end&quot;)[0].duration is aproximately correct (up to 20ms difference allowed) 
</del><ins>+PASS window.performance.getEntriesByName(&quot;measure_nav_start_no_end&quot;)[0].duration is approximately correct (up to 20ms difference allowed) 
</ins><span class="cx"> PASS window.performance.getEntriesByName(&quot;measure_nav_start_mark_end&quot;)[0].name == &quot;measure_nav_start_mark_end&quot; 
</span><span class="cx"> PASS window.performance.getEntriesByName(&quot;measure_nav_start_mark_end&quot;)[0].startTime is correct 
</span><span class="cx"> PASS window.performance.getEntriesByName(&quot;measure_nav_start_mark_end&quot;)[0].entryType == &quot;measure&quot; 
</span><del>-PASS window.performance.getEntriesByName(&quot;measure_nav_start_mark_end&quot;)[0].duration is aproximately correct (up to 20ms difference allowed) 
</del><ins>+PASS window.performance.getEntriesByName(&quot;measure_nav_start_mark_end&quot;)[0].duration is approximately correct (up to 20ms difference allowed) 
</ins><span class="cx"> PASS window.performance.getEntriesByName(&quot;measure_mark_start_nav_end&quot;)[0].name == &quot;measure_mark_start_nav_end&quot; 
</span><span class="cx"> PASS window.performance.getEntriesByName(&quot;measure_mark_start_nav_end&quot;)[0].startTime is correct 
</span><span class="cx"> PASS window.performance.getEntriesByName(&quot;measure_mark_start_nav_end&quot;)[0].entryType == &quot;measure&quot; 
</span><del>-PASS window.performance.getEntriesByName(&quot;measure_mark_start_nav_end&quot;)[0].duration is aproximately correct (up to 20ms difference allowed) 
</del><ins>+PASS window.performance.getEntriesByName(&quot;measure_mark_start_nav_end&quot;)[0].duration is approximately correct (up to 20ms difference allowed) 
</ins><span class="cx"> PASS window.performance.getEntriesByName(&quot;measure_nav_start_nav_end&quot;)[0].name == &quot;measure_nav_start_nav_end&quot; 
</span><span class="cx"> PASS window.performance.getEntriesByName(&quot;measure_nav_start_nav_end&quot;)[0].startTime is correct 
</span><span class="cx"> PASS window.performance.getEntriesByName(&quot;measure_nav_start_nav_end&quot;)[0].entryType == &quot;measure&quot; 
</span><del>-PASS window.performance.getEntriesByName(&quot;measure_nav_start_nav_end&quot;)[0].duration is aproximately correct (up to 20ms difference allowed) 
</del><ins>+PASS window.performance.getEntriesByName(&quot;measure_nav_start_nav_end&quot;)[0].duration is approximately correct (up to 20ms difference allowed) 
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingtest_user_timing_measure_navigation_timinghtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/test_user_timing_measure_navigation_timing.html (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/test_user_timing_measure_navigation_timing.html        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/test_user_timing_measure_navigation_timing.html        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -11,30 +11,6 @@
</span><span class="cx">         &lt;script src=&quot;resources/webperftestharness.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;script type=&quot;text/javascript&quot;&gt;
</span><del>-        // navigation timing attributes
-        var timingAttributes = [
-            'connectEnd',
-            'connectStart',
-            'domComplete',
-            'domContentLoadedEventEnd',
-            'domContentLoadedEventStart',
-            'domInteractive',
-            'domLoading',
-            'domainLookupEnd',
-            'domainLookupStart',
-            'fetchStart',
-            'loadEventEnd',
-            'loadEventStart',
-            'navigationStart',
-            'redirectEnd',
-            'redirectStart',
-            'requestStart',
-            'responseEnd',
-            'responseStart',
-            'unloadEventEnd',
-            'unloadEventStart'
-        ];
-
</del><span class="cx">         // test data
</span><span class="cx">         var startMarkName = &quot;mark_start&quot;;
</span><span class="cx">         var startMarkValue;
</span><span class="lines">@@ -96,13 +72,7 @@
</span><span class="cx">         function onload_test()
</span><span class="cx">         {
</span><span class="cx">             // test for existance of User Timing and Performance Timeline interface
</span><del>-            if (window.performance.mark == undefined ||
-                window.performance.clearMarks == undefined ||
-                window.performance.measure == undefined ||
-                window.performance.clearMeasures == undefined ||
-                window.performance.getEntriesByName == undefined ||
-                window.performance.getEntriesByType == undefined ||
-                window.performance.getEntries == undefined)
</del><ins>+            if (!has_required_interfaces())
</ins><span class="cx">             {
</span><span class="cx">                 test_true(false,
</span><span class="cx">                           &quot;The User Timing and Performance Timeline interfaces, which are required for this test, &quot; +
</span><span class="lines">@@ -206,7 +176,7 @@
</span><span class="cx">             // test duration, allow for an acceptable threshold in the difference between the actual duration and the
</span><span class="cx">             // expected value for the duration
</span><span class="cx">             test_true(Math.abs(measureEntry.duration - expectedDuration) &lt;= testThreshold, measureEntryCommand +
</span><del>-                      &quot;.duration is aproximately correct (up to &quot; + testThreshold + &quot;ms difference allowed)&quot;);
</del><ins>+                      &quot;.duration is approximately correct (up to &quot; + testThreshold + &quot;ms difference allowed)&quot;);
</ins><span class="cx">         }
</span><span class="cx">     &lt;/script&gt;
</span><span class="cx">     &lt;/head&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/w3c-import.log (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/w3c-import.log        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/w3c-import.log        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -30,4 +30,5 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/serve
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/serve.py
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/server-side.md
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/test_keys_wdspec.html
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/update-built-tests.sh
</span></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatorwk2importedw3cwebplatformtestshtmlsemanticsformsconstraintsformvalidationvalidityvalidexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valid-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valid-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-valid-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -23,7 +23,7 @@
</span><span class="cx"> PASS [INPUT in DATE status] validity.valid must be false if validity.valueMissing is true 
</span><span class="cx"> PASS [INPUT in MONTH status] validity.valid must be false if validity.rangeOverflow is true 
</span><span class="cx"> PASS [INPUT in MONTH status] validity.valid must be false if validity.rangeUnderflow is true 
</span><del>-FAIL [INPUT in MONTH status] validity.valid must be false if validity.stepMismatch is true assert_false: The validity.valid should be false. expected false got true
</del><ins>+PASS [INPUT in MONTH status] validity.valid must be false if validity.stepMismatch is true 
</ins><span class="cx"> PASS [INPUT in MONTH status] validity.valid must be false if validity.valueMissing is true 
</span><span class="cx"> PASS [INPUT in WEEK status] validity.valid must be false if validity.rangeOverflow is true 
</span><span class="cx"> PASS [INPUT in WEEK status] validity.valid must be false if validity.rangeUnderflow is true 
</span></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatorwk2importedw3cwebplatformtestshtmlsemanticsformsconstraintsformvalidationwillValidateexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-willValidate-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-willValidate-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-willValidate-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -4,8 +4,8 @@
</span><span class="cx"> PASS [INPUT in RESET status] Must be barred from the constraint validation 
</span><span class="cx"> PASS [BUTTON in BUTTON status] Must be barred from the constraint validation 
</span><span class="cx"> PASS [BUTTON in RESET status] Must be barred from the constraint validation 
</span><del>-FAIL [fieldset]  Must not be barred from the constraint validation assert_true: The willValidate attribute should be true. expected true got false
-FAIL [output]  Must not be barred from the constraint validation assert_true: The willValidate attribute should be true. expected true got false
</del><ins>+PASS [fieldset]  The willValidate attribute must be false since FIELDSET is not a submittable element 
+PASS [output]  The willValidate attribute must be false since OUTPUT is not a submittable element 
</ins><span class="cx"> PASS [object]  Must be barred from the constraint validation 
</span><span class="cx"> PASS [INPUT in TEXT status] Must be barred from the constraint validation if it is disabled 
</span><span class="cx"> PASS [INPUT in TEXT status] The willValidate attribute must be true if an element is mutable 
</span></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatorwk2importedw3cwebplatformtestshtmlsemanticsformsformcontrolinfrastructureformexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/form-control-infrastructure/form-expected.txt (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/form-control-infrastructure/form-expected.txt        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/form-control-infrastructure/form-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -11,8 +11,6 @@
</span><span class="cx"> PASS label-form-form2.form 
</span><span class="cx"> PASS label-with-control.form 
</span><span class="cx"> PASS label-for.form 
</span><del>-FAIL label-with-progress.form assert_equals: Sanity check: label.control.form expected (object) null but got (undefined) undefined
-FAIL label-with-meter.form assert_equals: Sanity check: label.control.form expected (object) null but got (undefined) undefined
</del><span class="cx"> PASS label-for-control-form-in-form.form 
</span><span class="cx"> PASS label-for-control-form.form 
</span><span class="cx"> PASS label-in-table.form 
</span><span class="lines">@@ -41,10 +39,6 @@
</span><span class="cx"> 
</span><span class="cx"> label-for 
</span><span class="cx"> 
</span><del>-label-with-progress 
-
-label-with-meter 
-
</del><span class="cx">  label-for-control-form-in-form
</span><span class="cx"> 
</span><span class="cx">  label-for-control-form
</span></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatorwk2importedw3cwebplatformtestshtmlsemanticsformstheinputelementdateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/date-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/date-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/date-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,10 @@
</span><ins>+Inputs Date
+
+
+PASS date type support on input element 
+PASS The value attribute, if specified and not empty, must have a value that is a valid date string. 
+PASS The min attribute must be reflected verbatim by the min property. 
+PASS The max attribute must be reflected verbatim by the max property. 
+PASS User agents must not allow the user to set the value to a non-empty string that is not a valid date string. 
+PASS Number of days 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatorwk2importedw3cwebplatformtestshtmlsemanticsformstheinputelementdatetimeexpectedtxtfromrev212201trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformstheinputelementdatetimeexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/datetime-expected.txt (from rev 212201, trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/datetime-expected.txt) (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/datetime-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/datetime-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,39 @@
</span><ins>+Date and Time Inputs
+
+
+PASS date type support on input element 
+PASS [date] The value must be a valid global date and time string 
+PASS [date] The min attribute must have a value that is a valid global date and time string 
+PASS [date] The max attribute must have a value that is a valid global date and time string 
+PASS [date] The step attribute must be expressed in seconds 
+PASS [date] stepUp method support on input 'date' element 
+PASS [date] stepDown method support on input 'date' element 
+PASS [time] time type support on input element 
+PASS [time] The value must be a valid global date and time string 
+PASS [time] The min attribute must have a value that is a valid global date and time string 
+PASS [time] The max attribute must have a value that is a valid global date and time string 
+PASS [time] The step attribute must be expressed in seconds 
+PASS [time] stepUp method support on input 'time' element 
+PASS [time] stepDown method support on input 'time' element 
+PASS datetime-local type support on input element 
+PASS [datetime-local] The must be a valid local date and time string 
+PASS [datetime-local] The min attribute must have a value that is a valid local date and time string 
+PASS [datetime-local] The max attribute must have a value that is a valid local date and time string 
+PASS [datetime-local] The step attribute must be expressed in seconds 
+PASS [datetime-local] stepUp method support on input 'datetime-local' element 
+PASS [datetime-local] stepDown method support on input 'datetime-local' element 
+PASS month type support on input element 
+PASS [month] The value must be a value that is a valid global date and time string 
+PASS [month] The min attribute must have a value that is a valid global date and time string 
+PASS [month] The max attribute must have a value that is a valid global date and time string 
+PASS [month] The step attribute must be expressed in seconds 
+PASS [month] stepUp method support on input 'month' element 
+PASS [month] stepDown method support on input 'month' element 
+PASS week type support on input element 
+PASS [week] The value must be a value that is a valid global date and time string 
+PASS [week] The min attribute must have a value that is a valid global date and time string 
+PASS [week] The max attribute must have a value that is a valid global date and time string 
+PASS [week] The step attribute must be expressed in seconds 
+PASS [week] stepUp method support on input 'week' element 
+PASS [week] stepDown method support on input 'week' element 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatorwk2importedw3cwebplatformtestshtmlsemanticsformstheinputelementtime2expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/time-2-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/time-2-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/time-2-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,19 @@
</span><ins>+
+PASS empty value 
+PASS Valid value: value should be 00:00 
+PASS Valid value: value should be 00:00:00 
+PASS Valid value: value should be 00:00:00.0 
+PASS Valid value: value should be 00:00:00.00 
+PASS Valid value: value should be 00:00:00.000 
+FAIL Invalid value: fraction should have one, two or three ASCII digits. Value should be empty assert_equals: expected &quot;&quot; but got &quot;00:00:00.0000&quot;
+PASS Invalid value: hour should have two ASCII digits. Value should be empty 
+PASS Invalid value: minutes should have two ASCII digits. Value should be empty 
+PASS Invalid value: seconds should have two ASCII digits. Value should be empty 
+PASS Invalid value: hour &gt; 23. Value should be empty 
+PASS Invalid value: minute &gt; 59. Value should be empty 
+PASS Invalid value: second &gt; 59. Value should be empty 
+PASS Value &gt;= min attribute 
+PASS Value &lt; min attribute 
+PASS Value &lt;= max attribute 
+PASS Value &gt; max attribute 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatorwk2importedw3cwebplatformtestshtmlsemanticsformstheinputelementtimeexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/time-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/time-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/time-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,36 @@
</span><ins>+Input Time
+
+
+PASS time element of default time value 
+PASS step attribute on default value check 
+PASS max  attribute on default value check 
+PASS min  attribute on default value check 
+PASS type attribute support on input element 
+PASS max attribute support on input element 
+PASS min attribute support on input element 
+PASS step attribute support on input element 
+PASS stepUp function support on input Element 
+PASS stepDown function support on input Element 
+PASS stepUp step value empty on default step value  
+PASS stepDown step value empty default step value 
+PASS stepUp on step value minus 
+PASS stepDown on step value minus 
+PASS stepUp on step value zero  
+PASS stepDown on step value zero  
+PASS stepUp on step value 24 hour 
+PASS stepDown on step value 24 hour  
+PASS stepUp on step value hour   
+PASS stepDown on step value hour  
+PASS stepUp on step value second  
+PASS stepDown on step value second  
+PASS stepUp on step value with fractional seconds 
+PASS stepDown on step value with fractional seconds 
+PASS stepUp argument 2 times 
+PASS stepDown argument 2 times 
+FAIL stepUp stop because it exceeds the maximum value The object is in an invalid state.
+FAIL stepDown stop so lower than the minimum value The object is in an invalid state.
+FAIL stop at border on stepUp The object is in an invalid state.
+FAIL stop at border on stepDown The object is in an invalid state.
+FAIL  empty value of stepUp The object is in an invalid state.
+PASS set value on not time format value 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatorwk2importedw3cwebplatformtestshtmlsemanticsformstheinputelementweekexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/week-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/week-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/week-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,15 @@
</span><ins>+
+PASS empty value 
+PASS Valid value: Value should be 2014-W52 
+PASS 2014 has 52 weeks: Value should be empty 
+PASS 2015 has 53 weeks: Value should be 2015-W53 
+PASS Invalid value: year only 
+PASS Invalid value: no week number 
+PASS Invalid value: no '-' (U+002D) 
+PASS Invalid value: yearless week 
+PASS Invalid value: yearless week and no '-' (U+002D) 
+PASS Value &gt;= min attribute 
+PASS Value &lt; min attribute 
+PASS Value &lt;= max attribute 
+PASS Value &gt; max attribute 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatorwk2importedw3cwebplatformtestsurlinterfacesexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/url/interfaces-expected.txt (0 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/url/interfaces-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/url/interfaces-expected.txt        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -0,0 +1,60 @@
</span><ins>+URL IDL tests
+
+
+PASS URL interface: existence and properties of interface object 
+PASS URL interface object length 
+PASS URL interface object name 
+PASS URL interface: existence and properties of interface prototype object 
+PASS URL interface: existence and properties of interface prototype object's &quot;constructor&quot; property 
+PASS URL interface: attribute href 
+PASS URL interface: stringifier 
+PASS URL interface: attribute origin 
+PASS URL interface: attribute protocol 
+PASS URL interface: attribute username 
+PASS URL interface: attribute password 
+PASS URL interface: attribute host 
+PASS URL interface: attribute hostname 
+PASS URL interface: attribute port 
+PASS URL interface: attribute pathname 
+PASS URL interface: attribute search 
+PASS URL interface: attribute searchParams 
+PASS URL interface: attribute hash 
+PASS URL interface: operation toJSON() 
+PASS URL must be primary interface of new URL(&quot;http://foo&quot;) 
+PASS Stringification of new URL(&quot;http://foo&quot;) 
+PASS URL interface: new URL(&quot;http://foo&quot;) must inherit property &quot;href&quot; with the proper type (0) 
+PASS URL interface: new URL(&quot;http://foo&quot;) must inherit property &quot;origin&quot; with the proper type (1) 
+PASS URL interface: new URL(&quot;http://foo&quot;) must inherit property &quot;protocol&quot; with the proper type (2) 
+PASS URL interface: new URL(&quot;http://foo&quot;) must inherit property &quot;username&quot; with the proper type (3) 
+PASS URL interface: new URL(&quot;http://foo&quot;) must inherit property &quot;password&quot; with the proper type (4) 
+PASS URL interface: new URL(&quot;http://foo&quot;) must inherit property &quot;host&quot; with the proper type (5) 
+PASS URL interface: new URL(&quot;http://foo&quot;) must inherit property &quot;hostname&quot; with the proper type (6) 
+PASS URL interface: new URL(&quot;http://foo&quot;) must inherit property &quot;port&quot; with the proper type (7) 
+PASS URL interface: new URL(&quot;http://foo&quot;) must inherit property &quot;pathname&quot; with the proper type (8) 
+PASS URL interface: new URL(&quot;http://foo&quot;) must inherit property &quot;search&quot; with the proper type (9) 
+PASS URL interface: new URL(&quot;http://foo&quot;) must inherit property &quot;searchParams&quot; with the proper type (10) 
+PASS URL interface: new URL(&quot;http://foo&quot;) must inherit property &quot;hash&quot; with the proper type (11) 
+PASS URL interface: new URL(&quot;http://foo&quot;) must inherit property &quot;toJSON&quot; with the proper type (12) 
+PASS URLSearchParams interface: existence and properties of interface object 
+PASS URLSearchParams interface object length 
+PASS URLSearchParams interface object name 
+PASS URLSearchParams interface: existence and properties of interface prototype object 
+PASS URLSearchParams interface: existence and properties of interface prototype object's &quot;constructor&quot; property 
+PASS URLSearchParams interface: operation append(USVString,USVString) 
+PASS URLSearchParams interface: operation delete(USVString) 
+PASS URLSearchParams interface: operation get(USVString) 
+PASS URLSearchParams interface: operation getAll(USVString) 
+PASS URLSearchParams interface: operation has(USVString) 
+PASS URLSearchParams interface: operation set(USVString,USVString) 
+FAIL Testing Symbol.iterator property of iterable interface URLSearchParams assert_equals: @@iterator function does not have the right name expected &quot;entries&quot; but got &quot;[Symbol.Iterator]&quot;
+FAIL Testing pair iterable interface URLSearchParams assert_equals: entries method is not the same as @@iterator expected function &quot;function entries() {
+    [native code]
+}&quot; but got function &quot;function [Symbol.Iterator]() {
+    [native code]
+}&quot;
+PASS URLSearchParams interface: stringifier 
+PASS URLSearchParams interface: operation entries() 
+PASS URLSearchParams interface: operation keys() 
+PASS URLSearchParams interface: operation values() 
+PASS URLSearchParams interface: operation forEach(function,any) 
+
</ins></span></pre></div>
<a id="trunkLayoutTeststestsoptionsjson"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/tests-options.json (212201 => 212202)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/tests-options.json        2017-02-12 04:59:10 UTC (rev 212201)
+++ trunk/LayoutTests/tests-options.json        2017-02-12 05:17:45 UTC (rev 212202)
</span><span class="lines">@@ -422,6 +422,12 @@
</span><span class="cx">     &quot;imported/w3c/web-platform-tests/encrypted-media/drm-temporary-license-type.html&quot;: [
</span><span class="cx">         &quot;slow&quot;
</span><span class="cx">     ],
</span><ins>+    &quot;imported/w3c/web-platform-tests/fetch/api/headers/header-values-normalize.html&quot;: [
+        &quot;slow&quot;
+    ],
+    &quot;imported/w3c/web-platform-tests/fetch/api/headers/header-values.html&quot;: [
+        &quot;slow&quot;
+    ],
</ins><span class="cx">     &quot;imported/w3c/web-platform-tests/fetch/api/redirect/redirect-count-worker.html&quot;: [
</span><span class="cx">         &quot;slow&quot;
</span><span class="cx">     ],
</span></span></pre>
</div>
</div>

</body>
</html>